Every line that any tenant container writes to stdout or stderr is captured and persisted. There are three ways to look at logs.Documentation Index
Fetch the complete documentation index at: https://docs.slipway.sh/llms.txt
Use this file to discover all available pages before exploring further.
Per-deployment live stream
On the deployment detail page, the Logs tab opens a Server-Sent Events stream and renders lines as they arrive. The same view replays the most recent ~256 KB of buffered output on attach, so opening the tab mid-deploy doesn’t show you a half-empty box. Build pods also stream into this view — the clone andbuildctl output is interleaved with tenant pod output, tagged by service name.
Per-deployment replay
After a deployment finishes, the Logs tab continues to work: it pages backward through ClickHouse-stored history. Logs are retained for 30 days across the cluster; after that the rows are TTL’d out. You can filter by:- Service name
- Stream (
stdout/stderr) - Time range
- Free-text on the line itself
Org-wide log search
/{slug}/logs searches across every deployment in the org. Backed by a ClickHouse full-text index (tokenbf_v1) on the message column, so multi-word queries are reasonably fast.
Useful filters:
- Repository. Scope the search to one repo.
- Deployment ID. Drill into a specific run.
- Time range. Cuts the result set drastically.
- Stream.
stderr-only is helpful for finding crash output.
Where the logs live
slipway runs an in-memory ring buffer per in-flight deployment (thelogs.Hub) so live SSE subscribers fan out without ClickHouse round-trips. Every line is also async-inserted into ClickHouse, keyed on (organization_id, deployment_id, ts, seq). The SSE endpoint reads from ClickHouse for replay, then attaches to the Hub for live updates.
There is no Postgres log table — searching logs at scale goes through ClickHouse.