Skip to main content

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.

Every line that any tenant container writes to stdout or stderr is captured and persisted. There are three ways to look at logs.

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 and buildctl 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
/{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.
Pagination caps at 500 lines per page.

Where the logs live

slipway runs an in-memory ring buffer per in-flight deployment (the logs.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.