Deploy opendots
Persistent AI coworker workspace with chat, research, pages, and calls
Just deployed
/data
Deploy and Host OpenDots on Railway
OpenDots is a self-hosted AI coworker workspace for persistent specialist agents that move between chat, calls, research, pages, and Slack. It provides a browser UI, local SQLite workspace state, CopilotKit Intelligence integration, model-provider support, scheduled work, and optional browser/computer integrations for building personal agent workflows.
About Hosting OpenDots on Railway
Railway runs the Docker image as a single HTTP service with a generated HTTPS domain and a persistent volume for the SQLite workspace. The template uses a pre-built Docker Hub image, so deployment does not depend on GitHub source builds or Railpack detection.
Tech Stack
- Node.js 24
- React, Vite, and TypeScript
- Hono and @hono/node-server
- CopilotKit, AG-UI, and TanStack AI integrations
- SQLite database stored on the Railway volume
- Docker Hub image:
xiaosong233/opendots-railway:latest
Why Deploy OpenDots on Railway
Railway provides one-click project creation, managed HTTPS, persistent volumes, environment variables, and simple deployment visibility. The Docker-only template starts quickly and keeps the application state attached to the service without requiring a separate database service.
Common Use Cases
- Personal AI coworker and specialist-agent workspaces
- Research, drafting, review, and knowledge-page workflows
- Scheduled background tasks tied to agent conversations
- Model-provider experiments with an OpenAI-compatible endpoint
- Optional voice, Slack, browser, and computer integrations
Deployment Notes
- The app listens on container port
4310; Railway routing is configured throughPORT=4310. - Template variables include
HOST=0.0.0.0,PORT=4310,DATABASE_PATH=/data/opendots.sqlite,OWNER_ID=opendots-owner,OWNER_TOKEN=${{secret(32)}},OPENAI_BASE_URL=https://api.openai.com/v1,WEB_SEARCH_PROVIDER=parallel, andVOICE_NAME=marin. OWNER_TOKENis generated as a Railway secret and protects API requests with bearer authentication; there is no separate username/password login in the upstream application.- The
/datavolume stores/data/opendots.sqlite; it is required for durable pages, settings, and workspace state. - Configure
INTELLIGENCE_API_KEY,OPENAI_API_KEY, andOPENAI_MODELafter deployment to enable live agent conversations. The UI is usable in setup state without these optional provider credentials. - Browser, voice, Slack, and computer features require their corresponding upstream integrations and secrets. Optional variables include
INTELLIGENCE_API_URL,INTELLIGENCE_WS_URL,VOICE_API_KEY,VOICE_MODEL,BROWSER_URL,BROWSER_SECRET,SLACK_CHANNEL_NAME,SLACK_TEAM_ID,SLACK_USER_IDS,COMPUTER_SUPERVISOR_URL,COMPUTER_SUPERVISOR_TOKEN,COMPUTER_TOKEN, andPARALLEL_API_KEY.
Dependencies for OpenDots on Railway
OpenDots is a single-service template. It depends on its Docker image, the attached /data volume, and optional external CopilotKit Intelligence and model-provider APIs configured through environment variables.
Deployment Dependencies
| Service | Image | Port | Volume |
|---|---|---|---|
| app | xiaosong233/opendots-railway:latest | 4310 | /data |
Template Content
HOST
PORT
OWNER_ID
VOICE_NAME
DATABASE_PATH
OPENAI_BASE_URL
WEB_SEARCH_PROVIDER
