# apps/cli ## Purpose Clikt-based command-line interface. Translates user commands into HTTP requests and WebSocket connections against `apps/server`. ## Ownership All sources under `apps/cli/src/`. ## Local Contracts - Commands: `session`, `run`, `task`, `provider`, `approve`, `undo`, `events`, `status`, `replay`, `stats`, `health` - Communicates with server via HTTP REST and WebSocket (`CliWsClient`) - No business logic; all orchestration is delegated to the server ## Work Guidance - Follow Kotlin rules in root CLAUDE.md (runCatching, suspend, no blocking I/O on main thread) - New commands go under `commands/`, follow the existing Clikt subcommand pattern ## Verification ``` ./gradlew :apps:cli:test --rerun-tasks ``` ## Child DOX Index No child AGENTS.md (leaf module).