One docker compose
Postgres, a one-shot migration, the server, and the web container. Set PUBLIC_URL, AUTH_SECRET, and a database password, then bring it up.
[ Self-hosting ]
kinora self-hosts with one docker compose: Postgres, the dashboard, and the embedded trace viewer on a single origin. Free forever, every feature unlocked, and your traces stay on your own storage.
Test results carry your app's screenshots, network traffic, and sometimes production-shaped data, which is why plenty of teams cannot ship them to a vendor. The self-host bundle runs the same dashboard as the cloud on your own box: one docker compose brings up Postgres, the server, and the web container, with the trace viewer served from the same origin.
Postgres, a one-shot migration, the server, and the web container. Set PUBLIC_URL, AUTH_SECRET, and a database password, then bring it up.
The web container serves the dashboard and trace viewer and proxies the API to the server, so the session cookie stays host-only and there is nothing cross-origin to configure.
trace.zip artifacts land on a local volume by default, or in any S3-compatible store: AWS, Cloudflare R2, MinIO, or Hetzner.
Self-host runs with billing off: no seat cap, no retention window, no usage limit, and no license key to check in with.
Yes, free forever. The server, dashboard, and desktop app are fair source (FSL-1.1-MIT, which converts to MIT after two years); the reporter, CLI, core, and trace viewer are MIT. There is no license key and no seat cap.
A host with Docker. The bundle brings its own Postgres and keeps traces on a local volume, so a single small VM is enough to start. Point it at an S3-compatible bucket when artifacts outgrow the disk.
No, the opposite. Self-host unlocks everything: unlimited projects and retention, alerts, GitHub PR comments, the MCP server, and the desktop app all work the same as on cloud.
Add the reporter, point it at a kinora server, and watch the history build itself.