binnacle
A CLI tool for AI agents and humans to track project state. Think of it as a lightweight, JSON-first task tracker that lives outside your repo.
[!WARNING] Binnacle is very early in development, proceed with caution!
Quick Start
# Install (from source for now)
# Initialize in your project
# Create a task
# See what's ready to work on
# Update task status as you work
Features
- JSON-first output - Machine-readable by default,
-Hfor human-readable - No repo pollution - Data stored externally in
~/.local/share/binnacle/<repo-hash>/ - Task dependencies - Block tasks on other tasks, query what's ready
- Test tracking - Link tests to tasks, auto-reopen tasks on regression
- Action logging - Comprehensive audit log of all commands with timestamps and metadata
- MCP server - Expose all operations as MCP tools for AI agents
- Work queue - Prioritize tasks for agents with a global work queue
Queue (Agent Prioritization)
The queue feature allows operators to signal which tasks agents should work on first:
# Create a queue (one per repo)
# Add tasks to the queue
# View queue and its tasks
# bn ready now shows queued tasks first
# Ready tasks (5):
# [QUEUED]
# [P1] bn-xxxx: Fix auth bug
# [OTHER]
# [P2] bn-yyyy: Refactor utils
# Tasks are automatically removed from queue when closed
Commands
bn Status summary
bn orient Onboarding for AI agents
bn system init Initialize database (interactive, recommended)
bn task create/list/show/update/close/delete
bn link add/rm/list Manage relationships (dependencies, etc.)
bn ready Tasks with no blockers
bn blocked Tasks waiting on dependencies
bn queue create/show/delete Agent work prioritization
bn test create/run Test node management
bn commit link/list Associate commits with tasks
bn mcp serve Start MCP server
bn gui Start web GUI (requires gui feature)
Use bn --help or bn <command> --help for full details.
Web GUI
Binnacle includes an optional web-based GUI for visualizing tasks, dependencies, tests, and activity logs. The GUI provides a real-time, interactive view of your project state with a modern dark blue interface.
Features:
- Interactive task graph - Spring-physics based visualization of task dependencies
- Ready tasks view - Quick access to tasks ready to work on
- Test dashboard - Monitor test status and history
- Activity log - Track all changes and actions
- Live updates - WebSocket-based real-time synchronization
Building with GUI:
# Build with GUI feature
# Or use just (includes GUI by default)
# Or install with cargo
Running the GUI:
# Start on default port (3030)
# Start on custom port
# Then open http://localhost:3030 in your browser
The GUI watches for changes to binnacle data and automatically updates all connected clients.
Configuration
Binnacle supports configuration via bn config set/get/list:
# Action logging (default: enabled)
# View configuration
Action Logging
All binnacle commands are automatically logged to a JSONL file with:
- Timestamp
- Command name and arguments
- Success/failure status
- Execution duration
- Current user
Config keys:
action_log_enabled- Enable/disable logging (default:true)action_log_path- Log file path (default:~/.local/share/binnacle/action.log)action_log_sanitize- Sanitize sensitive data and paths (default:true)
Sanitization automatically:
- Converts file paths to basenames
- Redacts passwords, tokens, and secrets
- Truncates long strings
- Summarizes large arrays
Require Commit for Closure
Enable enforcement that tasks must have at least one linked commit before being closed:
# Enable the requirement
# Now tasks require a linked commit to close
# Bypass with --force when needed (e.g., docs-only tasks)
Config key:
require_commit_for_close- Require linked commits before closing tasks as done (default:false)
When enabled:
bn task closeandbn task update --status donecheck for linked commits- Use
--forceto bypass the check for legitimate cases (config changes, documentation) cancelledstatus is exempt (no commit required)
Environment Variables
BN_DATA_DIR- Override the base directory for binnacle data storage. By default, data is stored in~/.local/share/binnacle/. When set, binnacle stores data in$BN_DATA_DIR/<repo-hash>/instead. Useful for testing or isolating data between environments.
Status
Core functionality is complete (Phases 0-7). The project tracks its own development with binnacle.
What works:
- Task CRUD with priorities, tags, assignees
- Dependency graph with cycle detection
- Test nodes with regression detection
- Commit tracking
- Action logging with sanitization
- Work queue for agent task prioritization
- MCP server with 38+ tools
- Web GUI with live updates (behind gui feature flag)
- CI/CD via GitHub Actions
In progress:
- Alternative storage backends (orphan branch done, git notes planned)
- Sync for shared mode
Building
# Recommended: Install with GUI feature using just
# Or build manually
# Or without GUI
The binary is bn (short for binnacle). The just install command builds with the GUI feature enabled and installs to ~/.local/bin.
Contributing
See CONTRIBUTING.md for development setup, code style guidelines, and how to submit pull requests.
License
MIT