1 unstable release
| 0.3.0 | Jan 26, 2026 |
|---|
#2534 in Development tools
Used in 2 crates
240KB
5.5K
SLoC
Grite
Grite is a repo-local, git-backed issue/task system designed for coding agents and humans. It keeps an append-only event log in git refs, builds a fast local materialized view, and never writes tracked state into the working tree.
Documentation: docs.neullabs.com/grite
Features
- Git-native storage - Events stored in
refs/grite/wal, synced withgit fetch/push - CRDT-based merging - Deterministic conflict resolution, no manual merge needed
- Dependency DAG - Typed issue relationships (blocks, depends_on, related_to) with cycle detection and topological ordering
- Context store - Tree-sitter-powered symbol extraction across 10 languages, with distributed sync between agents
- Per-actor isolation - Each agent/device gets its own actor ID and local database
- Optional daemon - Auto-spawns for performance, not required for correctness
- Ed25519 signing - Optional cryptographic signatures on events
- Team coordination - Distributed locks for coordinated workflows
Use Cases
Grite serves different audiences with distinct workflows:
| Audience | Primary Use Cases |
|---|---|
| AI Coding Agents | Task decomposition, multi-agent coordination, persistent memory |
| Individual Developers | Offline issue tracking, personal task lists, technical debt |
| Development Teams | Distributed coordination, code review workflows, knowledge base |
| Security & Compliance | Private vulnerability tracking, incident response, audit trails |
| DevOps & Release Engineering | CI/CD integration, release checklists, deployment tracking |
See Use Cases for detailed workflows and examples.
Installation
Quick Install (Recommended)
curl -fsSL https://raw.githubusercontent.com/neul-labs/grite/main/install.sh | bash
This downloads the pre-built binary for your platform and installs to ~/.local/bin/.
Package Managers
Homebrew (macOS/Linux):
brew install neul-labs/tap/grite
Cargo (Rust):
cargo install grite grite-daemon
npm:
npm install -g @neul-labs/grite
pip:
pip install grite-cli
gem:
gem install grite-cli
Chocolatey (Windows):
choco install grite
From Source
git clone https://github.com/neul-labs/grite.git
cd grite
./install.sh --source
Prerequisites
- Git 2.38+
- nng library (for IPC)
Ubuntu/Debian:
sudo apt install libnng-dev
macOS:
brew install nng
Windows: The nng library is bundled with the pre-built binaries.
Quick Start
# Initialize grite in a git repository
cd your-repo
grite init
# This also creates AGENTS.md with instructions for AI coding agents
# Create an issue
grite issue create --title "Fix login bug" --body "Users can't login"
# List issues
grite issue list
# Add a comment
grite issue comment <issue-id> --body "Working on this"
# Close an issue
grite issue close <issue-id>
# Sync with remote (auto-rebases on conflict)
grite sync
# Run health checks
grite doctor
# Rebuild database (fast mode with snapshots)
grite rebuild --from-snapshot
Architecture
Grite uses a three-layer architecture:
+------------------+ +-------------------+ +------------------+
| Git WAL | --> | Materialized View | <-- | CLI / Daemon |
| refs/grite/wal | | sled database | | grite / grite-daemon |
| (source of truth)| | (fast queries) | | (user interface) |
+------------------+ +-------------------+ +------------------+
Crate Structure
| Crate | Purpose |
|---|---|
libgrite-core |
Event types, hashing, projections, sled store, signing |
libgrite-git |
WAL commits, ref sync, snapshots, distributed locks |
libgrite-ipc |
IPC message schemas (rkyv), daemon lock, client/server |
grite |
CLI frontend |
grite-daemon |
Optional background daemon |
ID Types
| Type | Size | Format | Purpose |
|---|---|---|---|
ActorId |
128-bit | Random | Identifies device/agent |
IssueId |
128-bit | Random | Identifies issue |
EventId |
256-bit | BLAKE2b hash | Content-addressed event ID |
IDs are stored as byte arrays internally and displayed as lowercase hex strings.
Daemon
The daemon (grite-daemon) is optional and provides:
- Auto-spawn - Automatically starts on first CLI command
- Idle shutdown - Stops after 5 minutes of inactivity (configurable)
- Concurrent access - Multiple CLI calls handled efficiently
- Warm cache - Keeps materialized view ready for fast queries
# Manual daemon control
grite daemon start --idle-timeout 300
grite daemon status
grite daemon stop
# Force local execution (skip daemon)
grite --no-daemon issue list
The daemon uses filesystem-level locking (flock) to prevent database corruption from concurrent access.
Storage Layout
.git/
grite/
config.toml # Repo-level config (default actor, lock policy)
actors/
<actor_id>/
config.toml # Actor config (label, public key)
sled/ # Materialized view database
sled.lock # flock for exclusive access
daemon.lock # Daemon ownership marker
refs/grite/
wal # Append-only event log
snapshots/<ts> # Periodic snapshots
locks/<resource_hash> # Distributed lease locks
Documentation
Full documentation is available at docs.neullabs.com/grite.
| Document | Description |
|---|---|
| Architecture | System design and data flow |
| Use Cases | Workflows for agents, developers, and teams |
| Data Model | Event schema, hashing, projections |
| CLI Reference | Command-line interface |
| CLI JSON Output | JSON output format for scripting |
| Daemon | Background daemon details |
| Actors | Actor identity and isolation |
| Configuration | Config files and options |
| Git WAL | WAL format and chunk encoding |
| IPC Protocol | Inter-process communication |
| Locking | Distributed lock coordination |
| Export Format | JSON/Markdown export |
| Hash Vectors | Canonical hashing test vectors |
| Operations | Backup, recovery, debugging |
| Agent Playbook | Guide for AI coding agents |
| Comparison | How Grite compares with Beads, git-bug, and others |
Development
# Build
cargo build
# Run tests
cargo test
# Run with debug logging
RUST_LOG=debug cargo run --bin grite -- issue list
# Install locally
./install.sh
Design Principles
- Git is the source of truth - All state derivable from
refs/grite/* - No working tree pollution - Never writes tracked files (except AGENTS.md for agent discoverability)
- Daemon optional - CLI works standalone, daemon is performance optimization
- Deterministic merges - CRDT semantics, no manual conflict resolution
- Per-actor isolation - Multiple agents can work independently
- Agent discoverability -
grite initcreates AGENTS.md so AI coding agents automatically discover grite
License
MIT License - see LICENSE for details.
Dependencies
~102MB
~3M SLoC