description: "Self-host Agentbot"
Run Agentbot locally or self-host on your own infrastructure.
<img src="https://indigo-decent-condor-546.mypinata.cloud/ipfs/bafybeigkpl3kax3x5wpx4xyyfldhyq6hqcwlihz5ku4cxc4ltufow4osyi" alt="Agentbot installation" height="360" style={{borderRadius: '12px', width: '100%', objectFit: 'cover', marginBottom: '24px'}} />
- Node.js 22.x (>=22.14.0 required for OpenClaw runtime)
- PostgreSQL database
- Docker (for agent containers)
The fastest way to start developing:
- Install the Dev Containers extension for VS Code
- Open the project in VS Code
- Click "Reopen in Container" when prompted
Or use Factory Cloud Templates for instant cloud-hosted development with zero setup.
# Clone the repository
git clone https://github.com/Eskyee/agentbot-opensource.git
cd agentbot-opensource
# Install dependencies
cd web && npm install
# Set up environment variables
cp .env.example .env
# Edit .env with your credentials
# Run the development server
npm run devIf you want to integrate with Agentbot programmatically, use one of these public options:
sdk/agentbotinagentbot-opensourcefor the typed reference API clientEskyee/agentbot-sdkfor the standalone SDK repo
For the reference client:
import { createAgentbotClient } from './sdk/agentbot/index'
const client = createAgentbotClient({
baseUrl: 'http://localhost:3001',
apiKey: process.env.AGENTBOT_API_KEY,
})
const agents = await client.listAgents()# Database
DATABASE_URL=postgresql://user:pass@localhost:5432/agentbot
# Auth
NEXTAUTH_SECRET=your-secret-key
NEXTAUTH_URL=http://localhost:3000
# GitHub OAuth
GITHUB_CLIENT_ID=your-client-id
GITHUB_CLIENT_SECRET=your-client-secret
# Google OAuth
GOOGLE_CLIENT_ID=your-client-id
GOOGLE_CLIENT_SECRET=your-client-secret
# Stripe
STRIPE_SECRET_KEY=sk_test_...
STRIPE_WEBHOOK_SECRET=whsec_...
# OpenRouter (default AI provider)
OPENROUTER_API_KEY=sk-or-...
# Telegram Bot
TELEGRAM_BOT_TOKEN=your-bot-token
# Railway provisioning (required for managed agent deployment)
RAILWAY_API_KEY=your-railway-api-key
RAILWAY_TOKEN_TYPE=account
RAILWAY_PROJECT_ID=your-railway-project-id
RAILWAY_ENVIRONMENT_ID=your-railway-environment-id
# OpenClaw Gateway (optional — defaults to internal Railway DNS)
OPENCLAW_GATEWAY_URL=http://your-gateway-host:10000RAILWAY_TOKEN_TYPE controls how the platform authenticates with the Railway GraphQL API. Set it to project to authenticate with a project-scoped token (sent via the Project-Access-Token header) or to account (default) to authenticate with a personal token (sent via the Authorization: Bearer header). Valid values are project, workspace, account, and oauth.
# docker-compose.yml
version: '3.8'
services:
web:
image: agentbot/web:latest
ports:
- "3000:3000"
env_file:
- .env
depends_on:
- postgres
postgres:
image: postgres:15
volumes:
- postgres_data:/var/lib/postgresql/data
env_file:
- .env
agentbot-backend:
image: ghcr.io/raveculture/agentbot-backend:latest
init: true
ports:
- "18789:18789"
environment:
- HOME=/home/node
- TERM=xterm-256color
- NODE_COMPILE_CACHE=/var/tmp/openclaw-compile-cache
- OPENCLAW_NO_RESPAWN=1
env_file:
- .env
volumes:
postgres_data:The init: true flag enables proper signal forwarding and prevents zombie processes (PID 1 handling). The HOME and TERM environment variables are required by the official OpenClaw image which runs as the node user. NODE_COMPILE_CACHE enables the Node.js compile cache for faster startup, and OPENCLAW_NO_RESPAWN=1 prevents the OpenClaw process from automatically respawning inside the container (Docker's restart policy handles restarts instead).
docker-compose up -d- Push code to GitHub
- Import project in Vercel
- Add environment variables
- Deploy
railway init
railway upUse the One-Click App for Node.js and connect a managed PostgreSQL database.
After deployment, visit:
- Main app:
https://your-domain.com - Health check:
https://your-domain.com/health
Check your DATABASE_URL format:
postgresql://username:password@host:5432/database
Ensure your OAuth redirect URLs match:
- Development:
http://localhost:3000/api/auth/callback/github - Production:
https://your-domain.com/api/auth/callback/github