Skip to content
hoststack/dev-env

A cloud dev box your coding agents already live in

Claude Code, Codex and OpenCode are on PATH the moment the box boots, with the databases, the browser and the CLI they need already wired in. You open it in a browser tab — on a laptop or on your phone, on our hardware or on a machine you already own.

  • claudeClaude Code
  • codexOpenAI Codex
  • opencodeOpenCode

mcp: hoststack · poststack · filesystem · git · chrome

From €20/month, or €3/month on hardware you already own — the first one free. Bring your own agent subscription; we install the agents, we do not resell the models.

Eight seconds in a box

This is the actual terminal output

The workspace screen, reduced to a diagram, replaying two real recordings — switch the device and the hardware without the terminal changing.

Running on HostStack compute in the EU. The box is up whether or not anything is attached to it, so an agent you start from a laptop keeps working after you shut the lid, and the same session is there when you open the tab on a phone. Flip the switch above to put the identical box on hardware you own instead.

  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 time
Two real recordings, time-compressed into one session: the opening screen from image 20260809b (built 2026-08-09), then the same screen on a live box with the services up and the agents signed in. Every line is captured stdout, unedited, re-coloured with the box’s own escape codes. Cut from it: the identity and build lines, and the agent’s own session. The workspace around the terminal is a reduced diagram. The two switches change the workspace around the terminal and never the terminal: both recordings were taken on a desktop, on a box on our own compute, and a box on a machine you enrol runs the same image.
Getting started

Three steps to a box you can type in

Everything the box needs is in the image already. What is left is choosing what code goes in it.

  1. Pick a repo, or nothing at all

    Three sources: a repo on your connected GitHub account, any https:// clone URL, or blank. Whichever you pick is cloned before your first shell opens.

  2. Open the terminal and type claude

    All three agents are already on PATH — nothing to install, nothing to configure. Sign one in once and capture that login to your account; every box you make afterwards starts authenticated.

  3. Let it run the whole loop

    dev-services up brings Postgres and Redis up in the box, the private dev URL serves whatever the agent starts, and the hoststack CLI is already signed in — so the agent that wrote it can deploy it.

In the dashboard that is Development → New. From your own terminal it is one command — and the same operations are MCP tools, so an agent on your laptop can stand a box up for itself.

bash
# Clone a repo into a new box as it boots
hoststack dev new --repo https://github.com/you/your-app.git

# Or a blank box, and clone whatever you like from inside it
hoststack dev new --name scratch

Full dev environment documentation

What 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. Seven of the language toolchains are the exception — they 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; we install the tools and do 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 cold-start free.

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 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 for them, so an engine you do not use costs you no memory.

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, 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.

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 already authenticated.

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. Prefer a metered key? Set ANTHROPIC_API_KEY or OPENAI_API_KEY under Settings → Variables, encrypted at rest like every other environment variable.

Each box also ships Google Chrome, wired into all three agents as the chrome MCP server. It is headless — there is no display in a box — and it closes the loop that otherwise ends at "it compiles": the agent starts the dev server it just wrote, opens it, screenshots it, reads the console and the network log, clicks through a flow. Chrome is not started at boot, so a session that never browses pays nothing for it, and its usage statistics, the MCP server's telemetry and the performance tracer's URL reporting are disabled image-wide. The pages your agent opens do not leave the box.

Where it runs
Recommended for dev

If you already own a machine, develop on that one

A desktop, a spare laptop, a NUC under the TV or a server in the rack. You are supplying the CPU and the memory, so there is no size price — €3/month per environment for the control plane and the terminal relay, with 1 free per team.

Enrolling it is one command

Name the machine under Settings → Machines and it hands you the line below with a single-use token already in it. From then on the machine is a placement target your team can pin boxes to.

bash
# Settings → Machines mints this with a 15-minute pairing token
curl -fsSL https://hoststack.dev/api/agents/install.sh | sudo HOSTSTACK_PAIRING_TOKEN=… bash
  • Linux on x86-64, with Docker installed and running. WSL2 counts.
  • Windows works through Docker Desktop in Linux-container mode; on macOS you run it inside a Multipass VM.
  • Apple Silicon and ARM boards are not supported — the images are amd64.
  • One line, run as root. Nothing listens: the agent dials out to us.

What you get

  • The dev URL still works from anywhere — requests come down the machine’s own outbound connection, so there is no port to open and no fixed IP to have.
  • The same image, the same agents, the same dev-services. A box does not know which hardware it is on.
  • Your machine is marked unschedulable for our fleet, so no other tenant’s workload is ever placed on it.
  • Move a box between our hardware and yours after the fact — it is not a decision you are stuck with.

What you accept

  • The box runs only while the machine does, and /workspace lives on that machine’s disk — one SSD, not replicated storage. Volume backups are on by default for exactly that reason.
  • Nothing pages you when the machine drops off. A HostStack box is the always-on one.
  • The agent container is privileged and mounts the Docker socket, which is root-equivalent on that machine.
  • A captured agent login lives on one machine at a time, so splitting boxes across both leaves one side signed out.
What it costs

Two line items, both on the pricing page

A dev box is a private service, so it provisions, scales, suspends and bills like every other service on the platform. No separate dev-environment plan, no per-seat charge, no charge for the agents.

A box on our hardware

Standard box
€20/mo
2 GB RAM · 1 vCPU
10 GB /workspace volume
€1/mo
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

Any size box, on hardware you own
€3/mo
Per environment, not per machine · first 1 free per team
Compute
€0
You are supplying the CPU and the memory

The fee is for our side of the wire — the control plane and the terminal relay — which does not care how many machines your boxes are spread across, so a second machine does not double the allowance. Traffic to a box still crosses our edge, so it counts against your team bandwidth allowance exactly like any other service.

Power a box down and the container stops: running sessions end, the memory goes back to the host, /workspace is kept, and Resume re-runs it 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

What it takes to move a project in

Code gets in over git. Here is the rest of it — the private repo, the databases, and the five things that do not work yet.

For 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 — as does your git identity, your shell history and node_modules.

Databases come across either way — tick Postgres, Redis or Meilisearch at create time for managed companions with DATABASE_URL, REDIS_* and MEILI_* injected, or run them in the box with dev-services up.

What does not work yet:

  • No rsync, scp or SSH into a box. There is no sshd in the image.
  • No code editor in the browser. You get a terminal, and inside the box vim and nano. If your workflow is a GUI editor attached over SSH, this is not the product for it yet.
  • No bulk file transfer. Terminal upload is one file at a time, up to 16 MB — meant for handing an agent a screenshot or a log. To move a working directory, clone the repo.
  • Nothing seeds your dotfiles. Only /workspace persists, so put what 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.

Essential cookies only — for login sessions. No tracking. Details