railway.json and a single deploy command.
Quick Start
1
Scaffold the project
The starter drops
railway.json and agents.yaml into the current directory.2
Authenticate with Railway
Log in with the Railway CLI.
3
Deploy
Push the service to Railway.
How It Works
The command shells out torailway up --detach.
CloudConfig support (not yet wired)
praisonai deploy railway runs railway up --detach alone — it does not apply any CloudConfig fields yet. Set them in the Railway dashboard until CLI wiring lands (PraisonAI PR #4876).
Every set field is surfaced via
logger.warning(...) and echoed in DeployResult.metadata["unapplied"]. Secret names appear; secret values never reach a log line.
Programmatic consumers reading the JSON result of
deploy should inspect metadata["unapplied"] to see which fields the provider silently dropped.Command Options
Starter railway.json
The railway starter deploys the prebuilt image (no Dockerfile needed).
Set the service’s source image to
ghcr.io/mervinpraison/praisonai in Railway settings (pin a version tag for production). The image already exposes /health on port 8005.Doctor
Check Railway readiness before deploying.deploy doctor --provider railway now checks the Railway CLI — previously this reported “Unknown provider”.Best Practices
Pin the image tag for production
Pin the image tag for production
Use a released
ghcr.io/mervinpraison/praisonai tag instead of latest in the Railway service settings.Store secrets as Railway variables
Store secrets as Railway variables
Add
OPENAI_API_KEY and other secrets as service variables in the Railway dashboard, not in Git.Destroy from the dashboard
Destroy from the dashboard
praisonai deploy destroy is not automated for Railway — remove the service in the Railway dashboard or run railway down manually.Related
Deploy Templates
Scaffold the railway starter.
Deploy to Render
Another one-command PaaS target.

