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, PR comments on GitHub and GitLab, 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.