# crowd_control v0.2.0 - Table of Contents

> Orchestrate many Claude Code, Open Code, and omp CLI instances in parallel from Elixir, with zero-zombie subprocess management, structured JSON/RPC I/O, and Docker hardening.

## Pages

- [CrowdControl](readme.md)
- [Changelog](changelog.md)
- [Security Policy](security.md)
- [Contributing to CrowdControl](contributing.md)

- Guides
  - [Architecture](architecture.md)
  - [Sandboxes](sandboxes.md)
  - [Providers](providers.md)
  - [Operations](operations.md)

## Modules

- [CrowdControl.LogRedactor](CrowdControl.LogRedactor.md): A `:logger` primary filter that keeps a `%Req.Request{}` out of crash reports.
- [CrowdControl.ReqAdapter](CrowdControl.ReqAdapter.md): The one `Req` adapter in this codebase, and the carrier for the `:req_adapter`
test seam.

- Core
  - [CrowdControl](CrowdControl.md): Orchestrate many coding-agent CLI instances in parallel.
  - [CrowdControl.Session](CrowdControl.Session.md): GenServer managing a single coding-agent CLI instance.

- Agents
  - [CrowdControl.Agent](CrowdControl.Agent.md): Adapter behaviour for a coding-agent CLI.
  - [CrowdControl.Agent.ClaudeCode](CrowdControl.Agent.ClaudeCode.md): `CrowdControl.Agent` adapter for the Claude Code stream-json wire format.
  - [CrowdControl.Agent.Omp](CrowdControl.Agent.Omp.md): `CrowdControl.Agent` adapter for [Oh My Pi](https://omp.sh/) (`omp`).

- Backends
  - [CrowdControl.Backend](CrowdControl.Backend.md): Behaviour for the sandbox that a `CrowdControl.Session` drives.
  - [CrowdControl.Backend.Docker](CrowdControl.Backend.Docker.md): Runs the CLI inside a Docker container over the Engine API.
  - [CrowdControl.Backend.Kubernetes](CrowdControl.Backend.Kubernetes.md): Runs the CLI inside a Kubernetes Pod over the API server.
  - [CrowdControl.Backend.Local](CrowdControl.Backend.Local.md): Runs the CLI as a local subprocess via `NetRunner`.
  - [CrowdControl.Backend.Sandboxd](CrowdControl.Backend.Sandboxd.md): Drives a CLI through the `sandboxd` agent over HTTP, on any substrate.

- Providers
  - [CrowdControl.Provider](CrowdControl.Provider.md): Behaviour for the infrastructure a `CrowdControl.Backend.Sandboxd` talks to.
  - [CrowdControl.Provider.Compose](CrowdControl.Provider.Compose.md): A per-session Docker *stack* — sandbox plus sidecars — over the Engine API.
  - [CrowdControl.Provider.Docker](CrowdControl.Provider.Docker.md): One container per sandbox, running `sandboxd`, reached on a loopback-published
port.
  - [CrowdControl.Provider.Endpoint](CrowdControl.Provider.Endpoint.md): How to reach one sandbox's `sandboxd` agent, right now.
  - [CrowdControl.Provider.Gce](CrowdControl.Provider.Gce.md): One Google Compute Engine VM per sandbox, running `sandboxd`, reached through
an SSH tunnel to the VM's loopback.

- Persistence
  - [CrowdControl.Reaper](CrowdControl.Reaper.md): Reconciles live sandboxes against stored session records.
  - [CrowdControl.Store](CrowdControl.Store.md): Behaviour for persisting enough session state to reattach after a restart.
  - [CrowdControl.Store.DETS](CrowdControl.Store.DETS.md): Disk-backed `CrowdControl.Store`. Survives a node restart, adds no dependency.
  - [CrowdControl.Store.ETS](CrowdControl.Store.ETS.md): In-memory `CrowdControl.Store`. The default.

- Internal
  - [CrowdControl.Backend.Credentials](CrowdControl.Backend.Credentials.md): Credential rewriting shared by every remote backend that fronts an egress proxy.
  - [CrowdControl.Backend.Docker.API](CrowdControl.Backend.Docker.API.md): Thin HTTP layer over the Docker Engine API.
  - [CrowdControl.Backend.Docker.Demux](CrowdControl.Backend.Docker.Demux.md): Docker multiplexed-stream framing.
  - [CrowdControl.Backend.Docker.HostConfig](CrowdControl.Backend.Docker.HostConfig.md): The one place Docker container hardening defaults are defined.
  - [CrowdControl.Backend.Kubernetes.API](CrowdControl.Backend.Kubernetes.API.md): Every `kubereq` call in the project, and the error vocabulary built on top of it.
  - [CrowdControl.Backend.Sandboxd.API](CrowdControl.Backend.Sandboxd.API.md): Every HTTP call to a `sandboxd` agent, and the one error vocabulary they
produce.
  - [CrowdControl.Backend.Shell](CrowdControl.Backend.Shell.md): Shell quoting shared by every backend that crosses an `sh -c` boundary.
  - [CrowdControl.CLI](CrowdControl.CLI.md): Builds CLI commands for Claude Code and Open Code executables.
  - [CrowdControl.Protocol](CrowdControl.Protocol.md): Pure functions for the Claude Code stream-json wire format.
  - [CrowdControl.Provider.Gce.API](CrowdControl.Provider.Gce.API.md): Every `gcp_compute` call in the project, and the error vocabulary built on
top of it.
  - [CrowdControl.Provider.Gce.Startup](CrowdControl.Provider.Gce.Startup.md): Renders the `startup-script` that turns a bare Debian VM into a sandbox
running `sandboxd`.
  - [CrowdControl.Provider.Gce.Tunnel](CrowdControl.Provider.Gce.Tunnel.md): An SSH tunnel from this node's loopback to one sandbox VM's loopback agent
port, with a private key that never touches disk.

