Stacks
Stack management endpoints (CRUD, deploy, stop, resume) — stacks live inside projects
List project stacks
Retrieve all stacks for a project
path Parameters
projectIdProject unique identifier
List project stacks › Responses
List of stacks
idnameorganization_idproject_iddocker_composefqdnstatussynccreated_atupdated_atcreated_byCreate a stack
Create a new stack inside a project
path Parameters
projectIdProject unique identifier
Create a stack › Request Body
nameSlugified server-side: lowercased, accents folded to ASCII, every
other character collapsed to -, truncated to 64. The stored name
may therefore differ from the one submitted. A name that reduces to
an empty slug is rejected with a 400.
Create a stack › Responses
Stack successfully created
idnameorganization_idproject_idstack_idInfrastructure stack ID
docker_composefqdnstatussynccreated_atupdated_atcreated_bydeleted_atGet a stack
Retrieve a specific stack by ID
path Parameters
projectIdProject unique identifier
stackIdStack unique identifier
Get a stack › Responses
Stack data
idnameorganization_idproject_iddocker_composefqdnstatussynccreated_atupdated_atcreated_byUpdate a stack
Update a stack's name or docker compose configuration
path Parameters
projectIdProject unique identifier
stackIdStack unique identifier
Update a stack › Request Body
nameSlugified server-side, same rule as CreateStackRequest.
docker_composeUpdate a stack › Responses
Stack successfully updated
idnameorganization_idproject_idstack_idInfrastructure stack ID
docker_composefqdnstatussynccreated_atupdated_atcreated_bydeleted_atDeploy a stack
Kicks off an asynchronous deploy. Synchronous pre-flight validation
(billing, registry image access, compose presence, deploy lock) runs
first; on success the endpoint returns 202 Accepted immediately and
the deploy proceeds in the background. The final result is delivered over
the WebSocket channel (GET /ws) and reflected in the stack status
(poll GET .../stacks/{stackId} until it leaves deploying) and the
activity feed (GET .../activities).
path Parameters
projectIdProject unique identifier
stackIdStack unique identifier
Deploy a stack › Responses
Deploy accepted and started in the background
activity_idID of the stack activity tracking this deploy
statusStop a stack
Resume a stack
List stack activities
Returns the activity log for a stack — append-only history of
operations (deploy, seed, service_action) with their status
(in_progress, success, failed). Field names are camelCase.
path Parameters
projectIdProject unique identifier
stackIdStack unique identifier
query Parameters
limitMax number of rows to return. Capped at 200.
List stack activities › Responses
List of activities (empty array if none)
idstackIdorganizationIdtypestatuscreatedAtupdatedAtcreatedBymessageOmitted when empty. For service_action, "
errorOmitted when empty.
Get live stack state
Proxies the backbone's per-container view of the stack (state, health,
uptime, ports per compose service) and reconciles stacks.status in
DB as a best-effort side effect (never overwrites deploying).
A crash-looping service (see /state-events) forces the stack status
to error even when the live container roll-up would be running.
Designed to be polled: a never-deployed stack returns 200 with an
empty containers list.
path Parameters
projectIdProject unique identifier
stackIdStack unique identifier
Get live stack state › Responses
Live stack state
statusReconciled stack status (deploying is preserved mid-deploy)
Per-compose-service worst-of roll-up of the containers, computed server-side. Keyed by service name.
Get live stack resource usage
Current per-container cpu/mem/network usage for the stack, queried from VictoriaMetrics, plus a stack-level aggregate (values summed across containers). Designed to be polled; a never-deployed stack returns 200 with an empty containers list and a zeroed aggregate.
path Parameters
projectIdProject unique identifier
stackIdStack unique identifier
Get live stack resource usage › Responses
Live stack resource usage
Current cpu/mem/network reading for a scope, aggregated across its containers, plus host disk usage.
List stack state-transition events
Returns the per-service state transition journal recorded by the
stack-state-poll cron (one event each time a service's aggregated
container state or health changes; fromState is omitted on the
baseline event), plus crashLooping: the services currently
considered crash-looping. A service is flagged when it accumulated
3+ degrading transitions (a crash exit, or to restarting/dead, or
unhealthy) within the last 10 minutes, or when its latest known state
is restarting. A user-stopped service and a clean exit (code 0 or
143) are not counted. Crash-loop flags are computed over the recent
journal independently of limit.
path Parameters
projectIdProject unique identifier
stackIdStack unique identifier
query Parameters
limitMax number of events to return. Capped at 200.
List stack state-transition events › Responses
State events, newest first
crashLoopingServices currently considered crash-looping, sorted.
Control a single service in a stack
Runs docker-compose <action> <service> on the stack's VM, where
action is one of restart, start, stop. Only the named service
is affected — the rest of the stack is untouched. The stack must have
been deployed first. The action is journaled in the stack activity
feed (type service_action), on success and on failure.
path Parameters
projectIdProject unique identifier
stackIdStack unique identifier
serviceCompose service name to act on
Control a single service in a stack › Request Body
actionControl a single service in a stack › Responses
Action applied successfully
