Dobby CLI is a Forge-compatible workflow assistant implemented entirely in Rust. It layers focused planning and task management commands on top of the upstream Forge experience, so you can capture implementation intent and still access every Forge feature from a single binary. Launching dobby with no arguments opens a rich terminal dashboard so you can monitor files, plan progress, and context in one place.
When you run dobby with no arguments, the binary launches a first-class terminal interface built with Ratatui:
- Workspace column (left): shows files under the current directory so you can spot relevant artifacts quickly.
- Activity stream (center): summarizes recent reasoning, task/test/doc status, and milestone callouts.
- Context panel (right): displays the active plan, task counts, backlog preview, and timestamps.
- Footer bar: lists common shortcuts such as
tab agents,ctrl+p commands,q/escto quit,rto refresh, and thedobby --forge …escape hatch for the upstream Forge CLI.
Keyboard controls mirror popular TUIs: j/k or arrow keys navigate, r refreshes persisted plan/task data, and q or Esc exits back to your shell. From here you can still run targeted commands like dobby plan show or dobby task list, and dobby --forge provider list jumps straight into Forge when you need the legacy interface.
Install or update the CLI with a single command (mirroring Forge's installer):
- Plan scaffolding – capture a project name, description, and milestones with
dobby plan init, then inspect the live blueprint withdobby plan show. - Task tracking – add work items, filter by status, and update progress via human-friendly IDs or simple list indexes.
- Stateful workflows – plan and task data lives in
~/.dobby-cli/state.json, so every session resumes from the same source of truth until you reset it. - Forge delegation – any command outside of
plan/taskis forwarded to the vendored Forge binary, exposing 100% of the upstream CLI (agents, providers, workspaces, conversations, etc.).
Prefer the single-command installer above? Skip to Quickstart. For manual control, build the CLI directly from this repository.
- A Rust toolchain via
rustup - Protocol Buffers (
brew install protobufon macOS or download from the official releases page) - Git submodules initialized (
git submodule update --init --recursive)
cargo install --path .This places the dobby binary in ~/.cargo/bin, making it available anywhere on your system.
cargo run -- plan showThe compiled binary lives at target/release/dobby (or target/debug/dobby when using cargo run).
Dobby vendors the entire antinomyhq/forgecode tree under vendor/forgecode and delegates every non-plan/task command to the real Forge binary. To keep the delegation path working:
- Pull the submodule after cloning:
git submodule update --init --recursive - Install prerequisites: a Rust toolchain (
rustup) and Protocol Buffers (brew install protobufon macOS, or download from https://github.com/protocolbuffers/protobuf/releases). - Compile Forge once with
cargo build --release --manifest-path vendor/forgecode/Cargo.toml(or letdobbybuild it automatically the first time you run a delegated command). - Invoke any Forge command through Dobby, e.g.
dobby provider listordobbyfor the interactive shell. Dobby-native workflows (plan/task) continue to run directly inside this binary.
| Command | Description |
|---|---|
dobby plan init -n "Feature" -d "Optional description" -m "First milestone" -m "Second milestone" |
Create a new plan (fails if one already exists). |
dobby plan show |
Display the active plan with milestones and color-coded tasks (IDs are shown for easy cross-reference). |
dobby plan reset |
Clear the stored plan/tasks so you can start over. |
| Command | Description |
|---|---|
dobby task add "Implement auth" --notes "Start with backend" |
Append a pending task to the active plan. |
dobby task list |
List every task. Add --status in_progress (or pending, completed) to filter. |
dobby task status 2 completed |
Update a task by 1-based index. You can also pass a full ID or a unique ID prefix (e.g., dobby task status a1b2c3 in_progress). |
Tip: Run
dobby plan showordobby task listto grab the colored IDs shown next to each task before updating their status.
Any other invocation is proxied to the Forge binary. For example:
# Launch Forge's interactive shell
dobby
# List configured providers via Forge
dobby provider list- Install dependencies:
rustup target add(as needed) andcargo fetch - Format & lint:
cargo fmt && cargo clippy - Compile:
cargo build - Exercise flows locally:
cargo run -- plan showorcargo run -- provider list
Run the standard Rust checks before shipping changes:
cargo fmt --check
cargo clippy -- -D warnings
cargo testValidate end-to-end behavior by running representative commands (swap cargo run -- with the installed dobby binary if you've already installed it):
cargo run -- plan init -n "Demo" -m "First milestone"
cargo run -- task add "Wire up persistence"
cargo run -- task list- Plan already exists: Reset with
dobby plan resetbefore re-runningplan init. No task matches identifiererrors: Double-check the task ID or use the list index when updating statuses.- Forge build failures: Confirm Rust (
cargo) and Protocol Buffers (protoc) are installed, then rerungit submodule update --init --recursivefollowed bycargo build --release --manifest-path vendor/forgecode/Cargo.toml.