Run your own SyncStaff server
One command takes a Debian or Ubuntu box—or any machine with Docker—to a private SyncStaff server with PostgreSQL and the dashboard included.
- 1. Install SyncStaff
Run this on the server. The default installation binds only to loopback, generates its own database password, starts the containers, and waits for the API health check before reporting success.
Data boundary before you installRepository source, local search indexes, embeddings, and repository credentials stay on each agent machine. The server stores coordination metadata in PostgreSQL: people and project identifiers, file paths, intents, leases, tasks, decisions, audit events, and interface-change summaries. Optional model arbitration is off unless you provide a model API key; when enabled, relevant coordination records are sent to that configured provider. Agent credentials are project-scoped and saved locally with owner-only permissions. See the security and trust page for procurement details.
SyncStaff is running. dashboard http://localhost:3000 server URL http://localhost:7377
- 2. Connect a repository
On the computer where your agents work, run the command printed by the installer from inside the repository:
npx -y syncstaff-mcp setup --server http://localhost:7377Setup asks for the project and agent client, writes the local integration, and verifies that an agent actually connects.
Let teammates reach the server over HTTPS
Point a hostname at the server and create a GitHub OAuth app whose callback is https://sync.example.com/auth/github/callback. Then run the installer with these environment variables:
sudo SYNCSTAFF_DOMAIN=sync.example.com SYNCSTAFF_GITHUB_CLIENT_ID=... SYNCSTAFF_GITHUB_CLIENT_SECRET=... sh -c 'curl -fsSL https://syncstaff.ai/install.sh | sh'The domain path enables Caddy and automatic TLS. It refuses to publish the server unless OAuth is configured; an unauthenticated coordination API must never be exposed to the internet.
Optional LLM arbitration
Pass ANTHROPIC_API_KEY when first installing to enable model-assisted conflict arbitration. Without it, deterministic intents, leases, board policy, and blast-radius checks still work.
Updating
Re-run the same install command to keep the generated secrets and refresh the bundle. Pin a release with SYNCSTAFF_VERSION=v1.2.3.
Backups
The durable state is the Docker volume syncstaff-db. Back it up with pg_dump and verify recovery by restoring it to a separate volume.
Uninstalling
Stop the stack from /opt/syncstaff. Omitting -v preserves the database volume.
cd /opt/syncstaff && sudo docker compose downTroubleshooting
- The stack does not become healthy. Run
cd /opt/syncstaff && docker compose logs api. - The setup command cannot reach a remote server. Use the HTTPS hostname printed by the domain-enabled install, not localhost.
- Docker Compose is missing. Install Docker with the Compose v2 plugin, then re-run the installer.
Not sure you need to self-host? See how Syncstaff works first.