by EvAlssment
Provides a self‑hostable sandbox that runs arbitrary agent code inside isolated Kubernetes pods, backed by a multi‑tenant control‑plane API and SDKs for Python, JavaScript/TypeScript, Go, and Rust.
Boxxkite delivers a complete, batteries‑included environment for executing LLM‑generated agent code safely. Each request spawns a dedicated Kubernetes pod with a non‑root user, dropped capabilities, a read‑only root filesystem, and network egress disabled by default. A sidecar service inside the pod exposes file, process, and tooling APIs, while an optional control‑plane offers account management, API keys, and usage limits.
boxxkite up. This starts the sandbox, sidecar, and a MinIO instance for storage.
git clone https://github.com/EvAlssment/boxxkite.git && cd boxxkite
python3 -m venv .venv && source .venv/bin/activate
pip install -e "[dev]"
boxxkite up
boxxkite exec "python3 -c 'print(1 + 1)'"
helm install boxxkite deploy/helm/boxxkite). Deploy the control-plane/ service separately (Render button or manual deployment). The control‑plane creates per‑session sandbox pods on‑the‑fly.boxxkite-client on PyPI, npm, Go, or crates.io) and call the HTTP endpoints, or embed SandboxManager directly in Python code.boxxkite-mcp Python package and run it as an MCP tool source to expose the sandbox to Claude Code, Claude Desktop, Codex, or Cursor.boxxkite-mcp) to integrate with Claude‑style coding assistants.Q: Do I need a Kubernetes cluster to run Boxxkite?
A: For the full sandbox you do. A local kind cluster or any Kubernetes‑compatible environment works. For quick local testing you can use Docker‑Compose, which emulates the pod isolation via nsenter.
Q: Can I run Boxxkite on Apple Silicon?
A: The primary boxxkite-sandbox image is amd64‑only due to Chrome‑for‑Testing. Use the boxxkite-sandbox-minimal multi‑arch image or run the amd64 image under emulation.
Q: How does security work?
A: Security is layered: per‑pod shared secret between sidecar and manager, fresh network namespace per exec, non‑root user, all capabilities dropped, read‑only root FS, and default network egress block. See SECURITY.md for details.
Q: What languages are supported for the SDK? A: Python, JavaScript/TypeScript, Go, and Rust, each published as a separate package.
Q: Is there a hosted SaaS version? A: The repository provides only self‑hostable components. You can deploy the control‑plane to a cloud provider (Render button) but you still manage the Kubernetes cluster that runs the sandbox pods.
The missing batteries-included, self-hostable sandbox for agent code execution.
Most "agent sandbox" projects give you raw isolation — a pod, a VM, a container —
and leave you to build the tool surface an LLM agent actually needs on top of it.
boxxkite is the other half: a complete bash/python/file/search/process tool
surface running inside real Kubernetes pod isolation, self-hostable end to end.
Point your agent framework at it and you have a real sandbox in minutes, on
infrastructure you control.
Who this is for: teams building their own agent products that need
isolated, multi-tenant code execution at scale. It's not a single-user
local dev-session sandbox like the built-in bash tool in an IDE or CLI
coding agent — if you just want your own assistant to run shell commands on
your machine, boxxkite is the wrong layer.
If you are new to the repo, use this decision tree:
boxxkite up from the Quickstart below. This is the fastest path and
does not require Kubernetes.deploy/local-kind/README.md. It
explains the kind-based flow, the Apple Silicon limitation, and the
kubectl proxy step.examples/hosted_control_plane/ guide.For contributors, the important mental model is: the root package gives you
the sandbox runtime, while control-plane/, the SDKs, and mcp-server/ are
separate packages with their own installs and tests.
Clone the repo, create a virtualenv, install the root package, then start the local stack:
git clone https://github.com/EvAlssment/boxxkite.git boxxkite && cd boxxkite
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
boxxkite up # builds + starts sandbox, sidecar, and local MinIO
boxxkite exec "python3 -c 'print(1 + 1)'"
The PyPI name is
boxxkite-sandbox, notboxxkite(already taken). Install it withpip install -e ".[dev]"from the repo root; the import path (import boxxkite) and theboxxkiteCLI command are unaffected.
If boxxkite up succeeds, the quickest smoke test is:
boxxkite exec "python3 -c 'print(1 + 1)'"
boxxkite files ls /
That confirms the sandbox, the sidecar, and the CLI are talking to each other correctly.
from uuid import uuid4
from boxxkite import SandboxManager
from boxxkite.tools import create_sandbox_tool_specs
manager = SandboxManager()
session_id = str(uuid4())
await manager.create_session(organization_id=uuid4(), session_id=session_id)
specs = create_sandbox_tool_specs(sandbox_manager=manager, session_id=session_id)
bash_tool = next(s for s in specs if s.name == "bash_tool")
result = await bash_tool.handler(command="echo hello from boxxkite")
Framework adapters (boxxkite.tools.adapters) convert the same tool specs for
LangChain, LlamaIndex, the OpenAI Agents SDK, Google ADK, or plain OpenAI/
Anthropic/Gemini/Mistral function-calling schemas — see the
full integration guide
and examples/ for a runnable version of every framework.
Everything in this repo — including the control-plane/ hosted multi-tenant
API — is something you deploy yourself:
deploy/rbac.yaml/
network-policy.yaml/pod-security-policy.yaml, or
helm install boxxkite deploy/helm/boxxkite. This chart does not deploy
the control-plane itself (it has no Deployment/Service) — the per-session
sandbox pods are created programmatically by the control-plane at runtime.
Then deploy the control-plane/ API separately (see the Render button
below or the developer docs).
A local kind cluster works too: ./deploy/local-kind/setup.sh.docker-compose mode shares a PID namespace with the sandbox container and execs into it via
nsenter, the same mechanism the Kubernetes runtime uses — it no longer needs (or mounts) the host's Docker socket. See SECURITY.md for the current list of disclosed limitations.
Full walkthroughs for every path above (Kubernetes, Helm, Render, the
boxxkite CLI's hosted mode, secrets, webhooks, MCP, and every SDK) live on
the developer docs site.
The control-plane/ multi-tenant API is a separate service from the
boxxkite up SDK path — it is not part of deploy/docker-compose.yml, and you
run it on its own. To bring it up against a throwaway SQLite database (no
Postgres required) for API exploration:
cd control-plane
uv venv # create .venv
uv pip install -e '../[dev]' # install the boxxkite runtime (sibling pkg)
uv pip install -e '.[dev]' # install the control-plane itself
ENVIRONMENT=development DATABASE_URL=sqlite+aiosqlite:///./cp.db \
uv run uvicorn control_plane.main:app --port 8099
Then check it's up:
http://localhost:8099/health — liveness (process is up)http://localhost:8099/health/ready — readiness (round-trips a DB query)http://localhost:8099/docs — interactive OpenAPI docsThis gets you the API surface (accounts, API keys, session bookkeeping), but
actually executing sandbox pods still needs a real Kubernetes cluster — the
control-plane creates per-session pods programmatically at runtime (a local
kind cluster via deploy/local-kind/setup.sh works). Against SQLite with no
cluster you can exercise the HTTP/auth surface, not real code execution.
One repo, several independently-versioned pieces, kept together deliberately (see CONTRIBUTING.md):
| Piece | What it is |
|---|---|
src/boxxkite/ (boxxkite-sandbox on PyPI) |
The core: SandboxManager, WarmPoolManager, and the 15+ tool boxxkite.tools surface. Embed this directly against your own cluster. |
sidecar/ |
The FastAPI service that runs in every sandbox pod — filesystem I/O, command exec via nsenter, storage sync. |
control-plane/ |
Optional hosted-API layer in front of SandboxManager — accounts, API keys, fair-use limits. |
sdk-python/, sdk-js/, sdk-go/, sdk-rust/ |
Thin HTTP clients for your own running control-plane. |
mcp-server/ (boxxkite-mcp) |
Wraps the Python SDK as an MCP tool source for Claude Code, Claude Desktop, Codex, or Cursor. |
src/boxxkite/handoff/ (boxxkite handoff <tool>, part of the main CLI) |
Moves an in-progress local Claude Code/Codex CLI/opencode/Cursor session into a fresh sandbox, full conversation history included — see docs/handoff-adapters.md. |
bastion/ |
Standalone SSH server bridging into a session's human-takeover WebSocket. |
deploy/ |
Kubernetes manifests, Helm chart, Dockerfiles, docker-compose, Render Blueprint. |
examples/ |
Runnable cookbook — LangGraph, LangChain, raw HTTP, OpenAI/Gemini/Mistral function calling, and more. |
boxxkite executes arbitrary, agent-generated code — its security posture is
layered defense in depth: a per-pod shared-secret sidecar auth token, a
fresh empty network namespace on every exec call, non-root execution with
every Linux capability dropped, and a read-only root filesystem. No single
one of these is meant to stand alone.
See SECURITY.md for the full model, known limitations, and how to report a vulnerability privately — this project runs arbitrary code, so a sandbox-escape report deserves a fast, private path, not a public issue. The security model guide covers the same ground with runnable examples.
| Package | Registry |
|---|---|
boxxkite-sandbox |
PyPI |
boxxkite-client (Python) |
PyPI |
boxxkite-client (JS/TS) |
npm |
boxxkite-mcp |
PyPI |
boxxkite-client (Go) |
pkg.go.dev |
boxxkite-client (Rust) |
crates.io |
Container images are published to GHCR (ghcr.io/evalssment/…):
| Image | Architectures |
|---|---|
boxxkite-sandbox |
linux/amd64 only |
boxxkite-sandbox-minimal |
linux/amd64, linux/arm64 |
boxxkite-sidecar |
linux/amd64, linux/arm64 |
boxxkite-control-plane |
linux/amd64, linux/arm64 |
boxxkite-sandboxis amd64-only. Its Dockerfile deliberately hard-fails on arm64 because the pinned Chrome-for-Testing release has nolinux/arm64build (deploy/sandbox.Dockerfile). arm64 / Apple-Silicon users should useboxxkite-sandbox-minimal(multi-arch, no Chrome/LibreOffice/pandoc stack), or build/run the full image underlinux/amd64emulation —docker-compose.ymlalready forcesplatform: linux/amd64for exactly this reason. The other three images are multi-arch.
Join the Discord — get help from other users and maintainers, report a bug, ask for a usage-limit/credit bump, or discuss elevated access if you're a startup (dedicated thread for that once you're in).
Apache 2.0 — permissive, with an explicit patent grant. Use, modify, self-host, or build a competing hosted service on top of boxxkite; there's no restriction.
See CONTRIBUTING.md — we use the Developer Certificate of
Origin (git commit -s), not a CLA. Questions before opening a PR? Ask in the
Discord first.
Please log in to share your review and rating for this MCP.
Explore related MCPs that share similar capabilities and solve comparable challenges
by modelcontextprotocol
A Model Context Protocol server for Git repository interaction and automation.
by zed-industries
A high‑performance, multiplayer code editor designed for speed and collaboration.
by modelcontextprotocol
Model Context Protocol Servers
by modelcontextprotocol
A Model Context Protocol server that provides time and timezone conversion capabilities.
by cline
An autonomous coding assistant that can create and edit files, execute terminal commands, and interact with a browser directly from your IDE, operating step‑by‑step with explicit user permission.
by upstash
Provides up-to-date, version‑specific library documentation and code examples directly inside LLM prompts, eliminating outdated information and hallucinated APIs.
by daytonaio
Provides a secure, elastic infrastructure that creates isolated sandboxes for running AI‑generated code with sub‑90 ms startup, unlimited persistence, and OCI/Docker compatibility.
by continuedev
Enables faster shipping of code by integrating continuous AI agents across IDEs, terminals, and CI pipelines, offering chat, edit, autocomplete, and customizable agent workflows.
by github
Connects AI tools directly to GitHub, enabling natural‑language interactions for repository browsing, issue and pull‑request management, CI/CD monitoring, code‑security analysis, and team collaboration.