arcane_project_compose
Read or safely replace a project's Docker Compose file with a diff-first confirmation flow and secret redaction; review changes before applying and redeploy separately.
Instructions
Read or replace a project's compose file (docker-compose YAML).
Read: pass only
project. Returns the current compose file (values that look like secrets are hidden as [REDACTED]). The project's .env is never returned: it holds secrets and is edited in the Arcane UI only. Reference its values from compose as ${VAR}.env_unfilledlists the .env variables that still hold the CHANGE_ME placeholder (names only); the project must not be deployed until it is empty.Write: pass
projectandcompose(the COMPLETE new file, not a fragment). Without confirm=true nothing changes: the result has needs_confirmation=true and a unified diff. Show the user the diff, and only after they approve it, call again with the same compose and confirm=true.Writing does not redeploy. Afterwards, with the user's OK, run arcane_run ['projects', 'redeploy', ].
Content containing [REDACTED] is refused, so a hidden value is never written back over the real one.
Examples:
{"project": "immich"} (read)
{"project": "immich", "compose": "services: ...", "env_id": "0"} (returns a diff to approve)
{"project": "immich", "compose": "services: ...", "confirm": true} (after the user approved)
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"project": "<project>"
},
"name": "arcane_project_compose"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| env_id | No | ||
| compose | No | ||
| confirm | No | ||
| project | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||