Deployment overview
This page introduces the supported ways to run and self-host Chorus, lists what each form needs, and helps you pick one. Once you have chosen, the Docker, production, and operations guides take you the rest of the way.
Deployment forms
Section titled “Deployment forms”Chorus runs the same application in two shapes. The difference is where its data lives and how many people use it.
Local single-machine
Section titled “Local single-machine”One process on one machine for a single user. Chorus bundles an embedded PostgreSQL database
(PGlite), so there is nothing external to install: the command creates
its own database, applies migrations, and serves the web app on port 8637. This is the
fastest way to try Chorus and the right choice for individual, local use.
This is the path the Get started guide walks end to end — install the global package, set an administrator account, and sign in. That guide is the canonical install walkthrough for the single-user local form, so this page does not repeat its steps.
Production
Section titled “Production”A shared installation for a team, backed by an external PostgreSQL 16 database that you manage and back up, and served by one or more application instances. Redis 7 is optional for a single instance and required when you run more than one, because instances propagate live updates (Server-Sent Events) to each other through Redis. Without Redis, Chorus falls back to in-memory eventing, which only works for a single instance.
You can run the production form as a container (see Deploy with Docker), from the global npm package against your own PostgreSQL and Redis, or on the bundled AWS CDK stack (see Production deployment).
Prerequisites
Section titled “Prerequisites”- Node.js 22 or later — Chorus targets the Node.js 22 runtime (the Docker image is built on
node:22-alpine). - Port
8637— the application listens here. Publish or proxy this port to reach the UI and the MCP endpoint. - Database — nothing to provision for the local form (embedded PGlite). For production, an external PostgreSQL 16 database reachable over a connection string.
- Cache — none required for a single instance. For multi-instance production, a Redis 7 endpoint for cross-instance event propagation.
How to choose
Section titled “How to choose”| If you want to… | Use | Database | Cache | | --- | --- | --- | --- | | Try Chorus or work solo on one machine | Local single-machine | Embedded PGlite | None | | Run a shared instance with the least moving parts | Standalone container | Embedded PGlite (in a volume) | None | | Run a shared, resilient, or multi-instance install | Production (Docker, npm, or AWS CDK) | External PostgreSQL 16 | Redis 7 (required for 2+ instances) |
Continue
Section titled “Continue”- Deploy with Docker — the published
chorusaidlc/chorus-appimage: standalone and production Compose files, adocker runexample, the full environment-variable reference, and startup behaviour. - Production deployment — running against your own PostgreSQL and Redis, multi-instance requirements, and the full AWS CDK walkthrough.
- Operations — first-login bootstrap, deployment-side authentication, automatic migrations, and backing up before you upgrade.