Deploy Roster
Team channels and threads, where the threads run agents on real repos.
Just deployed
/var/lib/postgresql/data
centrifugo
Just deployed
Redis
Just deployed
/data
Just deployed
Deploy and Host Roster on Railway
Roster is team chat whose threads run coding agents on real repositories. A channel is a repo; asking its agent something opens a thread and starts a real session on real code, reached through Superset on whichever machine holds the project. Progress, questions and output land in the thread, next to the conversation that started it.
About Hosting Roster
Roster runs as two tiers that ship in one image. The web service serves the
app and applies database migrations on boot. The worker owns every agent
session: it holds the connection to each machine, watches each running
session, writes progress back into the thread, and delivers steers and
cancellations. Setting ROSTER_RUN_WORKER to 1 runs both in the web
container, which is the simplest working setup; the worker can later be split
into its own service with the start command node apps/worker/dist/worker.mjs.
This template provisions four services: the app, Postgres for messages and
threads, Redis for the session work queue, and Centrifugo for realtime. The
app needs a volume mounted at /app/uploads so message attachments survive a
redeploy.
Why Deploy Roster on Railway?
Railway provisions Postgres, Redis and the app together with their connection strings already wired, so the only values left to supply are your own domain and mail settings. The app migrates its own schema on first boot, and the worker restarts with the container if it ever exits, so a deploy is a single step rather than a sequence.
Common Use Cases
- Running coding agents against your team's repositories, with the work visible in a shared thread rather than one person's terminal
- Handing an agent a task from chat and following its progress, steering it mid-run, or cancelling it
- Letting one channel's agent ask another channel's agent for help and getting the answer back in the original thread
Dependencies for Roster Hosting
- A Superset API key, which is how Roster reaches the machine holding each repository
- Postgres and Redis, both provisioned by this template
- A volume mounted at
/app/uploadson the web service for attachments - Optionally Resend, for magic-link sign-in email; leave it unset and links are printed to the service logs
Important: set ROSTER_RUN_WORKER
Something has to run the worker, or the app boots, signs in and opens threads
while no agent ever runs. Set ROSTER_RUN_WORKER to 1 on the web service
unless you are running the worker as its own service.
Other References
Template Content
centrifugo
centrifugo/centrifugo:v6.9.6Redis
redis:8.2REDISPORT
REDISUSER
EMAIL_FROM
RESEND_API_KEY
ROSTER_RUN_WORKER