Skip to main content

Logs

Agents scale to zero when idle, and that changes how logs work. Live logs exist only while an instance — one running copy of your agent — is up. History is saved separately, so it outlives the instance. This page covers both, plus how to tail logs as they arrive and how long history is kept.

Live logs vs history

Live logsHistory
SourceThe newest running instanceThe platform's persisted log store
Survives scale-to-zero?No — no instance, no live logsYes
Survives new revisions?No — a rollout replaces the instanceYes
RetentionLife of the instance14 days by default
Follow/tail modeYes, from the CLI and the APINo

These are management routes: sign in, owner or project admin only.

Live logs

GET /v1/agents/{name}/logs streams the log as text/plain — plain text, not JSON — from the agent's newest running instance.

platformctl logs research-buddy

That prints what the instance has buffered and returns. To hold the connection open and print new lines as they are written:

platformctl logs research-buddy -f

A followed stream runs without a client timeout, so it tails until you stop it with Ctrl-C.

The scale-to-zero message

If the agent is idle it has no instances, and that is normal — not an error. The endpoint answers 200 with exactly this message:

agent research-buddy has no running instances: it is scaled to zero, which is normal for an idle serverless agent - it cold-starts on the next invoke. For logs from earlier runs, use GET /v1/agents/research-buddy/logs/history.

An agent that really is missing returns 404 instead. Read the two codes like this. A 200 carrying that message means your agent is fine, just asleep. A 404 with unknown agent: <name> means it does not exist — or it exists and is not yours, since the API answers both cases the same way. See troubleshooting.

Log history

GET /v1/agents/{name}/logs/history returns persisted lines that survive scale-to-zero and revision rollouts.

Query parameters:

ParameterDefaultMeaning
limit500Maximum lines returned
sinceRFC3339 timestamp; only lines after it
platformctl logs research-buddy --history

You should see (oldest lines first):

2026-08-10T09:12:02Z stdout harness started, agent loaded
2026-08-10T09:12:44Z stdout invoke session=3f2c8a1e-… tool=run_python

The CLI sends no limit or since, so it takes the server's default of 500 lines. Add -o json for the full objects, revision and instance included. An agent with nothing collected prints no persisted logs.

--follow and --history cannot be combined. Trying returns:

--follow and --history are mutually exclusive: --history reads persisted logs, --follow tails a running instance

Each line records which revision and which instance produced it. That is useful when a rollout changed behavior and you need to compare before and after.

Retention

History is kept for 14 days by default (platform-configurable via LOG_RETENTION). If you need logs for longer — audits, incident timelines — export them before they age out.

Where build output goes

There is no build-log endpoint. When a build fails, the last part of the build output lands in the agent's message field instead — up to 4,000 characters, ending in ...(truncated) if it had to be cut. Read it with platformctl status <agent> or GET /v1/agents/{name}, or see it laid out on the console's Overview tab.

The runtime logs this page describes are a different thing. They begin only after a build succeeds and an instance actually runs. See troubleshooting for reading build failures.

Summary

TaskCommand
Current logsplatformctl logs <agent>
Tail continuouslyplatformctl logs <agent> -f
After scale-to-zero or a rolloutplatformctl logs <agent> --history
Build failure outputplatformctl status <agent> (the message field)
Retention14 days default

Next steps