Skip to main content
Scout ships with three Railway scripts. One provisions the project, one syncs env vars, one redeploys. Any cloud provider works, but Railway is the fastest path to get something running.

Prerequisites

  • A Scout repo set up locally (setup)
  • A Railway account
  • The Railway CLI installed and authenticated (railway login)

Step 1: Provision the project

Use .env.production to keep production credentials separate from local dev. Copy your local .env as the starting point:
cp .env .env.production
Don’t set DB_* in .env.production. The deploy script points Scout at the Railway Postgres service automatically. Setting DB_HOST here would break the deploy when env vars sync. Then run:
./scripts/railway/up.sh
This script:
  1. Creates a Railway project called scout.
  2. Adds a pgvector service with a persistent volume at /var/lib/postgresql.
  3. Creates the scout application service and forwards a starter set of env vars from your shell or .env.production.
  4. Deploys the app and assigns a public domain.
The script prints the assigned URL right away. The domain takes ~5 minutes to start resolving.

Step 2: Sync the rest of your env vars

The first deploy only forwards the variables in up.sh. To push everything in .env.production (Slack credentials, MCP secrets, anything you’ve added):
./scripts/railway/env.sh
The script reads .env.production by default. Pass a path to use a different file:
./scripts/railway/env.sh .env.staging
It handles multiline values like PEM keys correctly. Railway auto-redeploys when values change.

Step 3: Verify

Once the domain resolves:
curl https://your-scout.up.railway.app/health
# {"status":"ok"}

curl https://your-scout.up.railway.app/contexts | jq
# Lists every registered context with its current status.
Then connect the AgentOS UI:
  1. Open os.agno.com.
  2. Click Add OS, choose Live, paste your Railway URL.
  3. Click Connect.

Update Slack to point at production

If you set up Slack against an ngrok URL, swap it for your Railway domain:
  1. Open your Slack app at api.slack.com/apps.
  2. Go to Event Subscriptions.
  3. Update the Request URL to https://your-scout.up.railway.app/slack/events.
  4. Wait for the green Verified check, then Save Changes.
You can stop ngrok now. Slack delivers all events to Railway.

Redeploys

Code changes:
./scripts/railway/redeploy.sh
Env var changes:
./scripts/railway/env.sh

What you get

ResourcePurpose
scout serviceThe Scout app, FastAPI on port 8000
pgvector servicePostgres with the pgvector extension, used for the CRM context and learnings
/var/lib/postgresql volumePersistent database storage
Railway-issued domainPublic HTTPS endpoint

Operations

TaskCommand
Tail logsrailway logs --service scout
Open the dashboardrailway open
Run a command in the containerrailway ssh --service scout
Scale CPU, memory, replicasEdit railway.json

Next

Add more sources →