It's my industrial-strength hair dryer — and it works

Claude Code, in a box.

Run Claude Code at full permissions inside a locked-down Docker container. An iptables firewall blocks everything except the handful of domains it actually needs. Your code stays on the host. Your databases stay unreachable. The Schwartz stays strong.

◆ macOS & Linux ◆ No Docker Desktop ◆ Claude or Codex ◆ MIT licensed

Skip permissions is fast. It's also how you wake up to a dropped table.

--dangerously-skip-permissions makes Claude Code fly. But an agent running unattended on your laptop can reach your production database, read every .env you own, push to any remote, and phone home to anywhere. "It probably won't" is not a security model.

🔥

The naive way

YOLO mode on the host. Full network. Full filesystem. One confidently-wrong command away from a very bad afternoon.

🐢

The paranoid way

Approve every tool call by hand. Safe, but you've turned a tireless agent back into a very expensive autocomplete.

🎩

The Mister Claude way

Let him run wild — inside a sealed room. The container is the boundary; the firewall is the lock. He can't reach what isn't there.

Prepare ship for Ludicrous Speed

One install script, one API key, one command. First run builds the image (~2 min); after that he's ready in about five seconds.

your-mac — zsh
# 1 · Install (drops mrc into ~/.local/bin) $ curl -fsSL https://aisaacs.github.io/mrc/install.sh | bash # 2 · Point it at an Anthropic API key (or use a .env / 1Password) $ export ANTHROPIC_API_KEY="sk-ant-..." # 3 · Launch against any repo $ mrc ~/projects/myapp ◎ Mr. Radar is scanning the environment... ✓ Radar locked. __ __ ____ ____ _ _ | \/ | _ \ . / ___|| | __ _ _ _ __| | ___ | |\/| | |_) | | | | |/ _` | | | |/ _` |/ _ \ | | | | _ < | |___| | (_| | |_| | (_| | __/ |_| |_|_| \_\ \____|_|\__,_|\__,_|\__,_|\___| ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ → Repo: /Users/you/projects/myapp → Volume: mrc-config-a1b2c3d4e5f6 → Schwartz: Anthropic engaged → Clipboard: the Schwartz can see your clipboard → Notify: the Schwartz will alert you when ready → Firewall: jammed (just like their radar)

Prefer source? git clone the repo and symlink mrc.js — see the installation docs. Requires Node.js 22+, Docker CLI, and Colima.

Three moving parts. Total isolation.

1

You run mrc ~/your/repo

The Node.js launcher auto-starts Colima, builds a Docker image stamped with your UID/GID, discovers your .sandboxignore files, spins up in-process clipboard & notification proxies, and boots the container with your repo bind-mounted at /workspace.

2

The firewall jams their radar

Inside the container, iptables sets a default-DROP policy and an ipset allowlist. Only a few domains resolve. IPv6 is blocked. Host services — Postgres, Redis, that staging box — are unreachable. It verifies the lock by confirming example.com is dead.

3

Claude runs with the gloves off

--dangerously-skip-permissions is perfectly safe here, because the container is the sandbox. He installs packages, runs tests, rewrites files — and VS Code on your host sees every change instantly through the bind mount.

He can only reach five doors. Everything else is a wall.

The allowlist is resolved to IPs at boot and pinned in an ipset. Outbound traffic to anything else gets an immediate REJECT — fast feedback, no hanging sockets.

✓ api.anthropic.com
✓ api.openai.com
✓ registry.npmjs.org
✓ sentry.io
✓ statsig.com
🎩
default
DROP
✕ your-db.rds.amazonaws.com
✕ localhost:5432 (Postgres)
✕ 169.254.169.254 (metadata)
✕ everything on IPv6
✕ the entire rest of the internet
Need the open web?

Pass --web (or set it in .mrcrc) to open outbound HTTPS for web search and fetch — while every other restriction stays in place. Add your own private registries by editing one loop in init-firewall.sh.

All the bleeps, the sweeps, and the creeps

🛡️

iptables firewall

Default-DROP policy, ipset allowlist, IPv6 blocked, host services sealed off. Verified at every boot.

security
🤖

Claude or Codex

Run Claude Code by default, or --agent codex for OpenAI's CLI. Both get their own persistent config volume.

