Skip to content

Logs

Two kinds of logs are available for every project: the build log of a deployment, and the runtime logs of the running container. Both come from the same command.

Build logs

bash
apco logs                    # build log of the latest deployment
apco logs <deploymentId>     # build log of a specific deployment
[apco] deploy 8a41f3aa for my-app (type=ssr, channel=production)
[apco] extracting upload
[apco] no Dockerfile found — building apco/my-app:8a41f3aa from source with Railpack
[railpack] detected node app
[build] ...
[apco] release command started (channel production, timeout 300s)
[release] applying migration 004
[apco] release command completed successfully
[apco] health check http://...:3000/ (timeout 60s)
[apco] deployment is live

Find deployment ids with apco status. The build log is your first stop when a deploy ends up failed.

Optional release-command stdout/stderr uses the [release] prefix in this same log. APCO redacts known environment values and common secret forms and caps release output at 1 MiB. The deployment API/dashboard exposes only the release status, timestamps, exit code, and bounded error/skipped reason—never the command environment.

Runtime logs

Add --runtime to see what the running container is printing right now (stdout/stderr of your app):

bash
apco logs --runtime               # last 200 lines
apco logs --runtime --lines 500   # more history
2026-07-07T09:01:03Z Listening on :3000
2026-07-07T09:02:11Z GET / 200

Runtime logs are per project (the currently running container), so a deployment id is ignored with --runtime. Target another project with --project <slug|id>.

Static sites have no runtime logs

Only SSR apps run a container. For static sites, use the build log and analytics.

Following logs

-f / --follow keeps streaming until you press Ctrl-C:

bash
apco logs -f                 # stream the build as it happens
apco logs --runtime -f       # tail the running container

For builds, --follow streams the log until the build finishes. For runtime logs, the CLI polls every couple of seconds and prints only new lines (--lines controls the window size per poll).

--follow and --json don't mix

Streaming would break the single-JSON-object output contract, so apco logs --follow --json is rejected (CLI_INVALID_USAGE). Scripts and agents should poll apco logs --json or apco status --json instead.

Flag summary

FlagMeaning
[deploymentId]Build log of a specific deployment (default: latest)
--runtimeRunning container's logs instead of the build log
--lines <n>Runtime log lines to fetch per poll (default 200)
-f, --followKeep streaming new output until interrupted
`--project <slugid>`

APCO Cloud — ship apps with one command.