All guides

Six CLI Coding Agents on microVMs, Compared

How six terminal coding agents actually differ — runtime, install, auth, and which support headless fleet dispatch. Picked from the adapters that install them.

Six of the agent runtimes jurniti hosts are terminal-first coding agents: Aider, Amp, Cline, Gemini CLI, GitHub Copilot CLI, and OpenHands. They look interchangeable in a feature list, and most comparisons of them are interchangeable too.

They are not actually that similar underneath. Here is what differs, taken from the adapters that install them rather than from anyone's landing page.

What actually differs

AgentRuntimeAuth shapejurniti run fan-out
AiderPython 3.12 via uv, version-pinnedProvider key in the env (OPENAI_API_KEY, ANTHROPIC_API_KEY)No
AmpStandalone installer (Sourcegraph)Sign in to an ampcode.com accountNo
ClineNode via nvm, version-pinnedcline auth — interactive sign-inNo
Gemini CLINode via nvm, version-pinnedGoogle login or GEMINI_API_KEYNo
Copilot CLINode via nvm, version-pinnedGitHub account sign-inNo
OpenHandsStandalone installerLLM_API_KEY + LLM_MODEL in the envNo

Three things fall out of that table that a feature list would hide.

The runtime split is the real fork. Three of the six are Node packages that need nvm on the box, one is a Python tool that wants uv, and two ship their own installer. That is invisible until you try to run two of them side by side on one machine and discover you are maintaining two language toolchains for two agents. One microVM per agent makes the question disappear — which is the actual argument for per-agent isolation, more than the security story people usually lead with.

The auth shape splits them, and not where you'd guess. Aider and OpenHands take a provider key you export in the shell — BYOK in the plain sense, working the moment the key is in the environment. Amp, Cline, and Copilot CLI want an interactive sign-in to their service from inside the box. Gemini CLI does either: Google login, or a GEMINI_API_KEY if you'd rather not log in.

That distinction matters more on a remote VM than on your laptop. A sign-in agent needs a real terminal to complete its login flow — which is fine here, since every box ships one, but it does mean the setup is "open the terminal and authenticate," not "paste one env var and go."

None of the six support jurniti run fan-out. Several can run a single task headlessly on their own — OpenHands ships a headless task mode, for instance. What they don't expose is the headless run script jurniti needs to dispatch one brief across a whole group of workers, and today only Claude Code, Codex, Hermes, and OpenClaw do. You can boot fifty microVMs running Aider; you cannot hand all fifty the same brief with one command. If fan-out is the point, pick from those four instead — worth knowing before you buy, not after.

Where a microVM earns its keep

All six share one property: they execute shell commands the model chose. That is the whole value and the whole risk — and it is not hypothetical. The widely-reported October 2025 case involved Claude Code (not one of the six): asked to rebuild a project, it ran rm -rf starting from / and wiped every user-owned file on the machine. Nothing about these six makes them structurally safer; they run the same kind of commands.

The usual mitigations are weaker than they sound. A container shares a kernel with its neighbours. A laptop hands the agent your SSH keys, browser sessions, and everything else in your home directory. Sandboxing inside the same machine still leaves the machine.

A Firecracker microVM is a different boundary: its own kernel, a KVM hardware line, one tenant per box. A destructive command stays inside a machine you can rebuild in about 124ms of boot time. And because the box is always on, a long refactor keeps running when you shut your laptop — which, in practice, is why most people move an agent off their desk in the first place.

Picking one

Skip the feature grid; decide on two questions.

Do you want a pair programmer or an autonomous worker? Aider is explicitly a pair programmer — it edits, commits to git, and hands control back. OpenHands leans autonomous: give it a task and it plans multi-step work. Cline and Amp sit between. Copilot CLI and Gemini CLI are closest to "a good shell assistant that can edit files."

Whose account do you already have? This decides more than it should. If your code is on GitHub, Copilot CLI's auth is already solved. If you're on Google's models, Gemini CLI takes the key you have. If you want to stay provider-agnostic and pay per token to whoever is cheapest this month, Aider and OpenHands are the honest picks — they're the two that read a plain provider key out of the environment and never ask you to hold an account with the agent's vendor.

Each has its own page with the specifics: Aider hosting, Amp Code hosting, Cline hosting, Gemini CLI hosting, GitHub Copilot CLI hosting, and OpenHands hosting.

Running one

Every plan is a real microVM with a persistent home directory, an in-browser terminal, and BYOK for whatever provider the agent supports. Starter is $25/mo — 1 vCPU and 2 GiB, which is enough for all six, since a terminal coding agent spends its time waiting on the model, not on local compute. Annual is $250 and includes two months free. Every plan carries a 30-day money-back guarantee on your first purchase.

Pick the agent, pay, and the box boots with it already installed — no setup call, no human in the loop. Paste your key in the terminal and it's working a couple of minutes later.

If you'd rather compare the isolation model itself, that's microVMs vs Docker for AI agents.

Frequently asked questions

Which CLI coding agent should I pick?
If you want git-native, minimal, and Python-based: Aider. If you already live in GitHub: Copilot CLI. If you want Google's models first-class: Gemini CLI. If you want an autonomous agent that plans multi-step work rather than pairing: OpenHands. Cline and Amp sit between — editor-adjacent agents that also work as plain terminal CLIs. The honest answer is that they overlap heavily, so pick on runtime and auth (below), not on marketing.
Can I dispatch one prompt to a fleet of these agents at once?
Not for these six. Some can run a single task headlessly on their own, but `jurniti run` fan-out needs the harness to expose a headless run script, and today only Claude Code, Codex, Hermes, and OpenClaw do. You can run many microVMs here, but you drive each one yourself. This is a real limitation, not a roadmap tease.
Do these need my own API key?
Yes — jurniti is BYOK for all of them, and the key never leaves your microVM. The auth SHAPE differs though: Aider and OpenHands take a provider API key in the environment, while Amp, Cline, and Copilot CLI want you to sign in to their own account from inside the VM. Gemini CLI does either.
Why a microVM instead of Docker for a coding agent?
Every one of these runs real shell commands the model chose. A shared-kernel container puts your neighbour's kernel bugs in your blast radius; a laptop puts your SSH keys and browser sessions in the agent's reach. A Firecracker microVM is one tenant per box with a KVM hardware boundary — the same primitive AWS uses for Lambda.
What does it cost?
All six run on Starter — $25/mo, or $250/year with two months free — and every plan carries a 30-day money-back guarantee on first purchase. Model spend is billed by your provider directly and never marked up.