A cloud dev box with the coding agents already installed
Ubuntu 24.04 with Claude Code, OpenAI Codex and OpenCode on PATH, five MCP servers wired into all three, a real Chrome the agent can look at its own work in, and a 10 GB /workspace volume that survives every restart. You open it in a browser tab.
From €20/month for a Standard box (2 GB RAM, 1 vCPU). Bring your own agent subscription — we install the agents, we do not resell the models.
What it actually is
It is a private service. No new resource type to learn: a dev box provisions, deploys, scales, suspends, streams logs and bills like every other service on the platform, and it is invisible from the public internet unless you serve something on its dev URL.
What is different is the image. Instead of your app, the container runs a full development machine — three coding agents, five MCP servers, a browser, four database engines plus Meilisearch for search, and Node, Bun, Python and PHP ready to use, with the other seven runtimes we deploy one dev-runtime add away — all against a /workspace volume, 10 GB by default. Your repos, your agent logins and your node_modules live on that volume. The rest of the filesystem is wiped and rebuilt whenever the container is recreated, which is why anything worth keeping goes under /workspace.
The point is not that it is a faster laptop. The point is that an agent working in it can run the tests, start the dev server, open the result in a real browser, read the console, and push — without a laptop being open, and without any of that traffic leaving European infrastructure.
Eight seconds in a box
This is the actual terminal output
The workspace screen, reduced to a diagram, replaying two real recordings: start the backing services, ask what is installed, and check the box again once the services are up and an agent is signed in.
HostStack dev box
Backing services — native, in this box
○ postgres localhost:5432 user dev, no password
○ redis localhost:6379
○ meilisearch localhost:7700
start them with dev-services up — no Docker needed, data lives on /workspace
Your app
no dev URL bound to this box
Coding agents
○ not signed in yet — run claude and follow the prompt
MCP: hoststack · poststack · filesystem · git · chrome
Ready
dev-services up postgres · redis · meilisearch (+ mysql, mongodb)
dev-runtime add go java · ruby · rust · elixir · dotnet (php is built in)
hoststack services what you have deployed (already authenticated)
hoststack db --help managed databases, and linking one to a service
hoststack-status show this again any time
app-dev:/workspace$ dev-services up
[dev-services] postgres -> localhost:5432 (user dev, no password)
[dev-services] redis -> localhost:6379
[dev-services] meilisearch -> localhost:7700 (no master key, dev env)
app-dev:/workspace$ dev-runtime list
In the image (ready now):
node v24.19.0
bun 1.3.14
python Python 3.12.3
php PHP 8.3.6 (cli) (built: Jul 16 2026 18:30:41) (NTS)
Installable with 'dev-runtime add <name>':
go not installed
java not installed
ruby not installed
rust not installed
elixir not installed
erlang not installed
dotnet not installed
Databases are separate: dev-services {up | up mysql | up mongodb}
app-dev:/workspace$ hoststack-status
HostStack dev box
Backing services — native, in this box
● postgres localhost:5432 user dev, no password
● redis localhost:6379
● meilisearch localhost:7700
Your app
no dev URL bound to this box
Coding agents
● signed in — claude · codex · opencode
MCP: hoststack · poststack · filesystem · git · chrome
Ready
dev-services up postgres · redis · meilisearch (+ mysql, mongodb)
dev-runtime add go java · ruby · rust · elixir · dotnet (php is built in)
hoststack services what you have deployed (already authenticated)
hoststack db --help managed databases, and linking one to a service
hoststack-status show this again any timeWhat is already in it
Preinstalled, not a setup script
The image is built once and pulled per box, so it is there the moment the box is. The one exception is called out below: seven of the language toolchains install on demand, onto the volume.
Coding agents
- claude — Anthropic Claude Code
- codex — OpenAI Codex
- opencode — SST OpenCode
All three on PATH. You bring the subscription or API key; HostStack installs the tools and does not resell model access.
MCP servers, wired into all three
- hoststack — your projects, services, deploys, databases, domains
- poststack — transactional email
- filesystem — scoped to /workspace
- git
- chrome — a real Google Chrome, driven headlessly
Installed globally rather than fetched per launch, so an agent starts them without a cold npm fetch.
Language runtimes
- Built in: Node 24, Bun, Python 3, PHP 8.3 (with composer)
- dev-runtime add go | java | ruby | rust | elixir | erlang | dotnet
On-demand runtimes install into /workspace/.mise, so they survive a container recreate. Between the two lists, every runtime the platform deploys runs in a box.
Databases and search, in the box
- dev-services up — native Postgres 17 (:5432), Redis (:6379), Meilisearch (:7700)
- dev-services up mysql — MariaDB on :3306, speaking the MySQL protocol
- dev-services up mongodb — MongoDB on :27017
Data lives on /workspace, so it survives a restart. MariaDB and MongoDB stay off until you ask, so an unused engine costs you no memory. Four of these — Postgres, Redis, MariaDB and MongoDB — are also managed database engines here. MySQL is a fifth managed engine the box does not carry, and Meilisearch is our managed search product rather than a managed database.
Toolchain
- git, GitHub CLI (gh), tmux, vim, nano, htop
- ripgrep, fzf, jq, build-essential, make, uv
- postgresql-client, redis-tools
- hoststack — the CLI, already authenticated inside the box
The box seeds HOSTSTACK_API_KEY at boot, so `hoststack services` and `hoststack logs` work the moment a shell opens.
There is no Docker daemon inside a box on our hardware today — the runtime that would make an in-box daemon safe is not enabled on the current control plane, which is exactly why dev-services and dev-runtime exist.
How you get in
A terminal in a browser tab, and two ways to script it
The box runs on our infrastructure whether or not anything is attached to it. Start an agent, close the tab, check on it from a phone an hour later.
The browser terminal
Open as many terminal tabs on a box as you want — run an agent in one and git in another. Each tab is a named tmux session on our side, so closing the browser does not kill the shell. Detach, sleep your laptop, come back to the same prompt.
From a phone
Install HostStack as a PWA or just use a mobile browser. A soft-key bar supplies the keys phones lack — Esc, Tab, Ctrl-C/D/Z/R/L, arrows — and the view tracks the on-screen keyboard so the prompt is never hidden. You can paste or upload a file up to 16 MB straight into the box for an agent to read.
The CLI and the MCP server
hoststack dev new, list, create and delete run from your own terminal, including --repo to pre-clone at boot. The same operations are MCP tools, so an agent on your laptop can stand up a box for itself. The interactive shell is the browser one — there is no hoststack dev ssh.
A private URL for what you are building
Every box gets an unguessable URL that proxies to port 3000 inside it. Bind a dev server there and it is reachable; until then the URL serves a "nothing listening" page. The box presets HOST=0.0.0.0 and exports the URL as $HOSTSTACK_DEV_HOST.
Two things you should know before you decide. There is no code editor in the browser — you get a terminal, and inside the box you get vim and nano. And there is no SSH, scp or rsync into a box: code comes in over git, and single files come in through the terminal upload. If your workflow depends on a GUI editor attached over SSH, this is not the product for it yet.
The agents
Sign in once, not once per box
Log an agent in inside a box — claude /login, codex login, opencode auth login — then capture that login back to your account from the Setup tab. It is stored encrypted with AES-256-GCM, never returned by a list endpoint, and decrypted only to seed a box you own. Every box you create after that starts with the agent already authenticated. You can save several accounts per provider and pick which one is the default.
It is a real subscription login rather than a metered key, so the full model menu your plan gives you is the menu you get in the box. If you would rather use a metered key, set ANTHROPIC_API_KEY or OPENAI_API_KEY under Settings → Variables; it is encrypted at rest like every other environment variable and injected into the container on deploy.
Each box also ships Google Chrome, wired into all three agents as the chrome MCP server. There is no display in a box, so this is headless: the agent starts the dev server it just wrote, opens it, screenshots it, reads the console and the network log, clicks through a flow, and records a performance trace. That closes the loop that otherwise ends at "it compiles". Chrome is not started at boot — the first browser tool call launches it, so a session that never browses pays nothing for it.
Chrome's usage statistics, the MCP server's telemetry, and the performance tracer's URL reporting are all disabled image-wide. The pages your agent opens do not leave the box.
What it costs
Two line items, both on the pricing page
A dev box is billed as the private service it is. There is no separate dev-environment plan, no per-seat charge, and no charge for the agents.
A box on our hardware
- Standard box
- 2 GB RAM · 1 vCPU
- 10 GB /workspace volume
- Persistent block storage, billed per GB·month
- Default box €21/mo
Standard is the floor, not a suggestion: below it an agent and a build running together run the box out of memory. Larger sizes are the same ladder every other service uses — see pricing.
A box on your own machine
Enrol a desktop or a spare laptop with a one-line installer and run your boxes on it. A box pinned to your hardware is not charged the size price — you are supplying the CPU and the memory. It costs €3/month per environment for the control plane and the terminal relay, with 1 free per team. Enrol a second machine and the allowance does not double — it is for our side of the wire, which does not care how many machines your boxes are spread across.
Traffic to a box still crosses our edge, so it counts against your team bandwidth allowance exactly like any other service.
An enrolled machine is marked unschedulable for the fleet: placement only ever picks machines we run, so no other tenant's workload is ever put on yours. Nothing lands on it unless your team pins it there.
Power a box down from the dashboard and the container is stopped: terminal sessions and anything running in them end, the memory goes back to the host, and /workspace is retained. Resume re-runs it on its existing image in seconds. To be plain about it — powering down frees the machine, not the invoice line. A provisioned box is billed until you delete it.
Bring an existing project
Code gets in over git
Pick a repo when you create the box and it is cloned before your first shell opens.
A box is created from one of three sources: a repo on your connected GitHub account, any https:// clone URL, or nothing at all. Pick one in Development → New, or from your own terminal:
# From a public or credentialed https clone URL
hoststack dev new --repo https://github.com/you/your-app.git
# Or a blank box, then clone whatever you like from inside it
hoststack dev new --name scratchFor a private repo that only speaks SSH, start a blank box and set the key up inside it. ~/.ssh is a symlink onto the /workspace volume, so a key you generate there survives every restart and redeploy — as does your git identity, your shell history and node_modules.
Databases come across two ways. Tick Postgres, Redis or Meilisearch when you create the box and you get fresh managed companions with DATABASE_URL, REDIS_* and MEILI_* injected into the container. Or run the engines inside the box with dev-services up and keep the data on /workspace, which is the closer analogue of the docker compose stack you probably run locally.
What does not work yet:
- No
rsync,scpor SSH into a box. There is no sshd in the image. - No workspace import. You cannot upload a tarball of your local working directory and unpack it — clone the repo instead.
- Terminal upload is one file at a time, up to 16 MB. It is meant for handing an agent a screenshot or a log, not for moving a project.
- Nothing seeds your dotfiles. Only
/workspacepersists, so put anything you want to keep there and source it from your shell. - GitLab, Bitbucket and Codeberg are first-class sources for a deployed service but not yet for a dev box — use an
https://clone URL.
Move your dev environment — the migration guide · Full dev environment documentation
Dev box questions
What the box contains, what it costs, and what it cannot do.
What is a HostStack dev box?
A private service running our dev-env image: an Ubuntu 24.04 container with Claude Code, OpenAI Codex and OpenCode preinstalled, five MCP servers wired into all three, and a 10 GB /workspace volume that survives restarts. You open a terminal on it from the dashboard, or from a phone. Boxes start at the Standard size — €20/month for 2 GB RAM and 1 vCPU, plus €1/month for the volume.
Do I need my own AI subscription to use a dev box?
Yes. We install the agents; we do not resell model access. Log in once inside a box and capture that login back to your account — it is stored encrypted with AES-256-GCM and seeded into every box you create afterwards, so you never sign in twice. If you would rather use a metered API key, set ANTHROPIC_API_KEY or OPENAI_API_KEY under Settings → Variables on the box: it is stored on our side encrypted at rest, like every other environment variable, and injected into the container on deploy.
Can I run Postgres and Redis inside a dev box?
Yes. `dev-services up` starts native Postgres 17, Redis and Meilisearch inside the box with their data on the persistent /workspace volume; MariaDB and MongoDB are one command further and stay off until you ask. That set overlaps with our managed one without matching it: Postgres, Redis, MariaDB and MongoDB are also managed database engines here, MySQL is a managed engine the box does not carry (MariaDB speaks its protocol), and Meilisearch is our managed search product rather than a database. You can also attach fresh managed companions when you create the box and get DATABASE_URL, REDIS_* and MEILI_* injected for you.
Is there a code editor in the browser?
No. You get a terminal — xterm with tmux-backed tabs so a shell outlives the browser, a soft-key bar for phones, and file upload up to 16 MB — plus vim and nano inside the box. There is also no SSH, scp or rsync into a box: code comes in over git. If your workflow depends on a GUI editor attached over SSH, a dev box is not the right tool for it yet.
Can I run a dev box on my own machine?
Yes. Enrol a desktop or a spare laptop with a one-line installer and pin boxes to it. A box on your hardware is not charged the size price, because you are supplying the CPU and the memory — it costs €3/month per environment for the control plane and the terminal relay, and the first one is free. Traffic still crosses our edge, so it counts against your team bandwidth allowance exactly like any other service. An enrolled machine is unschedulable for the rest of the fleet — placement only ever picks nodes we run (server.service.ts:127-137), so nothing lands on your machine unless your team pins it there.
Open a terminal in the EU
Sign up, pick a repo or start blank, and the box is provisioning before you have finished naming it.