Deploying Bytebot on Railway
Comprehensive guide to deploying the full Bytebot stack on Railway using the official 1-click template
TL;DR – Click the button below, add your Anthropic key, and your personal Bytebot instance will be live in ~2 minutes.
Why Railway?
Railway provides a zero-ops PaaS experience with private networking and per-service logs that perfectly fits Bytebot’s multi-container architecture. The official template wires every service together using the latest container images pushed to the edge
branch.
What Gets Deployed
Service | Container Image (edge) | Port | Exposed? | Purpose |
---|---|---|---|---|
bytebot-ui | ghcr.io/bytebot-ai/bytebot-ui:edge | 9992 | Yes | Next.js web UI rendered to the world |
bytebot-agent | ghcr.io/bytebot-ai/bytebot-agent:edge | 9991 | No | Task orchestration & LLM calls |
bytebot-desktop | ghcr.io/bytebot-ai/bytebot-desktop:edge | 9990 | No | Containerised Ubuntu + XFCE desktop |
postgres | postgres:14-alpine | 5432 | No | Persistence layer |
All internal traffic flows through Railway’s private networking. Only bytebot-ui
is assigned a public domain.
Step-by-Step Walk-through
1. Open the Template
Click the Deploy on Railway button above or visit https://railway.com/deploy/bytebot?referralCode=L9lKXQ.
2. Configure Environment
Railway automatically detects required variables. Paste your Anthropic API key into ANTHROPIC_API_KEY
and keep other defaults.
3. Kick off the Deployment
Press Deploy. Railway will pull the pre-built images, create the Postgres database and link all services on a private network.
4. Launch Bytebot
When the build logs show “bytebot-ui: ready”, click the generated URL (e.g. https://bytebot-ui-prod.up.railway.app
). You should see the task interface. Create a task and watch the desktop stream!
Tip: You can tail logs for each service from the Railway dashboard.
The first deploy downloads several container layers – expect ~2 minutes. Subsequent redeploys are much faster.
Private Networking & Security
• Private networking ensures that the agent, desktop and database can communicate securely without exposing their ports to the internet.
• Public exposure is limited to the UI which serves static assets and proxies WebSocket traffic.
• Add authentication by placing the UI behind Railway’s built-in password protection or an external provider (e.g. Cloudflare Access, Auth0, OAuth proxy).
• You can also point a custom domain to the UI from the Railway dashboard and enable Cloudflare for WAF/CDN protection.
Customisation & Scaling
- Change images – Fork the repo, push your own images and edit the template’s
Dockerfile
references. - Increase resources – Each service has an independent CPU/RAM slider in Railway. Bump up the desktop or agent if you plan heavy automations.
Troubleshooting
Symptom | Likely Cause | Fix |
---|---|---|
Web UI shows “connecting…” | Desktop not ready or private networking mis-config | Wait for bytebot-desktop container to finish starting, or restart service |
Agent errors 401 Anthropic | Missing/invalid API key | Re-enter ANTHROPIC_API_KEY in Railway variables |
Slow desktop video | Free Railway plan throttling | Upgrade plan or reduce screen resolution in desktop settings |
Next Steps
• Explore the REST APIs to script tasks programmatically.
• Join our Discord community for support and showcase your automations!