{"id":47693652,"url":"https://github.com/eve0415/cella","last_synced_at":"2026-05-12T05:01:13.362Z","repository":{"id":346142170,"uuid":"1188597564","full_name":"eve0415/cella","owner":"eve0415","description":"A terminal-native devcontainer CLI built for the AI agent era. Drop-in devcontainer CLI replacement in Rust — port forwarding, SSH agent, and credential forwarding without VS Code.","archived":false,"fork":false,"pushed_at":"2026-04-03T02:39:46.000Z","size":1415,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-03T02:53:17.341Z","etag":null,"topics":["claude","claude-code","codex","codex-cli","containers","devcontainers","gemini","git","vscode"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eve0415.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/contributing.md","funding":".github/FUNDING.yaml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"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},"funding":{"github":"eve0415"}},"created_at":"2026-03-22T10:10:01.000Z","updated_at":"2026-04-03T02:39:50.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/eve0415/cella","commit_stats":null,"previous_names":["eve0415/cella"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/eve0415/cella","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eve0415%2Fcella","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eve0415%2Fcella/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eve0415%2Fcella/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eve0415%2Fcella/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eve0415","download_url":"https://codeload.github.com/eve0415/cella/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eve0415%2Fcella/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31437927,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T13:13:19.330Z","status":"ssl_error","status_checked_at":"2026-04-05T13:13:17.778Z","response_time":75,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["claude","claude-code","codex","codex-cli","containers","devcontainers","gemini","git","vscode"],"created_at":"2026-04-02T16:09:25.418Z","updated_at":"2026-05-12T05:01:13.341Z","avatar_url":"https://github.com/eve0415.png","language":"Rust","funding_links":["https://github.com/sponsors/eve0415"],"categories":[],"sub_categories":[],"readme":"# cella\n\n*Latin: \"small room, chamber\"*\n\nA terminal-native devcontainer CLI. Built for agents.\n\n[![License: GPL-3.0](https://img.shields.io/badge/license-GPL--3.0-blue.svg)](LICENSE)\n[![Language: Rust](https://img.shields.io/badge/language-Rust-orange.svg)](https://www.rust-lang.org/)\n[![Status: Alpha](https://img.shields.io/badge/status-alpha-yellow.svg)](#)\n[![GitHub stars](https://img.shields.io/github/stars/eve0415/cella?style=social)](https://github.com/eve0415/cella)\n\n\u003e [!WARNING]\n\u003e cella is in early development. Core commands work, but expect breaking changes.\n\n## Why\n\n**The spec is great. The tooling isn't.** The [Dev Container specification](https://containers.dev/) ([spec](https://github.com/devcontainers/spec)) has become a de facto standard — adopted by VS Code, JetBrains, GitHub Codespaces, CodeSandbox, and others. But the spec defines features like `forwardPorts` and `portsAttributes` that the [reference CLI](https://github.com/devcontainers/cli) simply doesn't implement. SSH agent forwarding, credential forwarding, port forwarding, and BROWSER interception all require the [VS Code Dev Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) (which runs vscode-server inside the container) to work. The CLI is a CI build tool, not a general-purpose devcontainer runtime.\n\n**Agents are the first developers now.** AI coding agents — Claude Code, Codex, Gemini CLI — are terminal-based. They're the primary developers on many projects today. Dev containers should integrate with the terminal, not require a GUI editor. Use your own tools — Ghostty, WezTerm, Windows Terminal, tmux, Neovim — or just let the agent work headless.\n\n**VS Code is becoming Copilot-first.** Every update pushes Copilot deeper — the sidebar opens on every new directory, features compete for attention with AI integrations. If you're not using Copilot, you're paying the overhead anyway. Dev containers shouldn't require VS Code for basic functionality like port forwarding.\n\n**Agents pollute workspaces.** AI agents treat `/tmp` as free storage — throwaway scripts, diff files, temp artifacts, no cleanup. Containers are the answer: destroy and rebuild clean. One branch, one container, clean slate.\n\n**The official CLI has real gaps.** It requires Node.js to run (ironic for a container tool). The maintainers confirmed: SSH agent forwarding is [\"part of the extension, not the CLI\"](https://github.com/devcontainers/cli/issues/441). Port forwarding was left out because [\"it requires NodeJS inside the container\"](https://github.com/devcontainers/cli/issues/22). No `stop` or `down` command exists ([cli#386](https://github.com/devcontainers/cli/issues/386)). cella fixes all of this with a single native binary.\n\n## Installation\n\n### Homebrew\n\n```sh\nbrew install eve0415/tap/cella\n```\n\n### Install script\n\n```sh\ncurl -fsSL https://raw.githubusercontent.com/eve0415/cella/main/install.sh | sh\n```\n\n### From source\n\nRequires a [Rust toolchain](https://rustup.rs/) (1.95+).\n\n```sh\ncargo install --git https://github.com/eve0415/cella cella-cli\n```\n\n### Pre-built binaries\n\nDownload from [GitHub Releases](https://github.com/eve0415/cella/releases). Binaries are available for macOS (Intel, Apple Silicon) and Linux (x86_64, aarch64).\n\n## Quick Start\n\nRequires a Docker-compatible runtime (Docker Engine, OrbStack, or similar).\n\n```sh\n# Start a dev container\ncella up\n\n# Open a shell inside the container\ncella shell\n\n# Run a command\ncella exec cargo test\n\n# Stop and remove the container\ncella down\n```\n\n## cella vs @devcontainers/cli\n\nThe [Dev Container specification](https://containers.dev/) ([spec repo](https://github.com/devcontainers/spec)) defines the standard. The [@devcontainers/cli](https://github.com/devcontainers/cli) is the official reference implementation, but many spec-defined features only work with the [VS Code extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) (which runs vscode-server inside the container).\n\n| | cella | @devcontainers/cli |\n|---|---|---|\n| Language | Rust (single native binary) | TypeScript (requires Node.js) |\n| Runtime dependency | None | Node.js 14+ |\n| `stop` / `down` command | Yes | No ([cli#386](https://github.com/devcontainers/cli/issues/386)) |\n| Port forwarding | Automatic (daemon + in-container agent) | No — [VS Code extension only](https://github.com/devcontainers/cli/issues/22) ([cli#186](https://github.com/devcontainers/cli/issues/186)) |\n| SSH agent forwarding | Platform-aware (Docker Desktop, OrbStack, Colima, Linux) | No — [VS Code extension only](https://github.com/devcontainers/cli/issues/441) |\n| Git credential forwarding | gh CLI via socket + TCP, auto-on | No — [VS Code extension only](https://github.com/microsoft/vscode-remote-release/issues/4202) |\n| BROWSER interception | Host browser opens for OAuth | No — [VS Code extension only](https://github.com/microsoft/vscode-remote-release/issues/9935) |\n| Clipboard forwarding | Bidirectional (xsel/xclip) | No — VS Code extension only |\n| Container listing | `cella list` | No ([cli#843](https://github.com/devcontainers/cli/issues/843)) |\n| `runArgs` | 30+ docker create flags parsed | Yes |\n| `hostRequirements` | CPU/memory/storage/GPU validation | Partial (informational only) |\n| `waitFor` | Return after specified lifecycle phase | No |\n| Config validation | Source-positioned diagnostics | Basic |\n| Docker Compose | Yes | Yes |\n| Container backends | Docker, Apple Container (experimental), Colima (experimental) | Docker, Podman |\n| Podman | Not yet | Yes |\n| Editor requirement | None (any terminal) | VS Code for full feature set |\n\n## Features\n\n### Container Lifecycle\n\n- [x] `cella up` / `cella down` — start and stop containers\n- [x] `cella shell` — attach to container shell\n- [x] `cella exec` — run commands (interactive and detached)\n- [x] `cella build` — pre-build images\n- [x] `cella list` — list containers with status and ports\n- [x] `cella logs` — container logs with `--follow`\n- [x] `cella doctor` — system diagnostics with PII redaction\n- [x] `read-configuration` — resolved devcontainer config output (devcontainer CLI compatible)\n- [x] Docker Compose support (`dockerComposeFile`)\n- [x] Git worktree integration (`cella branch`, `cella switch`, `cella prune`) — [guide](docs/worktrees.md)\n- [x] Devcontainer Features (OCI registry resolution, install ordering, caching)\n- [x] Feature management (`cella features edit`, `cella features list`, `cella features update`)\n- [x] Project initialization (`cella init`) — interactive wizard with OCI template/feature selection\n- [x] Lifecycle commands (initializeCommand, postCreate, postStart, postAttach, updateContentCommand)\n- [x] Image and Dockerfile builds\n- [x] Config validation with source-positioned diagnostics (`cella config validate`)\n- [x] Shell completions (`cella completion`)\n\n### Environment \u0026 Credentials\n\n- [x] SSH agent forwarding (Docker Desktop, OrbStack, Colima, Linux)\n- [x] Git config forwarding\n- [x] gh CLI credential forwarding (auto-on)\n- [x] AI agent config forwarding (Claude Code, Codex, Gemini CLI)\n- [x] AI provider API key forwarding (read live from the host on every exec/shell — never baked into the container)\n- [x] Environment variable forwarding (remoteEnv, containerEnv)\n- [x] User environment probing\n- [x] Bidirectional clipboard forwarding (xsel/xclip)\n- [x] Bubblewrap installed for Codex sandbox support\n\n### Spec Compliance\n\n- [x] `runArgs` (30+ docker create flags — networking, resources, security, devices, GPU)\n- [x] `hostRequirements` validation (CPU, memory, storage, GPU)\n- [x] `waitFor` lifecycle phasing\n- [x] `shutdownAction`\n- [x] `updateContentCommand` on workspace change detection\n- [x] GPU passthrough (`hostRequirements.gpu` + `runArgs --gpus`)\n- [x] `appPort` deprecation warning\n\n### Port Forwarding\n\n- [x] Automatic port detection via /proc/net/tcp\n- [x] Host daemon + in-container agent\n- [x] BROWSER interception (OAuth callbacks)\n- [x] Reverse tunnel port forwarding (Colima, Docker Desktop for Mac)\n- [x] OrbStack-aware port handling\n\n### Network Proxy\n\n- [x] Path-level HTTPS blocking (denylist and allowlist modes) — [guide](docs/network-proxy.md)\n- [x] Auto-generated CA certificates for HTTPS interception\n- [x] Host proxy environment forwarding (HTTP_PROXY, HTTPS_PROXY, NO_PROXY)\n- [x] Glob-based domain and path matching rules\n- [x] Configuration via `cella.toml` and `devcontainer.json` customizations\n\n### Editor \u0026 Terminal Integration\n\n- [x] `cella code` — open VS Code connected to the container\n- [x] `cella nvim` — open Neovim connected to the container\n- [x] `cella tmux` — open tmux session inside the container\n- [x] Terminal title integration (sets the host terminal title to reflect the active container/branch)\n\n### Runtime Support\n\n- [x] Docker Engine\n- [x] OrbStack\n- [x] Colima / Lima (experimental — reverse tunnel port forwarding)\n- [ ] Podman\n\n### Experimental Backends\n\n- [x] Apple Container (macOS 26+, Apple Silicon only — pre-1.0 CLI, no Compose support)\n\n### Planned\n\n- [ ] `cella template new/list/edit` — template authoring (subcommands exist as stubs, not yet implemented)\n- [ ] `cella config show/global/dotfiles/agent` — global/dotfiles/agent config management (subcommands exist as stubs, not yet implemented; only `cella config validate` is live)\n- [ ] Podman backend\n\n## Commands\n\n### Container Lifecycle\n\n| Command | Description |\n|---------|-------------|\n| `cella up` | Start a dev container for the current workspace |\n| `cella down` | Stop and remove the dev container |\n| `cella shell` | Open a shell inside the running container |\n| `cella exec` | Execute a command inside the running container |\n| `cella build` | Build the dev container image without starting it |\n| `cella list` | List all dev containers with status and ports |\n| `cella logs` | View container logs (`--follow` for streaming) |\n| `cella init` | Initialize a devcontainer configuration (interactive wizard) |\n\n### Git Worktrees\n\n| Command | Description |\n|---------|-------------|\n| `cella branch \u003cname\u003e` | Create a new worktree-backed branch with its own container |\n| `cella down --branch \u003cname\u003e` | Stop a worktree branch's container |\n| `cella up --branch \u003cname\u003e` | Start or restart a worktree branch's container |\n| `cella switch \u003cname\u003e` | Switch to a different worktree-backed branch |\n| `cella prune` | Remove stale worktrees and their associated containers |\n\nSee the [worktree guide](docs/worktrees.md) for the full workflow, in-container commands, and background task system.\n\n### Features \u0026 Templates\n\n| Command | Description |\n|---------|-------------|\n| `cella features list` | List installed and available devcontainer features |\n| `cella features edit` | Add, remove, or modify features in devcontainer.json |\n| `cella features update` | Update features to latest versions |\n\n### Configuration \u0026 Diagnostics\n\n| Command | Description |\n|---------|-------------|\n| `cella config validate` | Validate a devcontainer.json file |\n| `cella read-configuration` | Output resolved devcontainer config as JSON |\n| `cella doctor` | Check system dependencies and configuration |\n| `cella network` | Inspect network proxy and blocking configuration |\n| `cella completion` | Generate shell completions (bash, zsh, fish, etc.) |\n\n### Port \u0026 Credential Management\n\n| Command | Description |\n|---------|-------------|\n| `cella ports` | View port forwarding status |\n| `cella credential` | Manage credential forwarding |\n\n### Editor \u0026 Terminal Integration\n\n| Command | Description |\n|---------|-------------|\n| `cella code` | Open VS Code connected to the container |\n| `cella nvim` | Open Neovim connected to the container |\n| `cella tmux` | Open a tmux session inside the container |\n\n## Architecture\n\ncella is a Rust workspace with 19 focused crates. The CLI delegates all business logic to library crates — no logic lives in the binary entry point.\n\n```mermaid\ngraph TD\n    subgraph \"Tier 1 — CLI\"\n        cli[cella-cli\u003cbr\u003e\u003ci\u003ecommand parsing, user output\u003c/i\u003e]\n    end\n\n    subgraph \"Tier 2 — Domain\"\n        docker[cella-docker\u003cbr\u003e\u003ci\u003eDocker backend\u003c/i\u003e]\n        container[cella-container\u003cbr\u003e\u003ci\u003eApple backend\u003c/i\u003e]\n        compose[cella-compose\u003cbr\u003e\u003ci\u003eCompose orchestration\u003c/i\u003e]\n        git[cella-git\u003cbr\u003e\u003ci\u003eworktree management\u003c/i\u003e]\n        env[cella-env\u003cbr\u003e\u003ci\u003eenv forwarding\u003c/i\u003e]\n        daemon[cella-daemon\u003cbr\u003e\u003ci\u003ehost daemon\u003c/i\u003e]\n        doctor[cella-doctor\u003cbr\u003e\u003ci\u003ehealth checks\u003c/i\u003e]\n        orchestrator[cella-orchestrator\u003cbr\u003e\u003ci\u003econtainer orchestration\u003c/i\u003e]\n        agent[cella-agent\u003cbr\u003e\u003ci\u003ein-container agent\u003c/i\u003e]\n        config[cella-config\u003cbr\u003e\u003ci\u003edevcontainer parsing\u003c/i\u003e]\n        features[cella-features\u003cbr\u003e\u003ci\u003eOCI feature resolution\u003c/i\u003e]\n        templates[cella-templates\u003cbr\u003e\u003ci\u003etemplate resolution\u003c/i\u003e]\n    end\n\n    subgraph \"Tier 3 — Foundation\"\n        backend[cella-backend\u003cbr\u003e\u003ci\u003ebackend trait\u003c/i\u003e]\n        port[cella-port\u003cbr\u003e\u003ci\u003eport allocation\u003c/i\u003e]\n        codegen[cella-codegen\u003cbr\u003e\u003ci\u003eschema codegen\u003c/i\u003e]\n        network[cella-network\u003cbr\u003e\u003ci\u003enetwork proxy\u003c/i\u003e]\n        protocol[cella-protocol\u003cbr\u003e\u003ci\u003ewire format\u003c/i\u003e]\n        jsonc[cella-jsonc\u003cbr\u003e\u003ci\u003eJSONC preprocessor\u003c/i\u003e]\n    end\n\n    cli --\u003e docker \u0026 container \u0026 compose \u0026 git \u0026 env \u0026 daemon \u0026 doctor \u0026 orchestrator \u0026 config \u0026 features \u0026 templates\n    docker \u0026 container \u0026 compose --\u003e backend\n    agent \u0026 daemon --\u003e port\n    config --\u003e codegen\n    config \u0026 templates --\u003e jsonc\n    agent \u0026 config \u0026 env \u0026 orchestrator --\u003e network\n    templates --\u003e features\n    port --\u003e protocol\n```\n\nSee [docs/architecture.md](docs/architecture.md) for details.\n\n## Contributing\n\nContributions welcome. See the [contributing guide](docs/contributing.md) for build instructions and code style.\n\n- Questions and ideas: [GitHub Discussions](https://github.com/eve0415/cella/discussions)\n- Bug reports: [GitHub Issues](https://github.com/eve0415/cella/issues)\n\n---\n\nIf you find cella useful, consider giving it a star on [GitHub](https://github.com/eve0415/cella). It helps others discover the project.\n\n## License\n\n[GPL-3.0](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feve0415%2Fcella","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feve0415%2Fcella","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feve0415%2Fcella/lists"}