Skip to content

container

The container domain has 23 actions. On the meta surface they are all reached through arcane_container; on the individual surface each one is its own tool; on the dynamic surface run them with arcane_execute_action and the canonical ID.

ActionTitleKind
container.commitCommit containerwrite
container.countsContainer status countsread
container.createCreate containerwrite
container.deleteDelete containerdestructive
container.editEdit containerdestructive
container.edit_configGet container edit configread
container.execRun a command in a containerwrite
container.generate_composeGenerate compose fileread
container.getGet containerread
container.killKill containerdestructive
container.listList containersread
container.logsGet container logsread
container.logs_downloadDownload container logsread
container.pausePause containerwrite
container.processesGet container processesread
container.redeployRedeploy containerdestructive
container.restartRestart containerwrite
container.set_auto_updateSet container auto-updatewrite
container.startStart containerwrite
container.statsGet container resource usageread
container.stats_allGet resource usage of all containersread
container.stopStop containerwrite
container.unpauseUnpause containerwrite

Commit container

Create an image from a container

  • Kind: write
  • Required parameters: containerId
  • Meta tool: arcane_container with "action": "commit"
  • Individual tool: arcane_container_commit
  • Arcane route: POST /api/environments/{id}/containers/{containerId}/commit
  • Operation ID: commit-container
  • Usage: Saves the container’s current filesystem as a new image. repository and tag name it (without repository the image is untagged), changes applies Dockerfile instructions such as “ENV KEY=value”, comment and author are metadata. The container is paused during the commit unless noPause=true. Needs the images:commit permission. Returns the new image id for image.get.
  • Related actions: container.list, image.get, image.tag, image.list

Container status counts

  • Kind: read
  • Required parameters: none
  • Meta tool: arcane_container with "action": "counts"
  • Individual tool: arcane_container_counts
  • Arcane route: GET /api/environments/{id}/containers/counts
  • Operation ID: container-status-counts
  • Usage: Just runningContainers, stoppedContainers (every non-running state, paused and created included) and totalContainers, without listing. Arcane’s internal and hidden containers count only with includeInternal/includeHidden. container.list returns the same counts alongside the rows.
  • Related actions: container.list, container.stats_all

Create container

  • Kind: write
  • Required parameters: image, name
  • Meta tool: arcane_container with "action": "create"
  • Individual tool: arcane_container_create
  • Arcane route: POST /api/environments/{id}/containers
  • Operation ID: create-container
  • Usage: Creates a standalone container from image (pulled first if missing locally, with credentials for a private registry) and starts it right away. name and image are required. Common inputs: cmd, env, labels, hostname, ports (container port to host port, TCP only: {“80”: “8080”} publishes container port 80 on host port 8080), volumes (“src:/dst” binds), networks (names from network.list), restartPolicy, memory, cpus, or the Docker-style hostConfig and networkingConfig. If the start fails the new container is removed again. Returns id, name, image and status. For multi-container apps prefer a Compose project (project.create).
  • Related actions: container.get, container.logs, image.pull, network.list, project.create

Delete container

  • Kind: destructive — requires confirm: true
  • Required parameters: containerId
  • Meta tool: arcane_container with "action": "delete"
  • Individual tool: arcane_container_delete
  • Arcane route: DELETE /api/environments/{id}/containers/{containerId}
  • Operation ID: delete-container
  • Usage: Removes the container and its writable layer, irreversibly. containerId (ID or name) from container.list. A running container fails unless force=true. volumes=true also removes its anonymous volumes and tries to remove the named volumes it mounts (a volume still used elsewhere is kept), and bind-mounted host paths are never touched. For containers of a Compose project prefer project.down.
  • Related actions: container.list, container.stop, container.commit, volume.list, project.down

Edit container

Apply configuration changes and recreate the container

  • Kind: destructive — requires confirm: true
  • Required parameters: containerId
  • Meta tool: arcane_container with "action": "edit"
  • Individual tool: arcane_container_edit
  • Arcane route: POST /api/environments/{id}/containers/{containerId}/edit
  • Operation ID: edit-container
  • Usage: Recreates the container (new ID, writable layer lost) with changed settings. containerId from container.list, current values from container.edit_config. Every field sent replaces the old value whole (labels is the full map, environment the full list, hostConfig.binds the full list, networkingConfig.endpointsConfig the full set of networks, and clearHealthcheck=true removes the healthcheck) and omitted fields are kept. A new image is pulled only if missing locally. Refused for Compose-managed containers (edit the project instead) and for Arcane’s own container. Returns the new container’s details with its id.
  • Related actions: container.edit_config, container.get, container.redeploy, project.update

