arcane_project_create
Create a new compose project from a compose YAML with a generated .env of placeholders, keeping secrets out of the config. Preview the result, then confirm to write it.
Instructions
Create a NEW compose project from a compose file, with a generated .env of placeholders.
project: the new project's name.compose: the COMPLETE docker-compose YAML.Reference every setting from compose as ${VAR}, ${VAR:-default} or ${VAR:?message}; never inline a secret. The server builds the project's .env from those references.
env_values({VAR: "value"}) fills NON-SECRET settings you know: TZ, PUID/PGID, domains, host paths, ports, image tags. Never put passwords, tokens, API keys or other credentials there: keys whose name looks like a credential (PASSWORD, TOKEN, SECRET, API_KEY, ..._KEY, AUTH, SALT, ...) or values that look like one are refused, and such variables are always written as CHANGE_ME for the user to fill in. Other variables without a value get the compose default, else CHANGE_ME.env_hints({VAR: "one-line description"}) adds a comment above a variable telling the user what to enter (use it for every CHANGE_ME). Keys in env_values or env_hints that the compose doesn't reference (e.g. ones read through env_file) are added too.Without confirm=true nothing is created: the result has needs_confirmation=true, the services and the .env that would be written. Show the user, and only after they approve call again with confirm=true.
The project is NOT deployed. The user replaces the CHANGE_ME values in the Arcane UI (Projects -> -> .env). Then arcane_project_compose {"project": ...} must show env_unfilled: [] before you run, with their OK, arcane_run ['projects', 'up', ].
Existing projects are refused: use arcane_project_compose to change them.
Examples:
{"project": "paperless", "env_id": "homelab", "compose": "services:\n app:\n image: ...\n environment:\n SECRET: ${PAPERLESS_SECRET}\n", "env_hints": {"PAPERLESS_SECRET": "Long random string (openssl rand -hex 32)"}} (returns a preview to approve)
the same arguments plus "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>",
"compose": "<compose>"
},
"name": "arcane_project_create"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| env_id | No | ||
| compose | Yes | ||
| confirm | No | ||
| project | Yes | ||
| env_hints | No | ||
| env_values | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||