| title | Quick Start |
|---|---|
| description | Get your AI desktop agent running in 2 minutes |
Bytebot can be deployed in several ways depending on your needs:
## ☁️ One-click Deploy on Railway Click the Deploy Now button in the Bytebot template on Railway. Enter either your `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, or `GEMINI_API_KEY` for the bytebot-agent resource. Hit **Deploy**. Railway will build the stack, wire the services together via private networking and output a public URL for the UI. Your agent should be ready within a couple of minutes! Need more details? See the full Railway deployment guide. ## 🐳 Self-host with Docker Compose- Docker ≥ 20.10
- Docker Compose
- 4GB+ RAM available
- AI API key from one of these providers:
- Anthropic (get one here) - Claude models
- OpenAI (get one here) - GPT models
- Google (get one here) - Gemini models
Get your self-hosted AI desktop agent running with just three commands:
```bash git clone https://github.com/bytebot-ai/bytebot.git cd bytebot# Configure your AI provider (choose one):
echo "ANTHROPIC_API_KEY=your_api_key_here" > docker/.env # For Claude
# echo "OPENAI_API_KEY=your_api_key_here" > docker/.env # For OpenAI
# echo "GEMINI_API_KEY=your_api_key_here" > docker/.env # For Gemini
```
This starts all four services:
- Bytebot Desktop: Containerized Linux environment
- AI Agent: LLM-powered task processor (supports Claude, GPT, or Gemini)
- Chat UI: Web interface for interaction
- Database: PostgreSQL for persistence
Two ways to interact:
- Tasks: Enter task descriptions to have Bytebot work autonomously
- Desktop: Direct access to the virtual desktop for manual control
Try asking:
- "Open Firefox and search for the weather forecast"
- "Take a screenshot of the desktop"
- "Create a text file with today's date"
You now have a complete AI desktop automation system with:
**🔐 Password Manager Support**: Bytebot can handle authentication automatically when you install a password manager extension. See our [password management guide](/guides/password-management) for setup instructions. - Understands natural language - Plans and executes tasks - Adapts to errors - Works autonomously - Full Ubuntu environment - Browser, office tools - File system access - Application support - Create and manage tasks - Real-time desktop view - Conversation history - Takeover mode - Programmatic control - Task management API - Direct desktop access - MCP protocol supportNow let's see Bytebot in action! Try these example tasks:
"Take a screenshot of the desktop" "Open Firefox and go to google.com" "Create a text file called 'hello.txt' with today's date" "Check the system information and tell me the OS version" "Find the top 5 AI news stories today and create a summary document" "Go to hacker news, find the top 10 stories, and save them to a CSV file" "Upload a PDF contract and extract all payment terms and deadlines" "Search for 'machine learning tutorials', open the first 3 results in tabs, and take screenshots of each"| Service | URL | Purpose |
|---|---|---|
| Tasks UI | http://localhost:9992 | Main interface for interacting with the agent |
| Agent API | http://localhost:9991/tasks | REST API for programmatic task creation |
| Desktop API | http://localhost:9990/computer-use | Low-level desktop control API |
| MCP SSE | http://localhost:9990/mcp | Connect MCP clients for tool access |
See our [Helm deployment guide](/deployment/helm) for Kubernetes installation.
If you just want the virtual desktop without the AI agent:
```bash
# Using pre-built image (recommended)
docker-compose -f docker/docker-compose.core.yml pull
docker-compose -f docker/docker-compose.core.yml up -d
```
Or build locally:
```bash
docker-compose -f docker/docker-compose.core.yml up -d --build
```
Access the desktop at [http://localhost:9990/vnc](http://localhost:9990/vnc)
Monitor what your agent is doing:
# All services
docker-compose -f docker/docker-compose.yml logs -f
# Just the agent
docker-compose -f docker/docker-compose.yml logs -f bytebot-agentdocker-compose -f docker/docker-compose.yml downdocker-compose -f docker/docker-compose.yml pull
docker-compose -f docker/docker-compose.yml up -dRemove all data and start fresh:
docker-compose -f docker/docker-compose.yml down -v# Simple task
curl -X POST http://localhost:9991/tasks \
-H "Content-Type: application/json" \
-d '{
"description": "Search for flights from NYC to London next month",
"priority": "MEDIUM"
}'
# Task with file upload
curl -X POST http://localhost:9991/tasks \
-F "description=Read this contract and summarize the key terms" \
-F "priority=HIGH" \
-F "files=@contract.pdf"# Take a screenshot
curl -X POST http://localhost:9990/computer-use \
-H "Content-Type: application/json" \
-d '{"action": "screenshot"}'
# Type text
curl -X POST http://localhost:9990/computer-use \
-H "Content-Type: application/json" \
-d '{"action": "type_text", "text": "Hello, Bytebot!"}'# Optional: Use specific models
ANTHROPIC_MODEL=claude-3-5-sonnet-20241022 # Default
OPENAI_MODEL=gpt-4o
GEMINI_MODEL=gemini-1.5-flash
```
# This includes a pre-configured LiteLLM proxy
```