lea runs Claude Code agents side by side in an isolated container. They see one projects directory, reach the internet through a proxy, and never touch your SSH keys, your credentials or your private network. You drive them all from one terminal deck.
curl -fsSL https://leadeck.dev/install.sh | sh
then run lea · read the docs · Apache 2.0
Agents get more done when you stop approving every command. lea makes that safe to do, and makes several of them at once easy to follow.
Your agents in a column, the selected one's terminal next to it. Each row shows its state, its context use, its branch and its own report on its task. Close the terminal: they keep working.
A container that sees your projects directory and a read-only slice of ~/.claude. Nothing
else: no home directory, no SSH keys, no cloud credentials, no Docker socket.
Egress goes through lea's proxy: public HTTPS yes, your LAN and link-local addresses no. SSH reaches only the git endpoints you list, with lea's own key.
A permission request shows on the agent's row. Press a to allow, d to deny, space to jump to the next agent that needs you. A sound tells you when.
make test and docker run work: agents get their own rootless Podman inside lea,
under seccomp and, on Linux, AppArmor.
A lead agent spawns devs and reviewers through MCP. Agents message each other, report progress and lease the files they edit. You stay in charge of roles.
The boundary is the container, not a prompt. Even a prompt-injected agent with every permission granted works inside these walls.
~/projects: your projects directory, read/write~/.claude allow-list: settings, skills, agents, hooks, read-only~/.ssh, ~/.aws, ~/.kube and the rest of your homeWhen the last session closes, lea reports changes to git hooks, risky git
configuration, .mcp.json and .claude/ settings, the files your host tools would run.
One keyboard-first terminal for every agent. The mouse works too.
╭─ lea ──────────── 3 agents ─╮│ │›▍⠹ fix login timeout 42% ││ ✻ Claude Code │ shop · fix/login · 2m ││ │ ▍● review cart api 18% ││ > the timeout is set in session.go… │ reviewer · shop · now ││ │ ▍● add dark mode 7% ││ │ shop · needs you ││ ╰─ n new · m msg · ? keys ────╯│
Needs Docker (Engine on Linux, Desktop elsewhere), curl, tar,
ssh-keygen, and a Claude subscription or API key. lea never runs sudo, except once
to install its AppArmor profile on Linux hosts that use it.
~/.local/bin/lea and asks for your projects directory.
curl -fsSL https://leadeck.dev/install.sh | shlea. In the first agent, type /login once. Press
n for the next agent.~/.config/lea/lea.conf, rerun
lea init, add the printed key to your forge. HTTPS works out of the box.No. lea runs the real Claude Code, with your own settings, skills and plugins. It gives it a safe place to run and a deck to run several at once.
--dangerously-skip-permissions?On your host, that flag gives an agent everything your user can reach: keys, tokens, your network. In lea the agent can still go fast, but what it can reach is fixed by the container and the proxy.
A devcontainer isolates a toolchain; lea isolates the agent. It adds an egress proxy that refuses private networks, keeps your credentials out, nests its own container engine, audits risky changes on exit and gives you a deck to drive many agents.
Only the way Claude Code already sends it: to the Claude API. lea has no server and no account, and sends
no telemetry of its own. Claude Code's usage metrics go nowhere unless you point
LEA_OTEL_UPSTREAM at your own OTLP collector.
Yes, through WSL2: install and run lea from your WSL distribution, with Docker Desktop.
lea is free and open source under Apache 2.0. You bring your Claude subscription or API key.