Get container edit config

Editable configuration snapshot backing the container edit form

  • Kind: read
  • Required parameters: containerId
  • Meta tool: arcane_container with "action": "edit_config"
  • Individual tool: arcane_container_edit_config
  • Arcane route: GET /api/environments/{id}/containers/{containerId}/edit-config
  • Operation ID: get-container-edit-config
  • Usage: Read before container.edit: returns the editable settings (name, image, command, entrypoint, environment, labels, user, workingDir, healthcheck, hostConfig, networks) in the shape container.edit accepts, except that networks goes back as networkingConfig.endpointsConfig. isCompose or editDisabled true means container.edit will refuse this container. containerId from container.list.
  • Related actions: container.edit, container.get

Run a command in a container

Run one shell command inside a running container through Arcane’s container terminal and return its output and exit code

  • Kind: write
  • Required parameters: containerId, command
  • Meta tool: arcane_container with "action": "exec"
  • Individual tool: arcane_container_exec
  • Arcane route: GET /api/environments/{id}/ws/containers/{containerId}/terminal (WebSocket)
  • Operation ID: ws-container-terminal
  • Usage: containerId (ID or name) from container.list. The container must be running and contain the shell (default /bin/sh, change with shell), so distroless images fail. Non-interactive: returns output, exitCode and completed. At the timeout (seconds, default 30, max 120) the output may be partial and exitCode missing. Requires the containers:exec permission.
  • Related actions: container.list, container.processes, container.logs

Generate compose file

Generate a compose file from existing containers

  • Kind: read
  • Required parameters: containerIds
  • Meta tool: arcane_container with "action": "generate_compose"
  • Individual tool: arcane_container_generate_compose
  • Arcane route: POST /api/environments/{id}/containers/generate-compose
  • Operation ID: generate-compose
  • Usage: Writes a docker-compose.yml describing existing containers. containerIds (at least one, from container.list) is required. Returns the YAML in composeContent and changes nothing: pass it to project.create to manage those services as a Compose project.
  • Related actions: container.list, project.create

Get container

  • Kind: read
  • Required parameters: containerId
  • Meta tool: arcane_container with "action": "get"
  • Individual tool: arcane_container_get
  • Arcane route: GET /api/environments/{id}/containers/{containerId}
  • Operation ID: get-container
  • Usage: containerId (ID or name) from container.list. Returns inspect details: state (status, running, startedAt, health), config (cmd, env, healthcheck), hostConfig, mounts, networkSettings, ports, labels, composeInfo (projectName, serviceName) for Compose containers, updateInfo, autoUpdateEnabled and redeployDisabled (true for Arcane’s own container). Use it to verify the result of start, stop, edit or redeploy.
  • Related actions: container.list, container.logs, container.stats, container.processes, container.edit_config

Kill container

Send a signal to the container’s main process (default SIGKILL)

  • Kind: destructive — requires confirm: true
  • Required parameters: containerId
  • Meta tool: arcane_container with "action": "kill"
  • Individual tool: arcane_container_kill
  • Arcane route: POST /api/environments/{id}/containers/{containerId}/kill
  • Operation ID: kill-container
  • Usage: Sends signal (default SIGKILL, or e.g. SIGTERM or SIGHUP to make a process reload) to the container’s main process. With SIGKILL the container exits at once without a graceful shutdown. The container is not removed: container.start brings it back, container.delete removes it. Prefer container.stop for a normal shutdown.
  • Related actions: container.stop, container.start, container.get

List containers

Paginated list of containers

  • Kind: read
  • Required parameters: none
  • Meta tool: arcane_container with "action": "list"
  • Individual tool: arcane_container_list
  • Arcane route: GET /api/environments/{id}/containers
  • Operation ID: list-containers
  • Usage: The starting point for every containerId: returns a page of containers (id, names, image, state, status, ports, labels, updateInfo, autoUpdateEnabled), stopped ones included, plus running/stopped/total counts. search matches name, image, state or status. Filter with label (key or key=value), standalone=true (not Compose or Swarm), updates (has_update, up_to_date, error, unknown). Sort by name, image, state, status, ports, created, cpuUsage or memoryUsage. groupBy=project groups by Compose project. Arcane’s internal and hidden containers are left out unless includeInternal/includeHidden. Paginate with start and limit (default 20).
  • Related actions: container.get, container.counts, container.stats_all, port.list

