Basecamp Sherpa
Reference

Deployment

Deploy all services to Railway via Docker images on ghcr.io.

All services deploy as Docker images pushed to GitHub Container Registry (ghcr.io, private). Railway pulls images from ghcr.io.

Prerequisites

Install tools

Authenticate with ghcr.io

Create a GitHub Personal Access Token with write:packages scope, then:

echo $GITHUB_TOKEN | docker login ghcr.io -u YOUR_GITHUB_USERNAME --password-stdin

Configure Railway

For each service in your Railway project, set the image source:

  1. Go to Settings → Source
  2. Select Docker Image
  3. Enter the image (e.g. ghcr.io/yannickarmspach/sherpa-agent:latest)
  4. Add registry credentials (ghcr.io username + PAT)

Deploy commands

CommandWhat it does
pnpm agent:deployBuild & push Agent Docker image
pnpm console:deployBuild & push Console Docker image
pnpm website:deployBuild & push Website Docker image
pnpm worker:deployBuild & push Worker Docker image
pnpm supabase:deployPush database migrations to production

Images

ServiceImagePort
Agentghcr.io/yannickarmspach/sherpa-agent:latest3000
Consoleghcr.io/yannickarmspach/sherpa-console:latest3001
Websiteghcr.io/yannickarmspach/sherpa-website:latest3002
Workerghcr.io/yannickarmspach/sherpa-worker:latest

Supabase is hosted on supabase.com, not deployed as a Docker image. Use pnpm supabase:deploy to push migrations.

Environment variables

Each service needs its own environment variables configured in Railway. See the production docs for each:

Dockerfiles

ServiceDockerfileBuild
Agentservices/docker/DockerfileMulti-stage with Claude + Basecamp CLIs
Consoleapps/console/DockerfileMulti-stage, Vite SSR build
Websiteapps/website/DockerfileMulti-stage, Vite SSR build
Workerapps/worker/DockerfileLightweight, tsx runtime