---
title: "Deploy Bytebot AI Desktop Agent (Password-Protected)"
description: "AI agent with its own Linux desktop: browses, clicks, types. Login-gated."
category: "AI/ML"
url: https://railway.com/deploy/bytebot-ai-desktop-agent-password-protec
---

# Deploy Bytebot AI Desktop Agent (Password-Protected)

AI agent with its own Linux desktop: browses, clicks, types. Login-gated.

**[Deploy Bytebot AI Desktop Agent (Password-Protected) on Railway](https://railway.com/template/bytebot-ai-desktop-agent-password-protec)**

Machine-readable deploy manifest (JSON, validated by TemplateCI): https://railway.com/deploy/bytebot-ai-desktop-agent-password-protec/manifest.json

- **Creator:** Templates
- **Category:** AI/ML
- **Total deploys:** 1

## Template content

### bytebot-ui https://cdn.jsdelivr.net/gh/bytebot-ai/bytebot@3d37894ce07ef8d8b40adc7fd309ad96c2a71313/static/bytebot_icon.svg

- **Image:** ghcr.io/bytebot-ai/bytebot-ui:edge@sha256:492d57da67513582dd15cde892dc8b29b9a6deec62c9e2b4e2c86e168c22302f
- **Health check:** /

### bytebot-agent https://cdn.jsdelivr.net/gh/bytebot-ai/bytebot@3d37894ce07ef8d8b40adc7fd309ad96c2a71313/static/bytebot_icon.svg

- **Source:** baranberkay96/bytebot-railway
- **Health check:** /tasks/models

### Bytebot https://cdn.jsdelivr.net/gh/bytebot-ai/bytebot@3d37894ce07ef8d8b40adc7fd309ad96c2a71313/static/bytebot_icon.svg

- **Source:** baranberkay96/bytebot-railway
- **Health check:** /_gateway/health
- **Public domain:** Yes

### Postgres https://devicons.railway.app/i/postgresql.svg

- **Image:** ghcr.io/railwayapp-templates/postgres-ssl:18

### bytebot-desktop https://cdn.jsdelivr.net/gh/bytebot-ai/bytebot@3d37894ce07ef8d8b40adc7fd309ad96c2a71313/static/bytebot_icon.svg

- **Image:** ghcr.io/bytebot-ai/bytebot-desktop:edge@sha256:e974e7ac93c8f755e98b8a437e5497a63175c7096b51a348f5f1d9320598a1c9
- **Health check:** /novnc/vnc.html

## Documentation

# Deploy and Host Bytebot with Railway

Bytebot is an open-source AI desktop agent: you describe a task in plain language and it does the work on its own Linux desktop, using the browser, apps and files like a person would. This community template runs the full Bytebot stack behind a password, with current model lists for Claude, OpenAI and Gemini.

## About Hosting Bytebot

Bytebot has four parts: a containerized Ubuntu desktop (XFCE, Firefox, Thunderbird, VS Code) with a control daemon, an agent that plans each step with an LLM and drives the desktop, a Next.js task UI with a live view of the desktop, and Postgres for tasks and messages. Upstream's UI has no sign-in, and through it anyone could watch and control the desktop. This template puts a password-protected gateway in front and keeps the desktop, the agent and the database on Railway's private network. The upstream repository is archived; the template pins its last published images and replaces their retired default models with configurable current ones.

## Common Use Cases

- Hand off repetitive browser work: filling web forms from a file, collecting data from several sites, downloading and sorting documents
- Test web flows end to end and get screenshots of each step
- Run a computer-use agent for research and prototyping without giving it access to your own machine
- Take over the desktop yourself at any point, then hand control back to the agent

## Dependencies for Bytebot Hosting

- Bytebot desktop, agent and UI images from `ghcr.io/bytebot-ai` (last upstream build, pinned by digest)
- Postgres 18 (Railway's image)
- Caddy 2.11 as the sign-in gateway
- An API key for Anthropic, OpenAI or Google Gemini (yours, entered after deploy)

### Deployment Dependencies

- Bytebot source (archived, Apache-2.0): https://github.com/bytebot-ai/bytebot
- Bytebot documentation: https://docs.bytebot.ai
- Anthropic API keys: https://console.anthropic.com
- OpenAI API keys: https://platform.openai.com/api-keys
- Gemini API keys: https://aistudio.google.com/apikey

### Implementation Details

| Service | Source | Purpose |
|---|---|---|
| Bytebot | Caddy 2.11.9 (`services/gateway`) | Public domain; basic-auth sign-in; refuses cross-site requests; proxies to the UI |
| bytebot-ui | `bytebot-ui:edge` (digest-pinned) | Task UI, live desktop view, proxy to agent and VNC (private) |
| bytebot-agent | `bytebot-agent:edge` + model lists and start script (`services/agent`) | Plans and runs tasks with your LLM; migrates Postgres at start (private) |
| bytebot-desktop | `bytebot-desktop:edge` (digest-pinned) | Ubuntu 22.04 XFCE desktop, bytebotd computer-use API, noVNC (private) |
| Postgres | `postgres-ssl:18` | Tasks and messages, on a volume |

**First login.** Open the Bytebot service's domain and sign in with `BYTEBOT_USERNAME` (default `bytebot`) and `BYTEBOT_PASSWORD` from the Bytebot service's Variables tab.

**Add an LLM key.** The deploy needs no key, but tasks do. On the bytebot-agent service, set `ANTHROPIC_API_KEY` (recommended), `OPENAI_API_KEY` or `GEMINI_API_KEY`, then redeploy bytebot-agent. Without a key the model picker is empty and the agent log says what to set. The models offered come from `BYTEBOT_ANTHROPIC_MODELS`, `BYTEBOT_OPENAI_MODELS` and `BYTEBOT_GEMINI_MODELS` (`model-id=Title`, comma-separated), because Bytebot's own lists name models that providers have retired.

**Run a task.** Pick a model, describe the task, and watch the desktop on the task page. Use "Take over" to control the desktop yourself.

**Safe defaults.** The password is generated at deploy. An empty, shorter than 12 or longer than 72-character password does not stop the deploy: the site is locked with a random password and the gateway log says how to fix it. Only the gateway has a public domain.

**Persistence.** Tasks and messages persist in Postgres. The desktop has no volume, as upstream: files saved on it are lost when bytebot-desktop is redeployed.

**Resources and plans.** Measured on Railway: the desktop uses 0.8–0.9 GB with Firefox open, the other services about 0.35 GB together. Use the Hobby plan or higher. The template deploys on Trial and Free too, but with 1 GB (Trial) the browser has little headroom and with 0.5 GB (Free) Firefox does not start. LLM usage is billed by your provider.

**Upgrading.** Upstream is archived and publishes only an `edge` tag, so the images are pinned by digest. Change the digests in `template.json` and `services/agent/Dockerfile` if a maintained build appears.

This is a community template, not affiliated with Bytebot, Anthropic, OpenAI, Google or Railway. Bytebot is Apache-2.0. Follow Railway's Fair Use Policy and the terms of the sites the agent visits.

### Why Deploy Bytebot on Railway?

Railway runs the desktop, the agent, the UI and Postgres as one project with private networking, so only the sign-in gateway faces the internet. You get your own computer-use agent in a few minutes, and you can stop or redeploy it from one dashboard.


## Similar templates

- [Chat Chat](https://railway.com/deploy/-WWW5r) — Chat Chat, your own unified chat and search to AI platform.
- [Weaviate](https://railway.com/deploy/weaviate-1) — Vector database with hybrid search and an API key-protected API
- [Möbius Personal AI OS](https://railway.com/deploy/mobius-v01-personal-ai-os) — Self-hosted AI agent that builds and runs apps for you, with memory.

Open this page in a browser: https://railway.com/deploy/bytebot-ai-desktop-agent-password-protec