Get container logs

Return a container’s recent log lines (stdout and stderr), optionally listening for new lines for a few seconds

  • Kind: read
  • Required parameters: containerId
  • Meta tool: arcane_container with "action": "logs"
  • Individual tool: arcane_container_logs
  • Arcane route: GET /api/environments/{id}/ws/containers/{containerId}/logs (WebSocket)
  • Operation ID: ws-container-logs
  • Usage: containerId (ID or name) from container.list. Returns the last tail lines (default 100, or ‘all’) in lines. Narrow with since, add timestamps, or set follow to keep listening for up to seconds. Needs the containers:logs permission. Use container.logs_download for the complete timestamped log in one piece.
  • Related actions: container.list, container.logs_download, container.get, container.exec

Download container logs

Download every log line Docker retains for the container as a text file

  • Kind: read
  • Required parameters: containerId
  • Meta tool: arcane_container with "action": "logs_download"
  • Individual tool: arcane_container_logs_download
  • Arcane route: GET /api/environments/{id}/containers/{containerId}/logs/download
  • Operation ID: download-container-logs
  • Since: Arcane v2.12.0
  • Usage: Returns the container’s complete log (every retained line, stdout and stderr, timestamped) as text in content. Output beyond ARCANE_MCP_MAX_DOWNLOAD_BYTES (default 4 MiB) is cut off with truncated=true, and an empty log returns no content. containerId from container.list, needs containers:logs. For the recent tail or to follow new lines use container.logs.
  • Related actions: container.logs, container.list

Pause container

  • Kind: write
  • Required parameters: containerId
  • Meta tool: arcane_container with "action": "pause"
  • Individual tool: arcane_container_pause
  • Arcane route: POST /api/environments/{id}/containers/{containerId}/pause
  • Operation ID: pause-container
  • Usage: Freezes every process of a running container (state becomes paused) without stopping it. Memory and network endpoints are kept. containerId from container.list. Resume with container.unpause.
  • Related actions: container.unpause, container.stop, container.get

Get container processes

Snapshot of the processes running inside the container, as reported by Docker

  • Kind: read
  • Required parameters: containerId
  • Meta tool: arcane_container with "action": "processes"
  • Individual tool: arcane_container_processes
  • Arcane route: GET /api/environments/{id}/containers/{containerId}/processes
  • Operation ID: get-container-processes
  • Since: Arcane v2.14.0
  • Usage: Docker top of a running container (a stopped one fails): titles names the columns (typically PID, USER, %CPU, %MEM, ELAPSED, CMD) and processes holds one row per process. containerId from container.list.
  • Related actions: container.stats, container.exec, container.get

Redeploy container

Pull latest image and recreate container

  • Kind: destructive — requires confirm: true
  • Required parameters: containerId
  • Meta tool: arcane_container with "action": "redeploy"
  • Individual tool: arcane_container_redeploy
  • Arcane route: POST /api/environments/{id}/containers/{containerId}/redeploy
  • Operation ID: redeploy-container
  • Usage: Pulls the container’s image tag again and recreates the container under the same name with its current configuration (new ID, writable layer lost). A container of a Compose project registered in Arcane is redeployed through that project’s service instead. containerId from container.list. Refused for Arcane’s own container (redeployDisabled in container.get). Returns the new container’s details, including its id and activityId.
  • Related actions: container.get, container.edit, updater.container_update, project.redeploy

Restart container

  • Kind: write
  • Required parameters: containerId
  • Meta tool: arcane_container with "action": "restart"
  • Individual tool: arcane_container_restart
  • Arcane route: POST /api/environments/{id}/containers/{containerId}/restart
  • Operation ID: restart-container
  • Usage: Stops and starts the container in place (same ID and configuration) and also starts a stopped one. containerId from container.list. Configuration or image changes need container.edit or container.redeploy instead. On a Podman host, a container run by a quadlet is restarted through its systemd unit: it comes back as a new container (new ID) and its anonymous volumes are lost, but named volumes stay.
  • Related actions: container.stop, container.start, container.redeploy, container.logs

