Warning
Gest is pre-1.0; expect breaking changes between minor versions until 1.0.
Gest is a lightweight task and artifact tracker built for AI-assisted development. It structures agent-generated work into phased iterations with dependency tracking, so independent tasks can be dispatched to separate agents concurrently — turning sequential, single-context-window workflows into parallel execution pipelines.
gest init # register the current repo as a project
gest task create "Implement auth middleware"
gest artifact create --source auth-spec.md
gest iteration create "Ship auth"
gest search "auth"Open the web dashboard at any time with gest serve (defaults to http://localhost:2300).
The core problem gest solves: an AI agent produces a plan with 15-20 tasks, and you execute them one at a time in one context window. That's slow. Gest lets you decompose work into phased iterations where tasks in the same phase run concurrently:
# Create the tasks
gest task create "Add export data types"
gest task create "Add CSV formatter"
gest task create "Add JSON formatter"
gest task create "Wire up CLI command"
# Group them into an iteration with explicit phases
gest iteration create "Implement export command"
# → <iteration-id>
# Phase 1 tasks run in parallel — no dependencies between them
gest iteration add <iteration-id> <data-types-id> --phase 1
gest iteration add <iteration-id> <csv-id> --phase 1
gest iteration add <iteration-id> <json-id> --phase 1
# Phase 2 waits for Phase 1
gest iteration add <iteration-id> <cli-id> --phase 2
# Visualize the plan
gest iteration graph <iteration-id>The iteration graph shows exactly which tasks can run now and which are waiting. Agents read the graph, pick up
unblocked tasks via gest iteration next --claim, and mark them done — remaining work automatically unblocks.
When dispatching parallel agents into separate git worktrees or jj workspaces, attach each workspace to the same project so all agents read and write the same task and artifact data:
# In the main checkout, capture the project ID:
gest project
# → wrolrrvn
# In each new worktree, attach to that project:
cd ../gest-feature-branch
gest project attach wrolrrvn
# When the worktree is done, detach before removing it:
gest project detachGest keeps your tasks, artifacts, and iterations in a local SQLite database that powers fast queries, full-text
search, undo, and the web dashboard. Projects can additionally keep a .gest/ mirror of that data as human-readable
YAML and Markdown files so it can travel with your code through git — run gest init --local to opt in. The on-disk
mirror is imported on start and exported on exit, keeping both representations in sync without manual steps.
curl -fsSL https://gest.aaronmallen.dev/install | shTip
This installs gest to ~/.local/bin. Make sure it's in your PATH:
export PATH="$HOME/.local/bin:$PATH"Pin a specific version or change the install directory:
GEST_VERSION=0.5.0 GEST_INSTALL_PATH=/usr/local/bin \
curl -fsSL https://gest.aaronmallen.dev/install | shcargo install gestOr with cargo-binstall for a pre-built binary:
cargo binstall gestv0.5.0 replaced the file-backed store with SQLite. Run gest migrate once after upgrading; see the
v0.4 → v0.5 migration guide for details.
Full documentation, guides, and reference are available at https://gest.aaronmallen.dev.
Pre-1.0, under active development. See docs for design documents and process guides.