multi-agent
📋

Clipboard bridge

Paste images straight into Claude. An in-process TCP proxy serves your host clipboard — no socat, no external deps.

built-in
🔔

Desktop notifications

Native macOS/Linux pings when Claude finishes, with repo name and a one-line summary. Work elsewhere; he taps your shoulder.

built-in
💾

Session management

Auto-resume, named sessions, an arrow-key picker, AI-generated names & summaries, and tool-miss detection on exit.

sessions
🕶️

.sandboxignore

Recursive, like .gitignore. Listed files appear empty; listed directories appear as empty dirs. He doesn't know what he's missing.

security
📊

Context status line

A live bar showing context-window usage plus 5-hour and 7-day rate-limit gauges, color-coded as you approach compaction.

visibility
⚙️

.mrcrc config

Global defaults in ~/.mrcrc, per-repo overrides in <repo>/.mrcrc. One flag per line. CLI always wins.

ergonomics
👯

Multi-instance

Run several sessions against one repo. Each gets its own config volume and dynamically allocated proxy ports. No collisions.

scale
🧠

Project-local memory

Conversation history and memory live in .mrc/ inside the repo — survives volume resets, travels with the project.

sessions
👻

Daemon & JSON modes

--daemon runs detached and prints a container ID; --json streams stream-json for scripting and CI.

automation
🚀

Smart Colima sizing

Defaults the VM to all your cores and half your RAM (8 GB floor). Override with --colima-cpu / --colima-memory.

performance

Don't run one agent. Command a team.

Mister Claude can run a whole team of agents — an architect, engineers, a critic, an adversary — each sealed in its own container behind the same firewall, addressing each other by @mention. You steer from a web dashboard or your phone. They propose; you steer; you commit. The crew works; you stay in command.

🤝

Agent teams

Declare a roster (or pick a preset) and mrc team up. Each member boots in its own sandbox with its own write territory, so they never clobber each other's files. They collaborate by @mention; a critic reviews risky work; you commit.

orchestration
🖥️

Live dashboard

One local web app for the whole org: every team room, the @you inbox, live transcripts. Watch, steer or pause any member, suspend a project and resume it later — each member picks up its own conversation. Built in, no extra service.

built-in
📱

Telegram to your phone

Link a bot and the team's questions and updates push to your phone with stable #ids. Reply from Telegram and it routes back to the right agent. A quick BotFather + Confirm to link, then you're set.

remote
1

Declare the crew

A team.json roster, a ready-made preset, or build one in the dashboard.

2

mrc team up

Every member boots in its own sealed container — you accept each one in.

3

Steer & ship

They collaborate by @mention; you direct from the leads room and commit the work. Close a tab to suspend; reopen to resume.

You stay in command

You're always in the loop — by design. Members can't overwrite each other's files or reach the open internet, a critic reviews the work, and you commit every change. That's not friction; it's how a team moves fast without you waking up to a dropped table.

It's genuinely nice to look at

The status line

Pinned to the bottom of every session. Green under 60%, amber from 60–76%, red past 77% — because Claude reserves ~15% for compaction.

claude — statusline
[█████████░░░░░░░░░░░] 49% context · 5h 12% │ 7d 7% · add-context-progress-bar

Who's running where

mrc status sweeps every repo and shows live containers with uptime and flags — no API key required.

mrc status
🎩 Active Mr. Claude Sessions ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ → myapp · up 1h 12m /Users/you/projects/myapp [a1b2c3d4e5f6] → infra-tools · up 23m (--web) /Users/you/work/infra-tools [9f8e7d6c5b4a]

Pick up where you left off

An arrow-key picker over named, auto-summarized sessions. Reopening a repo resumes the last one automatically.

mrc pick
🎩 Choose your adventure, Lone Starr: ▸ 1 add-context-progress-bar 2h ago · added a 20-char usage bar to the statusline 2 fix-clipboard-targets yesterday · verified image/* MIME types over TCP 3 colima-autosizing 3d ago · detect host cores + half RAM for the VM + start a new conversation ↑/↓ move · ↵ open · q quit
"God willing, we'll all meet again in Spaceballs 2: The Search for More Money."
— Yogurt

Ready when you are, Lone Starr.

Seal the room, hand over the keys, and let Claude actually work.