Mycelium
A robust, production-grade task/plan manager CLI designed for reliability, agent usage, and git-trackable project management.
Features
- Single Binary: Statically compiled, no dependencies
- Git-Trackable: SQLite storage designed for version control
- Dependency Management: Task blocking with cycle detection
- Assignees: Local assignees with GitHub username linking
- External References: Link tasks to GitHub issues/PRs and URLs
- Agent-Optimized: One-shot CLI with JSON output support
- Fast: Sub-100ms response time for typical operations
- Safe: Comprehensive error handling and validation
- Smart List View: Tree visualization for dependencies, epic grouping for simple lists
- Task Notes: Add comments and notes to tasks
- Task Cloning: Duplicate tasks with all metadata
- Batch Operations: Close, tag, or move multiple tasks at once
- Follow-ups: Lightweight scratch table for non-blocking items captured mid-work
Installation
CLI (myc) via crates.io (recommended)
Installs the myc binary to ~/.cargo/bin/. Requires Rust 1.75+.
CLI (myc) from source
# Binary will be at target/release/myc
GUI (MycUI) pre-built download
Each tagged release ships desktop bundles on the
GitHub Releases page:
.dmg/.app (macOS), .deb/.AppImage (Linux), and .msi/.exe (Windows).
Download the one for your platform and install it. Every release also attaches
the myc CLI binaries, alongside the crates.io publish.
Note: macOS bundles are currently unsigned, so Gatekeeper may warn on first launch (right-click → Open to bypass).
GUI (MycUI) from source
MycUI is a Tauri desktop app built with React and TypeScript.
Prerequisites: Rust, Bun, and Tauri prerequisites for your platform.
The built app will be in mycui/src-tauri/target/release/bundle/ with platform-specific installers (.deb, .AppImage, .dmg, .msi).
For development:
One-Line Install (Linux & macOS)
&& &&
The install script detects your platform, builds, and installs both myc (CLI) and MycUI (GUI). On macOS, MycUI is installed as /Applications/MycUI.app. On Linux, both binaries go to /usr/local/bin/.
INSTALL_DIR=/.local/bin
Versioning
The CLI (myc) and the desktop app (MycUI) are versioned independently and
released on their own cadence. The CLI is published to crates.io as
mycelium-manager; MycUI ships as a desktop bundle attached to GitHub
Releases. There is no requirement to run matching version numbers.
They stay compatible because both are built on the same mycelium-core crate,
so they share one schema, one set of migrations, and one data layer. You can
run any released CLI alongside any released MycUI against the same project, use
either tool on its own, or mix them freely. Neither depends on the other at
runtime: the CLI is a standalone binary, and MycUI talks to the database
directly through core rather than shelling out to myc.
Quick Start
# Initialize a new mycelium project
# Create an epic
# Create tasks
# Set up dependencies (task 1 blocks task 2)
# View dependency tree
# Close tasks (blocked tasks prevent closing)
# Batch operations
# Task notes
# Clone a task
# View project summary
Commands
Project
Epics
Tasks
|||
|
|0>
Batch Operations
# Close multiple tasks at once
# Add a tag to multiple tasks
# Move multiple tasks to an epic (use 0 for no epic)
Task Notes
Task Cloning
Dependencies
Assignees
External References
Follow-ups
Lightweight scratch table for non-blocking items captured mid-work
(bugs you noticed, questions, ideas). They are separate from tasks and
carry no epic, priority, or dependencies. Body is required, title optional. Statuses:
open, in_progress, done, wontfix.
After myc task close, mycelium prints a one-line reminder if any
active follow-ups exist. Agents using mycelium MUST run myc followup list at the end of every work unit and surface open items to the user
before wrapping (see AGENTS.md).
Reporting & Export
Global Options
|
Data Model
Epic
├── id, title, description
├── status (open/closed)
└── Tasks[]
Task
├── id, title, description (optional)
├── status (open/closed), priority (low/medium/high/critical)
├── epic_id (optional), assignee_id (optional)
├── due_date (optional)
├── dependencies (blocks/blocked_by)
└── external_refs (GitHub issues/PRs, URLs)
Git Integration
Mycelium stores data in .mycelium/mycelium.db using SQLite with WAL mode. This makes it git-trackable:
# Add to your repo
# The .mycelium/.gitignore excludes WAL files
For AI Agents
Mycelium is optimized for agentic workflows:
# Use --quiet to get just IDs
# Include a description when useful
# Use --format json for parsing
# Check blocked tasks
# Export for analysis
Claude Code follow-up hook (optional)
hooks/ ships a Claude Code
Stop hook that enforces the end-of-task follow-up check, so it no longer
relies on the agent remembering the AGENTS.md rule.
The hook self-gates: it stays silent outside mycelium projects (detected
via the myc:agents-start marker in AGENTS.md) and only fires when
active follow-ups exist, feeding them back to the agent to surface to
you. Requires jq.
Configuration
No configuration needed! All data is stored in the project-local .mycelium/ directory.
Safety Features
- Atomic operations: Database transactions ensure data integrity
- Dependency validation: Circular dependencies are prevented
- Blocker checks: Tasks with open blockers cannot be closed (without
--force) - Confirmation prompts: Destructive operations require
--forceor user confirmation - Clear errors: All errors include actionable guidance
Performance
- Sub-100ms response time for typical operations
- SQLite with proper indexing
- WAL mode for concurrent read/write
- Single binary, no runtime dependencies
Development
# Clone
# Build & test the CLI
# Run MycUI in dev mode
Architecture
- Rust - Type-safe, performant, single binary
- mycelium-core - Shared crate (db, models, migrations, errors) consumed by both the CLI and MycUI, so they use one schema and data layer
- SQLite - Embedded, git-trackable, ACID-compliant
- Clap - Command-line parsing with derive macros
- Rusqlite - SQLite bindings with bundled lib
- Tauri - Desktop GUI framework (MycUI)
- React + TypeScript - MycUI frontend
- Hand-written CSS - MycUI styling (no CSS framework)
License
MIT License - see LICENSE file.
Contributing
Contributions welcome! Feel free to open issues and pull requests.
Acknowledgments
Inspired by beads and the need for a robust, git-trackable task manager that works seamlessly with AI agents.