Skip to content

bytebot-ai/bytebot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Bytebot Logo

Bytebot – Self-Hosted AI Desktop Agent

Automate any computer task with natural language

🌐 Website β€’ πŸ“š Docs β€’ πŸ’¬ Discord β€’ 𝕏 Twitter

What is Bytebot?

Bytebot is a self-hosted AI desktop agent that transforms how you interact with computers. By combining powerful AI with a containerized Linux desktop, Bytebot can perform complex computer tasks. Think of it as your virtual employee that can actually use a computer – clicking, typing, browsing, and completing workflows just like a human would.

Why Self-Host Bytebot?

  • Complete Privacy: Your tasks and data never leave your infrastructure
  • Full Control: Customize the desktop environment and installed applications
  • No Usage Limits: Use your own LLM API keys without platform restrictions
  • Secure Isolation: Each desktop runs in its own container, isolated from your host

Examples

setup_email_example.mp4
email_json_attachment_example.mp4

☁️ Deploy on Railway (1-Click)

Deploy on Railway

  1. Click the Deploy Now button in the Bytebot Railway template.
  2. Paste your ANTHROPIC_API_KEY in the single required environment variable.
  3. Press Deploy. Railway will spin up the Desktop, Agent, UI and Postgres services using pre-built container images, connect them via private networking and expose only the UI publicly.
  4. In about two minutes your agent will be live at your project's public URL.

For an in-depth guide see here.


πŸš€ Quick Start

Prerequisites

  • Docker β‰₯ 20.10
  • Docker Compose
  • Anthropic API key (get one here)

Start Your Desktop Agent (2 minutes)

  1. Clone and configure:
git clone https://github.com/bytebot-ai/bytebot.git
cd bytebot
echo "ANTHROPIC_API_KEY=your_api_key_here" > infrastructure/docker/.env
  1. Start the agent stack:
docker-compose -f infrastructure/docker/docker-compose.yml up -d
  1. Open the chat interface:
http://localhost:9992

That's it! Start chatting with your AI desktop agent. Watch it work in real-time through the embedded desktop viewer.

Example Tasks You Can Delegate

  • "Research the top 5 competitors for [product] and create a comparison spreadsheet"
  • "Fill out this web form with the data from my CSV file"
  • "Check my email and summarize important messages"
  • "Download all PDFs from this website and organize them by date"
  • "Monitor this webpage and alert me when the price drops below $50"

πŸ—οΈ Architecture Overview

Bytebot consists of four main components working together:

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        Your Browser                          β”‚
β”‚                    http://localhost:9992                     β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                      β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Bytebot UI (Next.js)                      β”‚
β”‚              β€’ Task interface                                β”‚
β”‚              β€’ Desktop viewer (VNC)                          β”‚
β”‚              β€’ Task management                               β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                      β”‚ WebSocket
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                 Bytebot Agent (NestJS)                       β”‚
β”‚              β€’ LLM integration                               β”‚
β”‚              β€’ Task orchestration                            β”‚
β”‚              β€’ Action planning                               β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                      β”‚ REST API
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚              Bytebot Desktop (Ubuntu + XFCE)                 β”‚
β”‚              β€’ Full Linux desktop                            β”‚
β”‚              β€’ Browser, email, office apps                   β”‚
β”‚              β€’ Automation daemon (bytebotd)                  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ› οΈ Key Features

For End Users

  • Natural Language Control: Just describe what you want done
  • Visual Feedback: Watch the AI work in real-time
  • Task History: Review and replay previous automations
  • Browser-Based: No software to install on your machine

For Developers

  • REST API: Integrate desktop automation into your applications
  • Extensible: Add custom tools and applications to the desktop
  • Scriptable: Create complex workflows with the automation API
  • Observable: Full logging and debugging capabilities

For IT Teams

  • Container-Based: Easy deployment with Docker
  • Resource Efficient: Minimal overhead compared to VMs
  • Network Isolated: Secure by default with customizable access
  • Scalable: Run multiple instances for team use

πŸ“Š System Requirements

Minimum (Single Agent)

  • 2 CPU cores
  • 4GB RAM
  • 10GB storage
  • Docker & Docker Compose

Recommended (Production)

  • 4+ CPU cores
  • 8GB+ RAM
  • 20GB+ storage
  • Linux host OS for best performance

πŸ”§ Configuration

Environment Variables

Create infrastructure/docker/.env:

# Required
ANTHROPIC_API_KEY=sk-ant-...

Desktop Customization

Add applications or configurations by extending the Dockerfile:

# infrastructure/docker/desktop/Dockerfile.custom
FROM bytebot/desktop:latest

# Install additional software
RUN apt-get update && apt-get install -y \
    libreoffice \
    gimp \
    your-custom-app

# Copy custom configs
COPY configs/.config /home/bytebot/.config

πŸ”’ Security Considerations

  • API Key: Keep your Anthropic API key secure and never commit it
  • Network: By default, services are only accessible from localhost
  • VNC: Change the default VNC password for production use
  • Updates: Regularly update the container images for security patches

🎯 Common Use Cases

Personal Productivity

  • Email management and responses
  • Calendar scheduling
  • Document organization
  • Web research and data collection

Business Automation

  • Form filling and data entry
  • Report generation
  • Competitive analysis
  • Customer support tasks

Development & Testing

  • UI testing automation
  • Cross-browser testing
  • API integration testing
  • Documentation screenshots

🚦 Managing Your Agent

View Logs

docker-compose -f infrastructure/docker/docker-compose.yml logs -f

Stop Services

docker-compose -f infrastructure/docker/docker-compose.yml down

Update to Latest Version

docker-compose -f infrastructure/docker/docker-compose.yml pull
docker-compose -f infrastructure/docker/docker-compose.yml up -d

Reset Everything

docker-compose -f infrastructure/docker/docker-compose.yml down -v

πŸ“š Advanced Usage

Programmatic Control

Control Bytebot via REST API:

import requests

# Create a task
response = requests.post('http://localhost:9991/tasks', json={
    'description': 'Search for flights from NYC to London next month',
})

task_id = response.json()['id']

# Check task status
status = requests.get(f'http://localhost:9991/tasks/{task_id}')
print(status.json())

Direct Desktop Automation

Use the computer control API for precise automation:

// Take screenshot
POST http://localhost:9990/computer-use
{
  "action": "screenshot"
}

// Click at coordinates
POST http://localhost:9990/computer-use
{
  "action": "click_mouse",
  "coordinate": [500, 300]
}

// Type text
POST http://localhost:9990/computer-use
{
  "action": "type_text",
  "text": "Hello, Bytebot!"
}

🀝 Contributing

We welcome contributions! Whether it's bug fixes, new features, or documentation improvements:

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ’¬ Community & Support

πŸ™ Acknowledgments

Built with amazing open source projects:

πŸ“„ License

MIT Β© 2025 Tantl Labs, Inc.


Ready to give your AI its own computer?
Start with the Quick Start guide above or dive into the full documentation.