AI Agents,
Contained.
nemesis8 is a Rust orchestrator for AI CLI container workloads. Multi-provider support for Codex and Gemini. 69 MCP tools. Persistent sessions. HTTP gateway. Pokeball sealed environments. One binary, total control.
Eight Arms, Infinite Reach.
Multi-Provider
Seamless switching between OpenAI Codex and Google Gemini CLI. Same config, same tools, different brains.
One-Shot & Interactive
run for clean exec output, interactive for full TUI sessions. Both with stdin forwarding.
Persistent Sessions
Sessions survive container restarts. List with sessions, resume by UUID or last 5 chars.
69 MCP Tools
File ops, web crawling, search, TTS, vision, orchestration. Auto-installed and configured at container startup.
HTTP Gateway
Axum-powered API server. Completion endpoints, session management, file watching, and concurrent run throttling.
Pokeball System
Capture, seal, and run isolated project environments. Network-isolated containers with broker-mediated AI access.
Sandboxed by Default
Everything runs in Docker. Opt-in danger mode when you need full auto. Pokeball workers drop all capabilities.
Zero-Config Start
nemisis8 init scaffolds config. nemisis8 doctor checks prerequisites. Auto-builds image on first run.
Up and Running in 60 Seconds.
1 Install
cargo install --path .
# Or download a release binary
# github.com/DeepBlueDynamics/nemisis8/releases
2 Build & Run
nemisis8 build
# One-shot prompt
nemisis8 run "list markdown files and summarize"
# Interactive session
nemisis8 interactive
# With Gemini instead of Codex
nemisis8 --provider gemini run "hello"
3 Configure
nemisis8 init
# .codex-container.toml
provider = "codex" # or "gemini"
workspace_mount_mode = "named"
mcp_tools = ["serpapi-search.py", "gnosis-crawl.py"]
[env]
MY_API_URL = "https://api.example.com"
env_imports = ["SERVICE_URL", "API_KEY"]
[[mounts]]
host = "C:/Users/you/data"
container = "/workspace/data"
4 Sessions & Resume
nemisis8 sessions
# Resume by last 5 chars of UUID
nemisis8 resume 8d44d
# Drop into a container shell
nemisis8 shell
Two Binaries, One System.
nemisis8 Host CLI
nemisis8-entry Container Binary
The Gateway.
| Endpoint | Method | Description |
|---|---|---|
| /health | GET | Liveness check |
| /status | GET | Concurrency info |
| /completion | POST | Run a prompt |
| /sessions | GET | List sessions |
| /sessions/:id | GET | Session details |
| /sessions/:id/prompt | POST | Continue session |
Concurrency: 2 simultaneous runs, 8-second spawn throttle.
The Pokeball System.
Capture a project, seal it into a hardened Docker image, and run AI prompts in a network-isolated container with broker-mediated access.
Scans the project, detects language/runtime/dependencies, and generates a pokeball.yaml spec.
Capture + build in one step. Produces a sealed Docker image with all deps pre-installed and the pokeball worker binary.
Starts a worker container (network=none, read-only root, all caps dropped) with a broker that mediates AI model calls.
The Manifesto.
The Container Is the Contract
The container is the promise: a consistent place where models, tools, and workflows behave the same way every time. You should be able to step in and act immediately, without negotiating setup or hunting for hidden config. That consistency is not a convenience feature. It is the foundation of trust.
Tools Are First-Class
We treat tools as part of the model's voice. File ops, crawling, scheduling, search, and external APIs are part of the language of action. Every tool has to be understandable, and every workflow has to be observable.
Stock Agents Are Alive
The stock agents are not inert presets. They are meant to feel alive when invoked: present, responsive, and aware of the workspace state. If they feel lifeless, that is a failure of craft, not a limitation of the model.
State Is Real
Sessions, histories, and artifacts persist because memory is a capability. Work should be resumable. Runs should be traceable. A container that forgets is a container that wastes time. A container that remembers is a platform.
The Work Speaks
We prefer concrete outcomes: a file written, a bug fixed, a report generated, a system clarified. The interface is a means to an end. The goal is always the work.