Codewhale is a terminal coding agent written in Rust. You give it a model and a task; it reads your repository, edits files, runs commands, inspects the results, and continues toward the goal until the job is done or it needs a decision from you. It runs as an interactive terminal UI or as a one-shot codewhale exec "..." command, and a local web client is also available.
The agent is provider-neutral. You connect hosted providers or local models served through Ollama, vLLM, or SGLang, switch with /model, and can assign a different model to each agent role. Approval modes make access explicit: Plan is read-only, while Ask, Auto-Review, and Full Access control how much the agent may change without confirmation. /undo reverts the last turn and /restore returns the workspace to an earlier snapshot. Optional OS sandboxing adds an execution boundary where the platform supports it, and unknown model prices are reported as unknown rather than free.
Long-running work is organised through saved sessions, a durable /goal, workflow review before execution, and agent teams whose internal instructions stay out of your transcript. Extension points include MCP servers, skills, hooks, and agent roles kept as readable files in project or personal settings. The project began as deepseek-tui and keeps that configuration and session compatibility.
Features
- Any model: hosted providers plus local models via Ollama, vLLM, or SGLang, switched with /model and assignable per role
- Approval modes: Plan (read-only), Ask, Auto-Review, and Full Access, backed by repository rules and an authorization order
- Undo and restore: /undo reverts the last turn; /restore rolls the workspace back to a snapshot
- Sessions and goals: saved sessions and a durable /goal for multi-turn work
- Agent teams: coordinated agents with roles defined as files in project or personal settings
- Extensibility: MCP servers, skills, and hooks
- Headless runs: codewhale exec runs a task without opening the TUI
- Web client: a local browser interface alongside the terminal UI
- Sandboxing: optional OS-level sandbox for command execution where supported
