Show HN: Hoop – A sandboxed P2P live collaboration harness for Claude Code Hoop, a sandboxed P2P live collaboration harness for Claude Code, is now available as an open-source plugin that runs entirely in Docker containers, requiring no host installation of Claude Code or Node.js. The tool provides an interactive setup wizard, a local web dashboard with live sessions and event search, and ships its own Claude binary with a separate account, enabling collaboration on bare machines with just Docker. Creator Bruno de Queiroz designed Hoop to install, document, and observe third-party MCPs and skills without re-implementing them, supporting features like memory, code-graph RAG, and observability. hoop-showcase.mp4 Being alone is not a requirement. A sandboxed and web harness on top of Claude Code. Two deliverables in one install: — an interactive wizard that wires a curated stack memory, code-graph RAG, automation, platform MCPs, docs RAG, observability, design, second-brain . /hoop:setup — a containerized local web dashboard Next.js, /hoop:dashboard http://localhost:7842/ http://localhost:7842/ with live sessions, a skill browser with one-click triggers, a nested sub-agent tree, push-based event observability, and BM25 + optional semantic search across all events. The plugin does not re-implement any of the third-party MCPs or skills it installs. It picks, installs, documents, and observes them. There are two ways in. Pick the one that matches your host. /plugin marketplace add bruno-de-queiroz/hoop /plugin install hoop@hoop-marketplace /plugin list /reload-plugins /hoop:setup The /plugin list + /reload-plugins dance is required on Claude Code v2.1.138 to activate a freshly pre-seeded plugin in the current session. New sessions don't need it. You do not need Claude Code or even Node installed on the host. The sandbox ships its own claude binary and authenticates with its own Claude account, so a bare machine with Docker is enough. Prerequisites Docker — Docker Desktop, or any Docker engine + Compose v2 docker compose . This is the only hard dependency for hoop start — Claude Code, Node, gh, uv, gws, and the dashboard all live in containers, never on your host, and the sandbox seeds its own Claude profile on boot so hoop start needs no host jq . A few other subcommands do shell out to small host tools — see the optional list below. git and bash — to clone the repo and run the CLI. A web browser you can reach — for the one-time login approval. It does not have to be on the same machine; you just need to open a URL and copy a code back see step 4 . Handy for headless servers. A Claude account with an active plan Pro / Max / Team / Enterprise that can sign in via /login . jq needed by some subcommands, not — hoop start required by hoop setup and hoop logout , which edit JSON on the host the wizard reads your gh/Claude identity into profile.md ; logout rewrites the sandbox credentials . hoop open uses it too but degrades with a warning if it's absent. Install: macOS brew install jq ; Debian/Ubuntu sudo apt-get install -y jq . curl optional — never strictly required — used by hoop setup to probe Docker Model Runner and by the dashboard health-wait; both fall back to a bash /dev/tcp probe when it's missing. Install: brew install curl / sudo apt-get install -y curl . awk needed only for — required by hoop mount hoop mount add / remove to rewrite the mounts list; unused by every other command. Docker Model Runner optional — for semantic-search embeddings. hoop setup enables it Docker Desktop AI, or the docker-model-plugin on Docker Engine and appends the embedding model to the compose stack via Compose's models: element Docker Compose v2.38+ , so hoop start auto-pulls it and wires the endpoint into the sandbox. If DMR is ever unreachable — or Compose is older than v2.38 — hoop start transparently drops the override and falls back to BM25 rather than failing. Skippable — Ollama, OpenAI, or a custom OpenAI-compatible endpoint also work. Run hoop doctor at any time to verify the host has everything and see how close you are to a clean Docker-only setup. Steps 1. Clone and enter the repo git clone https://github.com/bruno-de-queiroz/hoop && cd hoop 2. optional Put hoop on your PATH + shell completion. Skip this and prefix every command with ./plugins/hoop/cli/hoop.sh instead. ./plugins/hoop/cli/hoop.sh install then open a new shell so hoop resolves 3. Bring up the whole stack. The FIRST run builds both images a few minutes ; later starts are fast. Serves the dashboard at http://localhost:7842/. hoop start 4. optional Configure your stack interactively — memory, code-graph RAG, platform MCPs, docs RAG, semantic search, observability, second-brain, etc. This is the /hoop:setup wizard, native to the CLI needs no host Claude Code . hoop setup 5. One-time: authenticate the sandbox with its OWN Claude account. Drops you into claude inside the sandbox — type /login, open the printed URL in your browser, approve, paste the code back, then /exit. hoop login Then open http://localhost:7842/ . Because the dashboard only trusts localhost, your browser is recognized as the host automatically — the access token is minted for you, nothing to paste. Remote access is deliberately gated; see Architecture architecture . That's the full loop: hoop start → hoop setup optional → hoop login → open the dashboard. A few notes for the standalone path: Configure your stack with This is the interactive wizard memory, code-graph RAG, automation, platform MCPs, docs RAG, semantic search, observability, design, second-brain, telemetry isolation — the same one behind hoop setup . /hoop:setup , but native to the CLI so it needs no host Claude Code. It runs before hoop login writing MCP config needs no auth . For one-off additions later, hoop add mcp/plugin/skill see the CLI cli-hoop table persists into the sandbox profile across rebuilds. Terminal-only? hoop open runs an interactive claude in a throwaway sandbox over your current directory — no dashboard, no browser needed after login. Updating: git pull then hoop rebuild picks up new code into both images. Signing out / switching accounts: hoop logout clears the sandbox's Claude login so a different account can hoop login . hoop setup or /hoop:setup , which points you to it walks you through these steps with one consent at the top, then installs each pick — auto-runnable and secret-taking MCPs run immediately every command printed first ; browser-login, plugin-marketplace, and host-CLI options are printed as guided steps to finish yourself: | | Step | Pick | |---|---|---| | 1 | Consent | Y / N | | 2 | Detect prior state | read-only | | 3 | Memory | claude-mem installed automatically — no choice | | 4 | Code-graph RAG if you code | Serena / claude-context / code-graph-mcp / Cognee / skip | | 5 | Automation | n8n-mcp yes / no | | 6 | Platform MCPs | multi-select: Atlassian, Google Workspace, GitHub, incident.io, Slack | | 7 | Docs RAG | Context7 yes / no | | 8 | Observability | Sentry / Datadog multi-select | | 9 | Design | Excalidraw yes / no | | 10 | Second-brain | Obsidian 3 flavors / Notion 2 / Logseq / NotebookLM | | 11 | Sign-ins | Claude Code /login , then gh device flow + any queued MCP OAuth — all inside the sandbox | Each run appends to the sandbox profile's ~/.claude/hoop/sandbox/profile/.claude/hoop/install-log.md also viewable from the dashboard so re-runs are auditable. Secrets never reach the log — they go straight to claude mcp add -e or the 0600 ~/.claude/hoop/hoop.env . /hoop:dashboard or start | stop | restart | rebuild | status | logs runs the dashboard inside a container . Your host only needs Docker Desktop — no Node, no npm install , no Next.js build pollution. Each verb takes an optional service target all default · sandbox · dashboard ; start builds lazily only when an image is missing while rebuild always rebuilds. Pairing inviting a teammate to co-drive a session uses cloudflared to expose the local dashboard over a public tunnel — it's baked into the dashboard image , so nothing to install on the host. The dashboard runs fine without pairing; only share links start a tunnel. Five panels: Sessions — fs.watch on ~/.claude/sessions/ ; updates in real time. Skills — every skill on disk user + plugin , filterable, with a one-click "Run" that spawns claude -p '/