bears 🐻
A file-based task tracker for developers and AI agents.
Tasks live as Markdown files with YAML frontmatter in a .tasks/ directory — plain text, git-friendly, no database. Run bea from the terminal or expose the same functionality as an MCP server for AI coding agents.
Install
The binary is named bea.
Quick start
Task format
Each task is stored as .tasks/{id}-{slug}.md:
id: a1b2
title: Implement OAuth flow
status: open
priority: P1
created: 2026-03-15T10:30:00Z
updated: 2026-03-15T10:30:00Z
tags: [backend, auth]
depends_on: [f4c9]
Any Markdown body goes here.
Statuses: open · in_progress · done · blocked · cancelled
Priorities: P0 (critical) · P1 · P2 · P3 (low) — sorted P0 first everywhere.
Commands
bea init
Create the .tasks/ directory in the current directory.
bea create
bea list
Hides done and cancelled tasks by default. Use --all / -a to show everything.
bea ready
Show tasks that are open and have all dependencies completed. This is the key command for agent workflows — always start here.
bea show
bea update
bea start / bea done
Shortcuts for the most common status transitions:
bea dep
Adding a dependency that would create a cycle is rejected with an error.
bea delete
Permanently delete a task file.
bea graph
Show the dependency graph as a tree. Hides done and cancelled tasks by default; use --all / -a to include them.
bea search
Matches against title, body, tags, and ID. Hides done and cancelled tasks by default.
JSON output
Every command accepts --json for machine-readable output:
MCP server
bears can run as an MCP server, exposing all task operations as tools for AI coding agents.
Available MCP tools
| Tool | Description |
|---|---|
list_ready |
Tasks ready to work on (limit?, tag?) |
list_all_tasks |
All tasks with optional filters (status?, priority?, tag?) |
get_task |
Full task details (id) |
create_task |
Create a task (title, priority?, tags?, depends_on?, body?) |
update_task |
Update fields (id, status?, priority?, tags?, assignee?, body?) |
start_task |
Set status to in_progress (id) |
complete_task |
Set status to done (id) |
add_dependency |
Add a dependency, cycle-safe (id, depends_on) |
remove_dependency |
Remove a dependency (id, depends_on) |
delete_task |
Permanently delete a task (id) |
search_tasks |
Full-text search (query) |
get_graph |
Adjacency list of all dependencies |
Register with Claude Code
Add to your Claude Code MCP config (claude mcp add):
Development
All three of fmt, clippy, and test must pass cleanly before committing.
Project layout
src/
main.rs Entry point — dispatch to CLI or MCP server
cli.rs CLI commands (clap)
mcp.rs MCP server — JSON-RPC 2.0 over stdio
store.rs Read/write .tasks/ directory
task.rs Task struct, frontmatter parse/render, ID & slug
graph.rs Dependency graph, ready computation, cycle detection
error.rs Error types
.tasks/ Task files (created by `bea init`)