{"id":50996720,"url":"https://github.com/dwalleck/rivets","last_synced_at":"2026-06-20T10:31:31.999Z","repository":{"id":324807984,"uuid":"1098631484","full_name":"dwalleck/rivets","owner":"dwalleck","description":"A high-performance, Rust-based issue tracking system using JSONL storage","archived":false,"fork":false,"pushed_at":"2026-05-29T19:36:07.000Z","size":2763,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-29T21:13:57.650Z","etag":null,"topics":["async","cli","issue-tracker","jsonl","project-management","rust","rust-lang"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dwalleck.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-18T00:12:33.000Z","updated_at":"2026-05-29T19:36:14.000Z","dependencies_parsed_at":null,"dependency_job_id":"a78a14de-c6ec-4ad6-a65c-a4f6d0c75a44","html_url":"https://github.com/dwalleck/rivets","commit_stats":null,"previous_names":["dwalleck/rivets"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dwalleck/rivets","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dwalleck%2Frivets","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dwalleck%2Frivets/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dwalleck%2Frivets/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dwalleck%2Frivets/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dwalleck","download_url":"https://codeload.github.com/dwalleck/rivets/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dwalleck%2Frivets/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34566920,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-20T02:00:06.407Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["async","cli","issue-tracker","jsonl","project-management","rust","rust-lang"],"created_at":"2026-06-20T10:31:31.393Z","updated_at":"2026-06-20T10:31:31.994Z","avatar_url":"https://github.com/dwalleck.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rivets\n\n[![CI](https://github.com/dwalleck/rivets/actions/workflows/ci.yml/badge.svg)](https://github.com/dwalleck/rivets/actions/workflows/ci.yml)\n[![codecov](https://codecov.io/gh/dwalleck/rivets/branch/main/graph/badge.svg)](https://codecov.io/gh/dwalleck/rivets)\n[![Crates.io](https://img.shields.io/crates/v/rivets.svg)](https://crates.io/crates/rivets)\n[![License: MIT OR Apache-2.0](https://img.shields.io/badge/License-MIT%20OR%20Apache--2.0-blue.svg)](LICENSE-MIT)\n\nA fast, Git-friendly issue tracker that lives in your repository.\n\nRivets 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.\n\n## Features\n\n- **Git-native** — Issues live in your repo, branch with your code, merge with your PRs\n- **Fast** — Built in Rust for instant responses, even with thousands of issues\n- **Dependency tracking** — Model blockers and relationships between issues\n- **AI-ready** — MCP server for seamless integration with AI coding assistants\n- **Scriptable** — JSON output mode for automation and custom tooling\n- **Human-readable** — JSONL storage you can grep, diff, and edit directly\n\n## Installation\n\n```bash\ncargo install rivets\n```\n\n## Quick Start\n\n```bash\n# Initialize in your project\nrivets init\n\n# Create an issue\nrivets create --title \"Add user authentication\" --type feature\n\n# See what's ready to work on\nrivets ready\n\n# Start working on an issue\nrivets update RIVETS-1 --status in_progress\n\n# Mark it done\nrivets close RIVETS-1\n```\n\n## Usage\n\n### Managing Issues\n\n```bash\nrivets create --title \"Fix login bug\" --type bug --priority 1\nrivets list                          # List all open issues\nrivets list --status in_progress     # Filter by status\nrivets show RIVETS-1                 # View issue details\nrivets update RIVETS-1 --priority 2  # Update fields\nrivets close RIVETS-1 --reason \"Fixed in commit abc123\"\n```\n\n### Dependencies\n\n```bash\nrivets dep RIVETS-2 --blocks RIVETS-1    # RIVETS-2 blocks RIVETS-1\nrivets blocked                            # Show all blocked issues\nrivets ready                              # Show issues with no blockers\n```\n\n### Labels\n\n```bash\nrivets label add RIVETS-1 urgent backend\nrivets label remove RIVETS-1 urgent\nrivets list --label backend\n```\n\n### JSON Output\n\nAll commands support `--json` for scripting:\n\n```bash\nrivets list --json | jq '.[] | select(.priority == 1)'\n```\n\n## Project Structure\n\nThis workspace contains three crates:\n\n| Crate | Description |\n|-------|-------------|\n| `rivets` | CLI and core library |\n| `rivets-jsonl` | General-purpose JSONL library |\n| `rivets-mcp` | MCP server for AI assistant integration |\n\n## Development\n\n### Prerequisites\n\n- Rust 1.70+\n\n### Building and Testing\n\n```bash\ncargo build              # Build all crates\ncargo test               # Run tests\ncargo run -p rivets -- --help\n```\n\n### Code Quality\n\nPre-commit hooks enforce formatting, linting, and tests. Run manually with:\n\n```bash\ncargo fmt --check\ncargo clippy --all-targets --all-features -- -D warnings\ncargo test\n```\n\n### Commit Convention\n\nThis project uses [Conventional Commits](https://www.conventionalcommits.org/):\n\n```\nfeat(cli): add export command\nfix(storage): handle empty files gracefully\ndocs: update installation instructions\n```\n\n## Contributing\n\nContributions are welcome! Please:\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feat/amazing-feature`)\n3. Make your changes with tests\n4. Ensure all quality checks pass\n5. Submit a pull request\n\nFor maintainers, see [Publishing](#publishing) for release procedures.\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003ch3\u003ePublishing\u003c/h3\u003e\u003c/summary\u003e\n\nPublish crates in dependency order:\n\n```bash\ncargo publish -p rivets-jsonl\n# Wait for indexing...\ncargo publish -p rivets\n# Wait for indexing...\ncargo publish -p rivets-mcp\n```\n\nGenerate changelog: `git cliff --unreleased --bump --prepend CHANGELOG.md`\n\n\u003c/details\u003e\n\n## License\n\nLicensed under either of [MIT](LICENSE-MIT) or [Apache-2.0](LICENSE-APACHE) at your option.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdwalleck%2Frivets","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdwalleck%2Frivets","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdwalleck%2Frivets/lists"}