Set container auto-update

Enable or disable auto-update for a specific container

  • Kind: write
  • Required parameters: containerId, enabled
  • Meta tool: arcane_container with "action": "set_auto_update"
  • Individual tool: arcane_container_set_auto_update
  • Arcane route: PUT /api/environments/{id}/containers/{containerId}/auto-update
  • Operation ID: set-container-auto-update
  • Usage: enabled=false adds the container’s name to the autoUpdateExcludedContainers setting so the scheduled auto-update (and updater.run with automatic=true) skips it, and enabled=true removes it. Manual updater.run calls (since Arcane v2.17.1) and updater.container_update update it anyway. Keyed by name, so it survives recreation under the same name. A container whose labels disable updates stays excluded from automatic runs. containerId from container.list. Verify with autoUpdateEnabled in container.get.
  • Related actions: container.get, settings.get, updater.run, updater.container_update

Start container

  • Kind: write
  • Required parameters: containerId
  • Meta tool: arcane_container with "action": "start"
  • Individual tool: arcane_container_start
  • Arcane route: POST /api/environments/{id}/containers/{containerId}/start
  • Operation ID: start-container
  • Usage: Starts a created or exited container. containerId (ID or name) from container.list. A paused container needs container.unpause instead. Runs synchronously and is recorded as an activity (activityId in the result). Check state with container.get.
  • Related actions: container.list, container.get, container.unpause, container.stop, system.containers_start_stopped

Get container resource usage

Sample a container’s live CPU, memory, network and block I/O statistics

  • Kind: read
  • Required parameters: containerId
  • Meta tool: arcane_container with "action": "stats"
  • Individual tool: arcane_container_stats
  • Arcane route: GET /api/environments/{id}/ws/containers/{containerId}/stats (WebSocket)
  • Operation ID: ws-container-stats
  • Usage: containerId (ID or name) from container.list, meant for a running container. Each sample is Docker’s full stats payload (cpu_stats, memory_stats, networks, blkio_stats) plus Arcane’s computed history sample. Raise samples (and seconds) for a trend. Use container.stats_all for CPU and memory of many containers at once.
  • Related actions: container.list, container.stats_all, container.processes

Get resource usage of all containers

Sample live CPU and memory statistics of every running container in the environment, or of the containers named in containerIds

  • Kind: read
  • Required parameters: none
  • Meta tool: arcane_container with "action": "stats_all"
  • Individual tool: arcane_container_stats_all
  • Arcane route: GET /api/environments/{id}/ws/containers/stats (WebSocket)
  • Operation ID: ws-containers-stats
  • Since: Arcane v2.16.1
  • Usage: Each batch’s samples object maps a running container’s full ID (as in container.list) to cpuPercent, memoryUsageBytes and memoryLimitBytes. Stopped or unknown containers are omitted, and containerIds must be full IDs, not names. Batches arrive about two seconds apart. Use container.stats for the full Docker stats of one container.
  • Related actions: container.list, container.stats, container.counts

Stop container

  • Kind: write
  • Required parameters: containerId
  • Meta tool: arcane_container with "action": "stop"
  • Individual tool: arcane_container_stop
  • Arcane route: POST /api/environments/{id}/containers/{containerId}/stop
  • Operation ID: stop-container
  • Usage: Graceful stop: SIGTERM, then SIGKILL after a fixed 30-second grace period (no timeout parameter). containerId from container.list. The call waits for the stop and is tracked as a container_stop activity, which activity.cancel can abort. Use container.kill when the process ignores SIGTERM, container.pause to freeze it without stopping. On a Podman host, a container run by a quadlet is stopped through its systemd unit instead, which removes the container and its anonymous volumes (named volumes stay). podman_quadlet.lifecycle start brings it back.
  • Related actions: container.start, container.kill, container.pause, activity.list, activity.cancel

Unpause container

  • Kind: write
  • Required parameters: containerId
  • Meta tool: arcane_container with "action": "unpause"
  • Individual tool: arcane_container_unpause
  • Arcane route: POST /api/environments/{id}/containers/{containerId}/unpause
  • Operation ID: unpause-container
  • Usage: Resumes a container frozen by container.pause (state returns to running). containerId from container.list. A stopped container needs container.start instead.
  • Related actions: container.pause, container.start, container.get