kinora

[ Self-hosting ]

A self-hosted Playwright dashboard

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.

kinora.dev/overview
kinora overview showing pass rate and run health across several self-hosted projects

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.

Single origin, no CORS

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.

Your traces, your storage

trace.zip artifacts land on a local volume by default, or in any S3-compatible store: AWS, Cloudflare R2, MinIO, or Hetzner.

Nothing metered

Self-host runs with billing off: no seat cap, no retention window, no usage limit, and no license key to check in with.

FAQ

Is self-hosting kinora free?

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.

What do I need to run it?

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.

Do self-hosted runs lose any features?

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.

Awaiting first signal

Push your first run.

Add the reporter, point it at a kinora server, and watch the history build itself.