A fast, Git-friendly issue tracker that lives in your repository.
Rivets stores issues as JSONL files alongside your code—no external services, no context switching, no sync problems. Track bugs, features, and tasks with the same workflow you use for code.
- Git-native — Issues live in your repo, branch with your code, merge with your PRs
- Fast — Built in Rust for instant responses, even with thousands of issues
- Dependency tracking — Model blockers and relationships between issues
- AI-ready — MCP server for seamless integration with AI coding assistants
- Scriptable — JSON output mode for automation and custom tooling
- Human-readable — JSONL storage you can grep, diff, and edit directly
cargo install rivets# Initialize in your project
rivets init
# Create an issue
rivets create --title "Add user authentication" --type feature
# See what's ready to work on
rivets ready
# Start working on an issue
rivets update RIVETS-1 --status in_progress
# Mark it done
rivets close RIVETS-1rivets create --title "Fix login bug" --type bug --priority 1
rivets list # List all open issues
rivets list --status in_progress # Filter by status
rivets show RIVETS-1 # View issue details
rivets update RIVETS-1 --priority 2 # Update fields
rivets close RIVETS-1 --reason "Fixed in commit abc123"rivets dep RIVETS-2 --blocks RIVETS-1 # RIVETS-2 blocks RIVETS-1
rivets blocked # Show all blocked issues
rivets ready # Show issues with no blockersrivets label add RIVETS-1 urgent backend
rivets label remove RIVETS-1 urgent
rivets list --label backendAll commands support --json for scripting:
rivets list --json | jq '.[] | select(.priority == 1)'This workspace contains three crates:
| Crate | Description |
|---|---|
rivets |
CLI and core library |
rivets-jsonl |
General-purpose JSONL library |
rivets-mcp |
MCP server for AI assistant integration |
- Rust 1.70+
cargo build # Build all crates
cargo test # Run tests
cargo run -p rivets -- --helpPre-commit hooks enforce formatting, linting, and tests. Run manually with:
cargo fmt --check
cargo clippy --all-targets --all-features -- -D warnings
cargo testThis project uses Conventional Commits:
feat(cli): add export command
fix(storage): handle empty files gracefully
docs: update installation instructions
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feat/amazing-feature) - Make your changes with tests
- Ensure all quality checks pass
- Submit a pull request
For maintainers, see Publishing for release procedures.
Publish crates in dependency order:
cargo publish -p rivets-jsonl
# Wait for indexing...
cargo publish -p rivets
# Wait for indexing...
cargo publish -p rivets-mcpGenerate changelog: git cliff --unreleased --bump --prepend CHANGELOG.md
Licensed under either of MIT or Apache-2.0 at your option.