TICK.md
Multi-agent task coordination via Git-backed Markdown
Coordinate work across human and AI agents using structured TICK.md files. Built on Git, designed for natural language interaction, optimized for multi-agent workflows.
β¨ Features
- π€ AI-Native: MCP server for seamless bot integration
- π Human-Readable: Plain Markdown with YAML frontmatter
- π Git-Backed: Full version control and automatic audit trail
- π― Dependency Tracking: Automatic task unblocking
- π File Locking: Prevents concurrent edit conflicts
- π Advanced Filtering: Find tasks by status, priority, tags
- π Visualization: Dependency graphs (ASCII and Mermaid)
- π Real-Time Monitoring: Watch mode for live updates
- π Local-First: No cloud required, works offline
π Quick Start
Install CLI
npm install -g tick-md
Initialize Project
cd your-project
tick init
tick status
Create and Claim Tasks
tick add "Build authentication" --priority high --tags backend
tick claim TASK-001 @yourname
tick done TASK-001 @yourname
π€ For AI Agents
Install MCP Server
npm install -g tick-mcp-server
Add to your MCP config (e.g., ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"tick": {
"command": "tick-mcp",
"args": [],
"env": {}
}
}
}
Using the MCP Tools
The MCP server exposes all CLI commands as tools:
tick_init- Initialize a projecttick_add- Create taskstick_claim- Claim tasks for your agenttick_done- Mark tasks completetick_status- Get project overviewtick_list- Query and filter taskstick_comment- Add progress notes
π― Key Concepts
TICK.md File Structure
---
meta:
project_id: my-project
id_prefix: TASK
next_id: 4
updated: 2026-02-07T15:30:00-05:00
---
### TASK-001 Β· Build user authentication
\`\`\`yaml
id: TASK-001
status: in_progress
priority: high
claimed_by: @claude-code
assigned_to: @claude-code
created_by: @gianni
created_at: 2026-02-07T10:00:00-05:00
updated_at: 2026-02-07T15:30:00-05:00
tags: [backend, auth]
depends_on: []
blocks: [TASK-002, TASK-003]
history:
- ts: 2026-02-07T10:00:00 who: @gianni action: created
- ts: 2026-02-07T15:30:00 who: @claude-code action: claimed
\`\`\`
> Build JWT-based authentication with refresh tokens
Automatic Git Commits
By default, every mutation creates a git commit:
[tick] TASK-001 claimed by @claude-code
[tick] TASK-001 completed by @claude-code
[tick] TASK-003: created
Control with flags:
--commit- Force commit--no-commit- Skip commit- Or configure in
.tick/config.yml
Task States
backlog- Not ready to starttodo- Ready to claimin_progress- Being worked onreview- Awaiting reviewblocked- Waiting on dependenciesdone- Completed
File Locking
The CLI uses .tick.lock to prevent concurrent edits. When an agent claims a task, it acquires the lock. Other agents see the task is claimed and can't modify it.
π Documentation
- Protocol Spec: https://tick.md/docs/protocol
- CLI Reference: https://tick.md/docs/cli
- Getting Started: https://tick.md/docs/getting-started
π‘ Example Workflow
# Human creates tasks
tick add "Build landing page" --priority high --tags frontend --assign @claude-code
tick add "Write launch email" --priority medium --tags content --assign @content-bot
tick add "E2E tests" --priority medium --tags qa --depends-on TASK-001
# AI agent picks up work
tick claim TASK-001 @claude-code
tick comment TASK-001 @claude-code --note "Built responsive landing with hero section"
tick done TASK-001 @claude-code
# Another agent auto-triggers
tick claim TASK-003 @qa-bot
tick done TASK-003 @qa-bot --skip-review
π§ Configuration
Edit .tick/config.yml:
git:
auto_commit: true # Auto-commit on mutations (default: true)
commit_prefix: "[tick]"
push_on_sync: false
locking:
enabled: true
timeout: 300
agents:
default_trust: full
require_registration: false
π Best Practices for OpenClaw Bots
- Always claim before working:
tick claim TASK-XXX @yourbotname - Add progress comments:
tick comment TASK-XXX @yourbotname --note "Status update" - Mark done when complete:
tick done TASK-XXX @yourbotname - Check dependencies: Use
tick list --blockedto find blocked tasks - Use MCP server: Enables natural language task management
π§ OpenClaw Multi-Agent Setup
Step-by-step guide for coordinating multiple OpenClaw bots via TICK.md.
1. Create a shared tasks repo
gh repo create yourorg/project-tasks --private
cd project-tasks
npx tick-md init
git add -A && git commit -m "init" && git push
2. On each OpenClaw bot's server
cd /data/.openclaw/workspace
git clone git@github.com:yourorg/project-tasks.git tasks
cd tasks && npx tick-md status
3. Add to each bot's AGENTS.md
## β
Task Coordination (TICK.md)
I coordinate with other agents via TICK.md in `./tasks/`.
### Before starting work:
1. `cd tasks && npx tick-md sync` β get latest
2. `npx tick-md list --status backlog --priority high` β find available work
3. `npx tick-md claim TASK-XXX @mybotname` β claim before working
4. `npx tick-md done TASK-XXX @mybotname` β mark complete
### Rules:
- **Never work on a task claimed by another agent**
- **Always claim before starting**
- **Sync before and after work**
4. Add to each bot's HEARTBEAT.md
## Task Sync (TICK.md)
- [ ] Sync tasks: `cd tasks && npx tick-md sync`
- [ ] Check for my work: `npx tick-md list --claimed-by @mybotname --status in_progress`
- [ ] Check for available tasks: `npx tick-md list --status backlog --priority high`
5. Deploy keys
Each bot needs SSH access to the shared repo. Generate a deploy key on each server:
ssh-keygen -t ed25519 -C "botname@tasks" -f ~/.ssh/tasks_deploy -N ""
cat ~/.ssh/tasks_deploy.pub
# Add this to repo Settings β Deploy Keys (with write access)
Configure git to use it:
cd tasks
git config core.sshCommand "ssh -i ~/.ssh/tasks_deploy -o IdentitiesOnly=yes"
6. Sync command for bots
After any tick mutation, push changes:
cd tasks && git push
Or use tick sync which handles pull + push automatically.
π¦ Package Info
- CLI:
tick-mdon npm - MCP Server:
tick-mcp-serveron npm - GitHub: https://github.com/Purple-Horizons/tick-md
- License: MIT
π Support
- GitHub Issues: https://github.com/Purple-Horizons/tick-md/issues
- Sponsor: https://github.com/sponsors/Purple-Horizons
