Deploy OpenDots
Self-host AI coworkers with chat, pages, calls, and Slack
Just deployed
Deploy and Host OpenDots on Railway
OpenDots is a self-hosted workspace for persistent AI coworkers. Define specialist Dots, organize work in Spaces and pages, and continue conversations across web chat, voice calls, Slack, and scheduled tasks. It combines CopilotKit, AG-UI, and an OpenAI-compatible model layer in a focused browser interface for private, customizable agent workflows.
About Hosting OpenDots on Railway
Railway runs the published Docker image as a single HTTP service with an automatically generated HTTPS domain. The one-service deployment includes the complete browser UI and API; optional browser, Slack, voice, and computer integrations can be configured later through environment variables or companion services.
Tech Stack
- Docker image built from Node.js 24 and the OpenDots application
- React and Vite frontend
- Hono and Node.js backend
- SQLite metadata store
- CopilotKit, AG-UI, TanStack AI, and OpenAI-compatible model providers
Why Deploy OpenDots on Railway
Railway provides one-click provisioning, managed HTTPS, simple environment-variable configuration, container logs, and straightforward scaling for a self-hosted AI workspace. The Docker-only template keeps deployments reproducible while leaving model and integration credentials under the deployer's control.
Common Use Cases
Use OpenDots to create specialist research and writing coworkers, manage persistent workspaces and pages, run scheduled research tasks, continue agent conversations across web chat and Slack, or add optional realtime voice and isolated computer workflows.
Deployment Notes
- The app listens on container port
4310;PORT=4310is preconfigured for Railway routing. - The template uses the image's native entrypoint and does not override
startCommand. OWNER_TOKENis generated automatically with Railway's${{secret()}}function. Enter it in the OpenDots unlock prompt; OpenDots does not provide a built-in username/password login.- Set
INTELLIGENCE_API_KEY, or setOPENAI_API_KEYandOPENAI_MODEL, to enable agent conversations.OPENAI_BASE_URLdefaults tohttps://api.openai.com/v1. APP_ORIGINshould match the generated HTTPS origin; usehttps://${{RAILWAY_PUBLIC_DOMAIN}}when customizing the deployment.- The one-service template does not mount a volume because the upstream image runs as a non-root user and Railway's initial volume ownership prevents SQLite startup. Application metadata under
/datais therefore ephemeral across replacement deployments. WEB_SEARCH_PROVIDER=parallelis enabled by default;PARALLEL_API_KEYis optional for light anonymous use and higher limits may require a key.- Browser, Slack, voice, and per-Dot computer integrations are optional and require their respective upstream services or credentials.
Dependencies for OpenDots on Railway
The template is intentionally a single-service deployment: the app serves both the frontend and API. External model, Intelligence, Slack, voice, browser, or computer services are optional integrations configured after deployment.
Deployment Dependencies
| Service | Image | Port | Volume |
|---|---|---|---|
| app | xiaosong233/opendots-railway:latest | 4310 | - |
Template Content
HOST
PORT
OWNER_ID
APP_ORIGIN
VOICE_NAME
OWNER_TOKEN
VOICE_MODEL
OPENAI_MODEL
SLACK_DOT_ID
DATABASE_PATH
SLACK_TEAM_ID
VOICE_API_KEY
OPENAI_API_KEY
SLACK_USER_IDS
OPENAI_BASE_URL
PARALLEL_API_KEY
COMPUTER_NAMESPACE
SLACK_CHANNEL_NAME
INTELLIGENCE_WS_URL
WEB_SEARCH_PROVIDER
INTELLIGENCE_API_KEY
INTELLIGENCE_API_URL
