← All posts

Stop Rebuilding Your Dev Environment: Use an xshellz.box Manifest to Pin Your Stack

July 26, 2026 · 2 min read · The xShellz Team

Think of an xshellz.box manifest like a shopping list for your cloud computer. Instead of installing your favorite editor, linters, and language runtimes by hand over and over, you write them down once. Every time the box boots, it reads the list and sets up the exact same environment. No drift, no forgotten tools.

Your environment as a file

Every xshellz.box already comes with git, Node 22, Python 3, ripgrep, tmux, build-essential, and several coding agents (Claude Code, Codex, Gemini CLI, and borg). Your manifest adds the extra packages you always reach for. It is a plain text file named xshellz.box in your home directory, one package per line. Prefix with apt:, pip:, or npm: to pull from those registries; a bare name means apt.

A manifest for a JavaScript developer who also writes Python tests might look like this:

# ~/xshellz.box
apt:curl
apt:jq
pip:ruff
pip:pytest
npm:eslint
npm:prettier

On the next boot the box will install curl, jq, ruff, pytest, eslint, and prettier automatically. Because the root filesystem is ephemeral, every boot starts clean. The manifest is the single source of truth that rebuilds your toolchain each time.

Applying the manifest

First, get a box. The free tier is always-on and never idle-stopped. Sign up and you will have connection details for your own hardened Ubuntu 24.04 instance.

SSH in or open the browser web terminal, then create the manifest:

cat > ~/xshellz.box << 'EOF'
apt:curl
apt:jq
pip:ruff
npm:eslint
EOF

Now reboot. The box will reinstall everything from the manifest on the way up. After that, which eslint or ruff --version confirms the tools are ready. If you ever add a new line, another reboot picks it up. Since /home survives reboots, dotfiles and project repos you place there stay put.

The same approach works for ephemeral boxes spun up through the SDK. Ship the manifest alongside your code and every throwaway sandbox starts with the exact tooling your scripts expect.

Why this matters for AI agents

If you hand a coding agent like borg or Claude Code a fresh box, it can immediately use your preferred linters, test runners, and formatters because the manifest pre-stages them. No context window spent telling the agent to apt install something. The environment is consistent whether the agent runs a one-shot task or a long session. And when you connect the box as an MCP server into Claude Code (claude mcp add xshellz -- ssh -p <port> agent@<host> xshellz-mcp), that same toolchain is available server-side.

The limit (and what to do about it)

The manifest only handles packages from apt, pip, and npm. It does not manage dotfiles, environment variables, or system services. Combine it with a dotfiles repo or a script in /home for those pieces, and you have a complete, reproducible development environment that follows you to every box you spin up.