This guide explains how to deploy and integrate the Task Orchestrator CLI solution for orchestrating agents and delegated sub-agents in development projects.
The Task Orchestrator CLI (task-orchestrator/) provides:
- Lightweight task management for AI agents working in parallel
- Cross-worktree synchronization for git-based projects
- Dependency management between tasks
- File reference tracking for code-related tasks
- Multi-agent notifications for coordination
# Navigate to your development project
cd /path/to/your/project
# Copy the task manager solution
cp -r /path/to/task-orchestrator ./task-orchestrator
cd task-orchestrator
# Make executable
chmod +x tm
# Initialize the database
./tm init# Use directly from task-orchestrator directory
./task-orchestrator/tm add "Implement new feature"
./task-orchestrator/tm list# Add to your project's bin directory
mkdir -p ./bin
cp ./task-orchestrator/tm ./bin/
export PATH="$PATH:$(pwd)/bin"
# Now use from anywhere in project
tm add "Fix bug in authentication"# Add to your shell configuration
alias tm="$(pwd)/task-orchestrator/tm"
# Use the alias
tm list --status pendingThe orchestrating agent initializes and manages the overall task structure:
# 1. Initialize task management
tm init
# 2. Create main project structure
EPIC=$(tm add "Complete feature implementation" -p high)
# 3. Break down into sub-tasks with dependencies
API=$(tm add "Design API endpoints" --depends-on $EPIC -p high)
DB=$(tm add "Create database schema" --depends-on $API)
BACKEND=$(tm add "Implement backend logic" --depends-on $DB)
FRONTEND=$(tm add "Build UI components" --depends-on $API)
TESTS=$(tm add "Write integration tests" --depends-on $BACKEND --depends-on $FRONTEND)
# 4. Add file references for precision
tm update $API --file docs/api-spec.yaml
tm update $DB --file schema/migrations/001_initial.sql
tm update $BACKEND --file src/controllers/:src/services/
tm update $FRONTEND --file src/components/:src/views/Sub-agents pick up and execute assigned tasks:
# 1. Sub-agent checks available tasks
tm list --status pending
# 2. Claim a specific task
TASK_ID=abc12345
tm assign $TASK_ID agent_backend_specialist
tm update $TASK_ID --status in_progress
# 3. Work on the task
# ... implement the feature ...
# 4. Complete with impact review
tm complete $TASK_ID --impact-review
# 5. Check for cascading unblocks
tm watchMultiple agents working simultaneously:
# Agent 1: Frontend specialist
tm list --tag frontend --status pending
tm assign fe_task_123 agent_frontend
tm update fe_task_123 --status in_progress
# Agent 2: Backend specialist
tm list --tag backend --status pending
tm assign be_task_456 agent_backend
tm update be_task_456 --status in_progress
# Agent 3: Testing specialist (waits for dependencies)
tm list --status blocked
# Monitors for unblocking when frontend/backend complete
tm watch# Optional: Custom database location
export TM_DB_PATH=".task-orchestrator/tasks.db"
# Optional: Lock timeout (seconds)
export TM_LOCK_TIMEOUT=10
# Optional: Agent identification
export TM_AGENT_ID="orchestrator_$(hostname)"Create agent_helper.sh for common operations:
#!/bin/bash
# agent_helper.sh - Helper functions for agents
# Function to claim next available task
claim_next_task() {
local agent_id=$1
local tag=$2
# Find next pending task
local task_id=$(tm list --status pending --tag $tag --format json | jq -r '.[0].id')
if [ ! -z "$task_id" ]; then
tm assign $task_id $agent_id
tm update $task_id --status in_progress
echo $task_id
fi
}
# Function to complete task with files
complete_with_files() {
local task_id=$1
shift
local files="$@"
for file in $files; do
tm update $task_id --file $file
done
tm complete $task_id --impact-review
}tm init # Initialize database
tm add "Task title" # Create task
tm list # List all tasks
tm show <id> # Show task details
tm update <id> --status <status> # Update status
tm complete <id> # Mark complete
tm assign <id> <agent> # Assign to agent
tm watch # Monitor notifications# Dependencies
tm add "Deploy" --depends-on task1 --depends-on task2
# File references
tm add "Fix bug" --file src/auth.py:42:45
# Filtering
tm list --status pending --assignee agent1 --tag backend
# Export
tm export --format json > tasks.json
tm export --format markdown > tasks.md# .git/hooks/pre-commit
#!/bin/bash
# Check for incomplete tasks before commit
INCOMPLETE=$(tm list --status in_progress --assignee $(whoami) --format json | jq length)
if [ "$INCOMPLETE" -gt 0 ]; then
echo "Warning: You have $INCOMPLETE incomplete tasks"
tm list --status in_progress --assignee $(whoami)
fi# .github/workflows/task-check.yml
name: Task Status Check
on: [push, pull_request]
jobs:
check-tasks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Check task completion
run: |
./task-orchestrator/tm init
BLOCKED=$(./task-orchestrator/tm list --status blocked --format json | jq length)
if [ "$BLOCKED" -gt 0 ]; then
echo "::warning::There are $BLOCKED blocked tasks"
fi- Keep tasks small and actionable (2-8 hours of work)
- Use dependencies to maintain logical flow
- Add clear descriptions for complex tasks
- Always add file references for code changes
- Use line ranges for specific sections
- Update references when files are moved
- Use consistent agent IDs
- Regular
tm watchchecks for notifications - Complete tasks promptly to unblock others
- Move to
in_progresswhen starting work - Use
blockedstatus with clear dependencies - Complete with
--impact-reviewfor file changes
# Check database size
du -h .task-orchestrator/tasks.db
# Vacuum to optimize
sqlite3 .task-orchestrator/tasks.db "VACUUM;"
# Backup tasks
tm export --format json > backup-$(date +%Y%m%d).json# Check for stale locks
ls -la .task-orchestrator/.lock
# Remove if stale (use cautiously)
rm -f .task-orchestrator/.lock- Database Lock Timeout
# Increase timeout
export TM_LOCK_TIMEOUT=30- Cross-Worktree Access
# Ensure database is at repository root
cd $(git rev-parse --show-toplevel)
./task-orchestrator/tm init- Agent ID Conflicts
# Use unique agent IDs
export TM_AGENT_ID="agent_$(hostname)_$(date +%s)"- Local Storage: All data stored locally in repository
- No Network Access: Completely offline operation
- File Permissions: Ensure proper permissions on database
chmod 660 .task-orchestrator/tasks.db# Orchestrator creates feature branches
tm add "Feature A" --tag feature-a
tm add "Feature B" --tag feature-b
# Agents work on different features
tm list --tag feature-a # Agent 1
tm list --tag feature-b # Agent 2# Create tasks for each service
tm add "Update auth service" --file services/auth/
tm add "Update user service" --file services/user/
tm add "Update API gateway" --file services/gateway/
# Service-specific agents claim their tasks
tm list --file services/auth/ # Auth team agent# Create bug task with reproduction
BUG=$(tm add "Fix login timeout" -p critical --tag bug)
tm update $BUG --file src/auth/session.js:234
# Assign to specialist
tm assign $BUG agent_auth_expert
# Track fix and testing
TEST=$(tm add "Test login timeout fix" --depends-on $BUG)
tm assign $TEST agent_qaThe Task Orchestrator CLI provides a lightweight, effective solution for coordinating multiple AI agents in development projects. Its file-based approach ensures portability, while SQLite provides reliability and concurrent access support. Deploy it in your project to enable efficient multi-agent collaboration with clear task tracking and dependency management.