Docs

Run Gyrator yourself

One binary with the UI inside. SQLite by default, Postgres when you want it. It runs on a small server or a laptop.

Install with Docker

git clone https://gitlab.com/kiosan/gyrator.git && cd gyrator
docker build -t gyrator .
docker run -p 8080:8080 -v gyrator:/data gyrator

Open http://localhost:8080, create the first admin, create a team from a preset, add people and open a check-in.

Build from source

You need Rust (stable) and Node 22.

npm --prefix web ci && npm --prefix web run build   # the UI, embedded into the binary
cargo run --release -p gyrator                       # http://localhost:8080

Configuration

Environment variables, or a .env file in the working directory. Real environment variables win over the file.

Variable What it does
DATABASE_URL sqlite://gyrator.db?mode=rwc by default; postgres://user:pass@host/db for Postgres
BIND Address to listen on, 0.0.0.0:8080 by default
SECURE_COOKIES Set to 1 when the app is served over HTTPS
PUBLIC_URL The address used in emailed links, e.g. https://gyrator.example.org
RESEND_API_KEY, RESEND_FROM Email each person their link when a check-in opens, through Resend. The sender must be on a domain verified in Resend
ANTHROPIC_API_KEY Have Claude draft retro questions from the aggregates; without it they come from rules
GYRATOR_AI_MODEL The model for retro questions, claude-opus-5-5 by default
DEMO 1 lets anyone open an account, with daily caps on emails and model calls. For a public demo; leave unset on your own server

A check-in, start to finish

  1. Setup. Create a team from a preset, add people to each group, and set the project’s goal.
  2. Open a check-in. Each person gets their own link, from Setup or by email. No accounts for respondents.
  3. Answer. About five minutes on a phone; the stakeholder’s form takes about a minute.
  4. Close and read. Results open when the check-in closes: connections from both ends, where effort goes, inner state, the cooperation network and the goal. Every number shows its n.
  5. Retro. Take the retro questions into the team’s retrospective. After a few cycles, the timeline shows each index against the team’s own baseline.

Backups

Everything lives in one database. With SQLite, back up the file in the /data volume (or gyrator.db); with Postgres, use your usual dumps.