{"id":50651777,"url":"https://github.com/shakedaskayo/ciab","last_synced_at":"2026-06-07T19:04:09.083Z","repository":{"id":344443086,"uuid":"1181681035","full_name":"shakedaskayo/ciab","owner":"shakedaskayo","description":"Claude-In-A-Box: Manage coding agent instances (Claude Code, Codex, Gemini CLI, Cursor) as local processes or containers. REST API, CLI, desktop app.","archived":false,"fork":false,"pushed_at":"2026-05-26T01:16:35.000Z","size":14202,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-26T03:11:25.179Z","etag":null,"topics":["agent-sandbox","ai-agents","claude","claude-code","cli","coding-agents","developer-tools","devtools","llm","rust","sandbox","sse","streaming","tauri"],"latest_commit_sha":null,"homepage":"https://shakedaskayo.github.io/ciab/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shakedaskayo.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-14T13:32:47.000Z","updated_at":"2026-05-26T01:16:16.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/shakedaskayo/ciab","commit_stats":null,"previous_names":["shakedaskayo/ciab"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/shakedaskayo/ciab","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shakedaskayo%2Fciab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shakedaskayo%2Fciab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shakedaskayo%2Fciab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shakedaskayo%2Fciab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shakedaskayo","download_url":"https://codeload.github.com/shakedaskayo/ciab/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shakedaskayo%2Fciab/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33670212,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-29T02:00:06.066Z","response_time":107,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent-sandbox","ai-agents","claude","claude-code","cli","coding-agents","developer-tools","devtools","llm","rust","sandbox","sse","streaming","tauri"],"created_at":"2026-06-07T19:04:08.406Z","updated_at":"2026-06-07T19:04:09.060Z","avatar_url":"https://github.com/shakedaskayo.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://raw.githubusercontent.com/shakedaskayo/ciab/main/docs/docs/assets/logo.png\" alt=\"CIAB\" width=\"220\"\u003e\n\u003c/p\u003e\n\n\u003ch3 align=\"center\"\u003eRun, orchestrate, and stream coding agents — from a single control plane.\u003c/h3\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/shakedaskayo/ciab/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://github.com/shakedaskayo/ciab/actions/workflows/ci.yml/badge.svg\" alt=\"CI\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/shakedaskayo/ciab/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/shakedaskayo/ciab?include_prereleases\u0026label=release\u0026color=C4693D\" alt=\"Release\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://crates.io/crates/ciab\"\u003e\u003cimg src=\"https://img.shields.io/crates/v/ciab?color=C4693D\" alt=\"crates.io\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/shakedaskayo/ciab/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-MIT-5B8CA8.svg\" alt=\"License\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://shakedaskayo.github.io/ciab\"\u003e\u003cimg src=\"https://img.shields.io/badge/docs-shakedaskayo.github.io%2Fciab-C4693D\" alt=\"Docs\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/shakedaskayo/ciab/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/shakedaskayo/ciab?style=social\" alt=\"GitHub Stars\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cbr\u003e\n\nCIAB (**Claude-In-A-Box**) is an open-source control plane for coding agents. Spin up **Claude Code**, **Codex**, **Gemini CLI**, or **Cursor** in isolated sandboxes — as local processes, containers, Kubernetes pods, or EC2 instances — and manage them through a unified **REST API**, **CLI**, **desktop app**, or **any web browser**.\n\nEvery sandbox gets its own workspace, credentials, repos, and real-time streaming output. Access them from your laptop, phone, tablet, or CI pipeline — from the same network or anywhere in the world via built-in tunneling.\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/shakedaskayo/ciab/main/install.sh | bash\n```\n\n\u003cbr\u003e\n\n## Quick Start\n\n```bash\n# Install\ncurl -fsSL https://raw.githubusercontent.com/shakedaskayo/ciab/main/install.sh | bash\n\n# Start the server (zero config — embedded defaults just work)\nciab server start\n\n# Create a sandbox with Claude Code\nciab sandbox create --provider claude-code \\\n  --env ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY\n\n# Stream a conversation\nciab agent chat \u003csandbox-id\u003e --message \"Refactor the auth module\" --stream\n\n# Access from your phone — open the Gateway page and scan the QR code\n# Or navigate to http://\u003cyour-ip\u003e:9090 from any browser\n```\n\n\u003cbr\u003e\n\n## Screenshots\n\n### Dashboard\n\nManage all your sandboxes from a single view. Quick-launch any agent provider, monitor running/paused/failed states, and create new sandboxes in seconds.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/docs/assets/screenshots/dashboard.png\" alt=\"CIAB Dashboard\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n### Chat — Real-time Streaming\n\nFull conversation interface with live SSE streaming. Watch tool calls execute, file results appear, and code stream in — all in real time. Permission modes (Auto, Safe, Strict, Plan) control what the agent can do.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/docs/assets/screenshots/chat.png\" alt=\"CIAB Chat with Streaming\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n### Access From Anywhere — Phone, Tablet, Any Browser\n\nCIAB's built-in **web gateway** makes every sandbox accessible from **any device**. Open the Gateway page, scan the QR code with your phone, and you're chatting with your agent — with full streaming. No app install needed.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/docs/assets/screenshots/gateway.png\" alt=\"CIAB Gateway — Mobile Access\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n### Skills Catalog\n\nBrowse and install agent skills from the [skills.sh](https://skills.sh) open registry. Add skills to workspaces to give agents specialized knowledge — React best practices, security guidelines, API patterns, and more.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/docs/assets/screenshots/skills.png\" alt=\"CIAB Skills Catalog\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n\u003cbr\u003e\n\n## Features\n\n| | |\n|---|---|\n| **Multi-agent** | Run Claude Code, Codex, Gemini CLI, and Cursor side-by-side. Switch providers with one config change. |\n| **Isolated sandboxes** | Each agent gets its own workspace, env vars, credentials, and mounted repos. Local processes, containers, Kubernetes pods, or EC2 instances. |\n| **Real-time streaming** | Watch agent output as it happens — text deltas, tool use, provisioning steps, logs — all over SSE. |\n| **Access anywhere** | Open sandboxes from your phone, tablet, laptop, or CI pipeline. Built-in web gateway with QR codes, mDNS, and tunneling. |\n| **Workspaces** | Reusable, TOML-configurable environment definitions. Bundle repos, skills, pre-commands, binaries, and agent config. |\n| **Skills catalog** | Install agent skills from the skills.sh open registry — React, security, Docker, and more. |\n| **Encrypted credentials** | AES-256-GCM vault with OAuth2 support. Credentials injected at provisioning time, never stored in plaintext. |\n| **Remote tunnels** | One-click expose via bore, Cloudflare Tunnel, ngrok, or frp. Token-scoped auth with LAN discovery. |\n| **Channels** | Pipe agent conversations through Slack, WhatsApp, or webhooks. Per-sender session tracking. |\n| **Rust library** | Embed CIAB in any Rust app with `CiabEngine::builder().build()`. Feature-gated crate — pick only the runtimes you need. |\n| **Cloud provisioning** | Build AMIs with Packer, launch EC2 instances, manage remote sandboxes. Templates from git repos, URLs, or built-in defaults. |\n| **Desktop + Web** | Tauri + React desktop app and responsive web UI — same interface on any device. |\n\n\u003cbr\u003e\n\n## How It Works\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/docs/assets/architecture.svg\" alt=\"CIAB Architecture\" width=\"100%\"\u003e\n\u003c/p\u003e\n\n**Clients** (CLI, REST API, desktop app, mobile browser, Slack/WhatsApp) connect to the **CIAB control plane** — an Axum-based server that handles auth, streaming, and orchestration. The control plane provisions sandboxes through an **11-step pipeline** (validate → prepare image → resolve credentials → create → start → mount local dirs → inject credentials → clone repos → setup agent filesystem → run scripts → start agent), streaming every step over **SSE** in real time.\n\n\u003cbr\u003e\n\n## Every Way to Access Your Sandboxes\n\n```bash\n# CLI — create and chat\nciab sandbox create --provider claude-code\nciab agent chat \u003cid\u003e --message \"Fix the bug\" --stream\n\n# REST API — programmatic control\ncurl -X POST http://localhost:9090/api/v1/sandboxes \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"agent_provider\": \"claude-code\", \"env_vars\": {\"ANTHROPIC_API_KEY\": \"...\"}}'\n\n# SSE streaming — real-time events\ncurl -N http://localhost:9090/api/v1/sandboxes/\u003cid\u003e/stream\n\n# Web browser — from any device on the network\nopen http://localhost:9090          # desktop\nopen http://ciab.local.local:9090   # mDNS (Apple devices auto-discover)\n# or scan QR code from Gateway page  # phone / tablet\n\n# Desktop app\nmake desktop\n```\n\n| Method | How | Use case |\n|--------|-----|----------|\n| **LAN / mDNS** | `http://ciab.local.local:9090` or scan QR code | Same WiFi — phone, tablet, another laptop |\n| **Tunnel** (bore, Cloudflare, ngrok, frp) | One config line, auto-installs | Access from anywhere in the world |\n| **REST API** | `curl`, scripts, CI/CD pipelines | Programmatic access, automation |\n\n\u003cbr\u003e\n\n## Workspaces\n\nDefine reusable environments in TOML — repos, skills, credentials, agent config — and launch them with one command:\n\n```toml\n[workspace]\nname = \"my-project\"\nprovider = \"claude-code\"\n\n[[repositories]]\nurl = \"https://github.com/org/repo.git\"\nbranch = \"main\"\n\n[[skills]]\nsource = \"vercel-labs/ai-sdk-best-practices\"\n\n[[pre_commands]]\ncommand = \"npm install\"\n\n[agent_config]\nmodel = \"claude-sonnet-4-20250514\"\nsystem_prompt = \"You are a senior engineer working on this project.\"\n\n[[credentials]]\nenv_var = \"ANTHROPIC_API_KEY\"\nvault_path = \"anthropic/api-key\"\n```\n\n```bash\nciab workspace import workspace.toml\nciab workspace launch \u003cworkspace-id\u003e\n```\n\n\u003cbr\u003e\n\n## Rust Library\n\nEmbed CIAB natively in any Rust application. The `ciab` crate provides `CiabEngine` — a single entry point that owns the database, runtimes, streaming broker, and credential store.\n\n```rust\nuse ciab::{CiabEngine, SandboxSpec};\n\n#[tokio::main]\nasync fn main() -\u003e Result\u003c(), Box\u003cdyn std::error::Error\u003e\u003e {\n    // Zero config — just works with local runtime\n    let engine = CiabEngine::builder().build().await?;\n\n    // Create a sandbox\n    let spec: SandboxSpec = serde_json::from_value(serde_json::json!({\n        \"agent_provider\": \"claude-code\",\n        \"env_vars\": {\n            \"ANTHROPIC_API_KEY\": std::env::var(\"ANTHROPIC_API_KEY\")?\n        }\n    }))?;\n    let sandbox = engine.create_sandbox(\u0026spec).await?;\n\n    // Execute a command\n    let req: ciab::ExecRequest = serde_json::from_value(serde_json::json!({\n        \"command\": [\"cargo\", \"test\"]\n    }))?;\n    let result = engine.exec(\u0026sandbox.id, \u0026req).await?;\n    println!(\"exit={} stdout={}\", result.exit_code, result.stdout);\n\n    // File operations\n    let files = engine.list_files(\u0026sandbox.id, \"/workspace\").await?;\n    engine.write_file(\u0026sandbox.id, \"/workspace/hello.txt\", b\"world\").await?;\n\n    // Clean up\n    engine.terminate_sandbox(\u0026sandbox.id).await?;\n    Ok(())\n}\n```\n\n```toml\n# Cargo.toml — pick only what you need\n[dependencies]\nciab = \"0.1\"                                          # local runtime (default)\nciab = { version = \"0.1\", features = [\"ec2\"] }        # + AWS EC2\nciab = { version = \"0.1\", features = [\"kubernetes\"] } # + Kubernetes\nciab = { version = \"0.1\", features = [\"full\"] }       # everything\n```\n\nSee the full [Rust Library reference](https://shakedaskayo.github.io/ciab/architecture/rust-library/) for the builder API, config resolution chain, feature flags, and re-exports.\n\n\u003cbr\u003e\n\n## Cloud Provisioning\n\nBuild machine images and run sandboxes on AWS EC2:\n\n```bash\n# Build an AMI with Claude Code pre-installed\nciab image build --agent claude-code \\\n  --var region=us-east-1 \\\n  --var base_ami=ami-0abcdef1234567890\n\n# Or use a custom Packer template from a git repo\nciab image build \\\n  --template \"git::https://github.com/org/templates.git//agent.pkr.hcl?ref=main\" \\\n  --var region=eu-west-1\n\n# Configure EC2 as the default runtime\n# config.toml:\n# [runtime]\n# backend = \"ec2\"\n# [runtime.ec2]\n# region = \"us-east-1\"\n# default_ami = \"ami-your-built-image\"\n```\n\n\u003cbr\u003e\n\n## Architecture\n\n```\ncrates/\n  ciab                  Rust library facade (CiabEngine, feature-gated re-exports)\n  ciab-core             Types, traits, errors (foundation)\n  ciab-api              Axum REST API — 15 route groups\n  ciab-sandbox          Runtime backends: local process, Docker, OpenSandbox\n  ciab-sandbox-k8s      Kubernetes runtime backend (Kata Containers support)\n  ciab-sandbox-ec2      AWS EC2 runtime backend (ephemeral instances, SSH exec)\n  ciab-streaming        SSE broker with event buffer and replay\n  ciab-provisioning     11-step sandbox provisioning pipeline\n  ciab-credentials      AES-256-GCM encrypted vault, OAuth2\n  ciab-packer           HashiCorp Packer image builder (AMI builds)\n  ciab-gateway          Web gateway + tunneling (bore, Cloudflare, ngrok, frp) + LAN/mDNS\n  ciab-channels         Slack, WhatsApp, webhook adapters\n  ciab-agent-claude     Claude Code provider\n  ciab-agent-codex      Codex provider\n  ciab-agent-gemini     Gemini CLI provider\n  ciab-agent-cursor     Cursor provider\n  ciab-db               SQLite persistence (sqlx)\ndesktop/                Tauri v2 + React desktop app\ndocs/                   MkDocs Material documentation\n```\n\n\u003cbr\u003e\n\n## Install\n\n**One-liner** (macOS \u0026 Linux):\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/shakedaskayo/ciab/main/install.sh | bash\n```\n\n**Pre-built binaries:**\n\n| Platform | Download |\n|----------|----------|\n| macOS (Apple Silicon) | [`ciab-darwin-arm64.tar.gz`](https://github.com/shakedaskayo/ciab/releases/latest) |\n| macOS (Intel) | [`ciab-darwin-x64.tar.gz`](https://github.com/shakedaskayo/ciab/releases/latest) |\n| Linux (x86_64) | [`ciab-linux-x64.tar.gz`](https://github.com/shakedaskayo/ciab/releases/latest) |\n| Linux (ARM64) | [`ciab-linux-arm64.tar.gz`](https://github.com/shakedaskayo/ciab/releases/latest) |\n| Desktop (macOS) | [`CIAB.dmg`](https://github.com/shakedaskayo/ciab/releases/latest) |\n\n**From source:**\n\n```bash\ngit clone https://github.com/shakedaskayo/ciab.git \u0026\u0026 cd ciab\ncargo build --release\nsudo cp target/release/ciab /usr/local/bin/\n```\n\n\u003cbr\u003e\n\n## Development\n\n```bash\nmake build      # Build all crates\nmake test       # Run tests\nmake lint       # Clippy + warnings-as-errors\nmake server     # Start API server on :9090\nmake desktop    # Launch desktop app\nmake docs       # Serve docs at localhost:8000\nmake dev        # Server + desktop together\n```\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for full setup.\n\n\u003cbr\u003e\n\n## Community\n\n- [GitHub Discussions](https://github.com/shakedaskayo/ciab/discussions) — questions, ideas, show \u0026 tell\n- [Issues](https://github.com/shakedaskayo/ciab/issues) — bugs and feature requests\n- [Contributing](CONTRIBUTING.md) — how to contribute\n\nIf CIAB is useful to you, a star on GitHub helps others find it.\n\n\u003cbr\u003e\n\n## License\n\n[MIT](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshakedaskayo%2Fciab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshakedaskayo%2Fciab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshakedaskayo%2Fciab/lists"}