Self-host Agent Zero on a Cube
Run Agent Zero on a Krova Cube — the open-source agentic framework that gives your agent a full Linux computer, browser with DOM annotation, and time-travel snapshots.
Agent Zero is an open-source agentic framework — described by its maintainers as "Give your agent a full Linux computer." It ships a full Linux desktop (XFCE) and a browser with DOM annotation inside Docker, plus a plugin hub, multi-agent cooperation, and time-travel snapshots of the agent's workspace. About 19,200 stars on GitHub (verified 2026-09-13). A Cube is a good place to run it: real resources, no public IP needed for the agent itself, and the per-minute billing suits an always-on control plane.
The install is one Docker command. The part worth reading carefully is Step 5 — the web UI runs on port 80 inside the container, and a Cube has no public inbound of its own. The path is to point a domain at the Cube and let the Krova edge terminate TLS.
Before you start
Agent Zero runs as a Docker container with a full Linux desktop inside (XFCE), a browser with click-to-inspect, and a web UI on port 80. The agent layer is small; the heavy resource is the LLM it drives. Agent Zero is provider-agnostic — it works with OpenAI, Anthropic, Google Gemini, Ollama, DeepSeek, Groq, Mistral, xAI, OpenRouter, and any other OpenAI-compatible endpoint.
- A Cube of 2 vCPU, 4 GB RAM, 40 GB disk — about $0.0140/hour, roughly $0.34/day or $10/month if left running. Comfortable for the framework plus a small local model.
- If you want to run a capable local model (around 7B parameters), plan on 8 GB RAM and 8 GB of disk for the model weights alone, in addition to the framework. The Cube size for that is 4 vCPU, 16 GB RAM, 100 GB disk.
- An SSH key pair, as with any Cube.
- An API key from an AI provider — or a local Ollama install if you would rather skip the paid API.
Step 1 — Create the Cube
Create a Cube with the Ubuntu 24.04 + Docker image. Agent Zero runs as a Docker container, and starting from the Docker image skips the apt-install step. If your Cube image picker does not have a Docker image, plain Ubuntu 24.04 works — the installer can pull Docker in.
Size it at 2 vCPU / 4 GB / 40 GB if you are pointing Agent Zero at a paid AI provider, or 4 vCPU / 16 GB / 100 GB if you want to run a local 7B model through Ollama on the same Cube.
Step 2 — Connect over SSH
ssh ubuntu@<cube-host> -p <port>Step 3 — Run the installer
Agent Zero publishes a one-liner install script. Fetch it, look at it, then run it — the same habit applies to any remote script:
curl -fsSL https://bash.agent-zero.ai -o a0-install.sh
less a0-install.sh
bash a0-install.shThe installer provisions Docker if needed, then pulls the Agent Zero image and starts the web UI. On first run it asks for an LLM provider and key.
Step 4 — Pick the model backend
Agent Zero accepts any OpenAI-compatible provider. The two reasonable choices on a Cube are the same shape as the other self-host guides.
Paid API (the simplest)
When the installer asks, pick OpenAI, Anthropic, or any of the 15+ providers on the list, paste the key, and Agent Zero routes every call through that provider. Billing is on the provider, not Krova.
Local Ollama on the same Cube
For a no-per-message bill, install Ollama on the same Cube and point Agent Zero at it. Ollama exposes an OpenAI-compatible API on http://localhost:11434:
curl -fsSL https://ollama.com/install.sh | shThen pull a model. llama3.1:8b is a good first choice on 16 GB of RAM:
ollama pull llama3.1:8bWhen Agent Zero asks for the provider, point it at http://localhost:11434 and the model you just pulled. Everything from there is local — your tasks, the model weights, and the agent's memory never leave the Cube.
Step 5 — Give the web UI a real address
The Agent Zero web UI listens on port 80 inside the container. On the Cube's Networking tab, add a domain and map it to port 80:
- Add a DNS record for your domain pointing at
dns.krova.cloud(the Cube's networking tab has a copy button for it). - On the Cube's Networking tab, choose Add Domain:
- Domain — the hostname, e.g.
agent-zero.example.com. - Port —
80, the Agent Zero UI port inside the container. - This app serves HTTPS itself — leave it unchecked. Agent Zero serves over plain HTTP internally; Krova adds the TLS.
Once the domain reads Active, the UI is at https://agent-zero.example.com with no tunnel and no published port.
Step 6 — Use the time-travel snapshots
One of Agent Zero's distinguishing features is time travel: every change the agent makes to its /a0/usr workspace is snapshot-able, diff-able, and revertible from the web UI. Use it when the agent does something destructive to a project — rolling back to a known-good snapshot is one click.
The framework also supports multi-agent cooperation: a "superior" agent delegates to subagents with their own contexts, which is the right shape for breaking a complex task into parallel parts.
What it costs
The 2 vCPU / 4 GB / 40 GB Cube described here bills at about $0.0140/hour — roughly $0.34/day, or $10/month if left running. Usage is metered by the minute.
On top of that, either an AI provider bill (paid per message) or the local Ollama path. Ollama is free to run; the only cost is the larger Cube to fit the model weights in RAM. Agent Zero is fully open source with no paid tier — the related Space Agent product is the hosted sibling, not required.
Cleaning up
Deleting the Cube removes Agent Zero, the Docker volume with its snapshots, and any local model weights along with the disk. If a project in the agent's workspace matters, snapshot the Cube first.
Next steps
- Self-host OpenHands on a Cube — the control-center alternative if you want a web UI for several agents, not one self-driving agent.
- Custom domains — required if you want the Agent Zero UI at your own address.
- Cubes — resizing, snapshots, and how billing works when a Cube is stopped.
