peas
A CLI-based, flat-file issue tracker for humans and robots.
peas stores issues as markdown files alongside your code, making them easy to version control and read. It provides both a CLI and GraphQL interface, perfect for AI coding agents.
Features
- Flat-file storage: Issues stored as markdown with TOML frontmatter in
.peas/ - GraphQL interface: Query and mutate peas with GraphQL for AI agent integration
- Interactive TUI: Browse and manage peas in a terminal UI with multi-select and undo
- Hierarchical structure: Milestones, epics, stories, features, bugs, chores, research, and tasks
- Memory system: Store and retrieve project knowledge, decisions, and context
- Asset management: Attach files, images, and documents to tickets
- Relationships: Link tickets with parent/child and blocking dependencies
- Agent-friendly:
peas primeoutputs instructions for AI coding agents - Undo support: Multi-level undo for accidental changes
Installation
With cargo-binstall (recommended)
The fastest way to install pre-built binaries:
From GitHub releases
Download pre-built binaries directly from GitHub releases.
From crates.io
Build from source via crates.io:
From source
Build from the repository:
Quick Start
# Initialize a peas project
# Create some peas
# List peas
# Update status
# Search
# Interactive TUI
CLI Commands
| Command | Description |
|---|---|
peas init |
Initialize a new peas project |
peas create <title> |
Create a new pea |
peas list |
List all peas (filter by type, status, priority, tags) |
peas show <id> |
Show pea details |
peas update <id> |
Update a pea's properties |
peas start <id> |
Mark pea as in-progress |
peas done <id> |
Mark pea as completed |
peas archive <id> |
Archive a pea (move to archive folder) |
peas delete <id> |
Delete a pea permanently |
peas search <query> |
Search peas by text |
peas suggest |
Suggest the next ticket to work on |
peas roadmap |
Generate markdown roadmap from milestones and epics |
peas prime |
Output agent instructions |
peas context |
Output project context for LLMs |
peas query <query> |
Execute a GraphQL query |
peas mutate <mutation> |
Execute a GraphQL mutation |
peas serve |
Start GraphQL HTTP server |
peas tui |
Open interactive TUI |
peas import-beans |
Import from a beans project |
peas export-beans |
Export to beans format |
peas bulk <action> |
Bulk update multiple peas at once |
peas memory <action> |
Manage project memory and knowledge |
peas asset <action> |
Manage ticket assets (files, images, documents) |
peas undo |
Undo the last operation |
Pea Types
milestone- High-level project goalsepic- Large features or initiativesstory- User stories or scenariosfeature- New functionalitybug- Issues to fixchore- Maintenance tasks (refactoring, cleanup, etc.)research- Research tasks or spikestask- General work items (default)
Pea Statuses
draft- Not ready to work ontodo- Ready to be worked on (default)in-progress- Currently being worked oncompleted- Donescrapped- Cancelled
Pea Priorities
critical- Must be done immediately (also:p0)high- Important, should be done soon (also:p1)normal- Standard priority (default, also:p2)low- Nice to have (also:p3)deferred- Postponed indefinitely (also:p4)
GraphQL Interface
peas provides a full GraphQL API for programmatic access:
# Query stats
# List open peas
# Create a pea
# Update status
Start the GraphQL playground:
# Open http://localhost:4000
Agent Integration
Claude Code
Add to your .claude/settings.json:
Or add to your AGENTS.md:
**IMPORTANT**: Run `peas prime` before starting work to see project tasks.
TUI Keyboard Shortcuts
| Key | Action |
|---|---|
↑/↓ |
Navigate up/down |
←/→ |
Previous/next page |
Tab |
Switch between Tickets/Memory views |
/ |
Search |
Enter |
Open detail view |
Space |
Multi-select toggle |
c |
Create new ticket |
s |
Change status |
t |
Change type |
P |
Change priority |
e |
Edit in $EDITOR |
r |
Refresh |
u |
Undo last operation |
? |
Help |
q |
Quit |
Configuration
peas uses .peas.toml for configuration (also supports .peas.yml, .peas.yaml, or .peas.json, but TOML is preferred):
[]
= ".peas" # Data directory
= "peas-" # ID prefix
= 5 # Random ID length
= "todo"
= "task"
= "toml" # Frontmatter format: toml, yaml, json (TOML preferred)
[]
= false # Enable emoji icons for ticket types in TUI
File Format
Peas are stored as markdown files with TOML frontmatter (YAML and JSON also supported):
+++
id = "peas-abc1"
title = "Implement feature X"
type = "feature"
status = "in-progress"
priority = "high"
tags = ["backend", "api"]
parent = "peas-xyz9"
created = "2024-01-15T10:30:00Z"
updated = "2024-01-15T14:22:00Z"
+++
Detailed description of the feature goes here.
- --
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.