This guide walks you through using the system hands-on, building artifacts progressively.
# Check if AgentStore exists
ls -la ~/Dropbox/AgentStore/
# If it doesn't exist, create the structure:
mkdir -p ~/Dropbox/AgentStore/{messaging/{inbox,outbox,processed_inbox,processed_outbox},users,projects,Queues,JSONValidation/Schemas,logs}# Copy schemas from the project to AgentStore
cp ~/Dropbox/AgentStore/JSONValidation/Schemas/*.json ~/Dropbox/AgentStore/JSONValidation/Schemas/ 2>/dev/null || echo "Schemas may need to be created"
# Or create them using the system's built-in schemas (if available)
# Check what's already there:
ls -la ~/Dropbox/AgentStore/JSONValidation/Schemas/# Copy example config
cp config.example.yaml ~/Dropbox/AgentStore/config.yaml
# Edit if needed (optional for now)
cat ~/Dropbox/AgentStore/config.yamlCreate ~/Dropbox/AgentStore/users/learner.json:
{
"id": "learner",
"slack_username": "learner",
"name": "System Learner",
"email": "learner@example.com",
"permissions": "admin"
}Command to create it:
cat > ~/Dropbox/AgentStore/users/learner.json << 'EOF'
{
"id": "learner",
"slack_username": "learner",
"name": "System Learner",
"email": "learner@example.com",
"permissions": "admin"
}
EOFPYTHONPATH=. python3 -m src.cli.cli list-usersExpected output: Should show your learner user
# Create a simple demo project
mkdir -p ~/demo-project
cd ~/demo-project
git init
echo "# Demo Project" > README.md
echo "print('Hello from demo project')" > main.py
git add .
git commit -m "Initial commit"
cd -Create ~/Dropbox/AgentStore/projects/DemoProject/project.json:
{
"id": "DemoProject",
"directory": "~/demo-project",
"git_repository": "file://~/demo-project",
"create_time": "2025-10-27T12:00:00Z",
"update_time": "2025-10-27T12:00:00Z",
"description": "Demo project for learning the orchestration system",
"owner": "learner",
"collaborators": [],
"code_research_document": "~/demo-project/RESEARCH.md",
"default_queue": "learning-queue"
}Command to create it:
mkdir -p ~/Dropbox/AgentStore/projects/DemoProject/{queued_prds,running_prds,finished_prds}
cat > ~/Dropbox/AgentStore/projects/DemoProject/project.json << 'EOF'
{
"id": "DemoProject",
"directory": "~/demo-project",
"git_repository": "file://~/demo-project",
"create_time": "2025-10-27T12:00:00Z",
"update_time": "2025-10-27T12:00:00Z",
"description": "Demo project for learning the orchestration system",
"owner": "learner",
"collaborators": [],
"code_research_document": "~/demo-project/RESEARCH.md",
"default_queue": "learning-queue"
}
EOFPYTHONPATH=. python3 -m src.cli.cli list-projects
PYTHONPATH=. python3 -m src.cli.cli view-project DemoProjectCreate queue directories and configuration:
mkdir -p ~/Dropbox/AgentStore/Queues/learning-queue/Jobs/{queued_jobs,running_jobs,finished_jobs,failed_jobs}Create ~/Dropbox/AgentStore/Queues/learning-queue/queue.json:
{
"config": {
"id": "learning-queue",
"worker_count": 2,
"claude_cli_path": "claude",
"rest_interval": 30,
"claude_default_args": ["-p"],
"max_job_runtime_seconds": 1800
},
"runtime": {
"process_id": null,
"active_jobs": 0,
"last_update": null,
"queued_jobs": 0
}
}Command:
cat > ~/Dropbox/AgentStore/Queues/learning-queue/queue.json << 'EOF'
{
"config": {
"id": "learning-queue",
"worker_count": 2,
"claude_cli_path": "claude",
"rest_interval": 30,
"claude_default_args": ["-p"],
"max_job_runtime_seconds": 1800
},
"runtime": {
"process_id": null,
"active_jobs": 0,
"last_update": null,
"queued_jobs": 0
}
}
EOFPYTHONPATH=. python3 -m src.cli.cli list-queues
PYTHONPATH=. python3 -m src.cli.cli view-queue learning-queuePYTHONPATH=. python3 -m src.cli.cli login learnerExpected: "Logged in as: learner"
PYTHONPATH=. python3 -m src.cli.cli set-project DemoProjectExpected: "Current project set to: DemoProject"
cat ~/.orchestrator_config.jsonExpected: Shows username=learner, project=DemoProject
cd /home/chenry/projects/ClaudeProjects/AgenticOrchestrationSystem
PYTHONPATH=. python3 -m src.orchestrator.orchestratorExpected: See "Orchestrator started" and polling messages
Leave this running!
cd /home/chenry/projects/ClaudeProjects/AgenticOrchestrationSystem
PYTHONPATH=. python3 -m src.queue_manager.queue_manager learning-queueExpected: See "Queue manager started for learning-queue"
Leave this running!
cd /home/chenry/projects/ClaudeProjects/AgenticOrchestrationSystem
# Check orchestrator lock
cat ~/Dropbox/AgentStore/.orchestrator.lock
# Check queue runtime
PYTHONPATH=. python3 -m src.cli.cli view-queue learning-queue --format json
# Check logs
tail -f ~/Dropbox/AgentStore/logs/orchestrator.logFirst, ensure you have the Claude Code commands the system expects.
Create ~/.claude/commands/code-researcher.md:
mkdir -p ~/.claude/commands
cat > ~/.claude/commands/code-researcher.md << 'EOF'
You are a code researcher. Analyze the codebase in the current directory and create a comprehensive research document.
Include:
1. Project structure and architecture
2. Key modules and their purposes
3. Dependencies and technologies used
4. Entry points and main workflows
5. Configuration files and their purposes
Write your findings in markdown format.
EOFPYTHONPATH=. python3 -m src.cli.cli research-code --project DemoProjectExpected: "Message queued: <correlation_id>"
In Terminal 1 (orchestrator), watch for:
- "Processing message: <correlation_id>"
- "Job created: <job_id> on queue learning-queue"
In Terminal 2 (queue manager), watch for:
- "Starting job: <job_id>"
- Job execution messages
# List all jobs
PYTHONPATH=. python3 -m src.cli.cli list-jobs
# View specific job (use job ID from above)
PYTHONPATH=. python3 -m src.cli.cli view-job <job-id> --format json# Check queued jobs
ls ~/Dropbox/AgentStore/Queues/learning-queue/Jobs/queued_jobs/
# Check running jobs
ls ~/Dropbox/AgentStore/Queues/learning-queue/Jobs/running_jobs/
# Check finished jobs (after completion)
ls ~/Dropbox/AgentStore/Queues/learning-queue/Jobs/finished_jobs/
cat ~/Dropbox/AgentStore/Queues/learning-queue/Jobs/finished_jobs/<job-id>.json | jq .# Once job completes, check if research doc was created
cat ~/demo-project/RESEARCH.mdCreate ~/Dropbox/AgentStore/projects/DemoProject/queued_prds/prd-demo-001.json:
{
"id": "prd-demo-001",
"project": "DemoProject",
"title": "Add Calculator Feature",
"version": "1.0",
"owner": "learner",
"status": "queued",
"created_time": "2025-10-27T13:00:00Z",
"update_time": "2025-10-27T13:00:00Z",
"content": "# Calculator Feature PRD\n\n## Overview\nAdd a simple calculator to the demo project.\n\n## Requirements\n- Support add, subtract, multiply, divide\n- Handle division by zero\n- Command-line interface\n\n## Implementation\n- Create calculator.py module\n- Add unit tests\n- Update README",
"jobs": [],
"implementation_report": null
}Command:
cat > ~/Dropbox/AgentStore/projects/DemoProject/queued_prds/prd-demo-001.json << 'EOF'
{
"id": "prd-demo-001",
"project": "DemoProject",
"title": "Add Calculator Feature",
"version": "1.0",
"owner": "learner",
"status": "queued",
"created_time": "2025-10-27T13:00:00Z",
"update_time": "2025-10-27T13:00:00Z",
"content": "# Calculator Feature PRD\n\n## Overview\nAdd a simple calculator to the demo project.\n\n## Requirements\n- Support add, subtract, multiply, divide\n- Handle division by zero\n- Command-line interface\n\n## Implementation\n- Create calculator.py module\n- Add unit tests\n- Update README",
"jobs": [],
"implementation_report": null
}
EOFPYTHONPATH=. python3 -m src.cli.cli list-prds
PYTHONPATH=. python3 -m src.cli.cli view-prd prd-demo-001 --format jsonPYTHONPATH=. python3 -m src.cli.cli set-prd prd-demo-001
cat ~/.orchestrator_config.jsonCreate ~/.claude/commands/task-creator.md:
cat > ~/.claude/commands/task-creator.md << 'EOF'
You are a task creator. Based on the PRD provided in the supporting data, create a detailed task list.
Break down the requirements into:
1. Specific implementation tasks
2. Testing tasks
3. Documentation tasks
Format as a markdown checklist with clear, actionable items.
EOFPYTHONPATH=. python3 -m src.cli.cli create-tasks --project DemoProject --prd prd-demo-001# Initially in queued_prds
ls ~/Dropbox/AgentStore/projects/DemoProject/queued_prds/
# After job completes, moves to running_prds
ls ~/Dropbox/AgentStore/projects/DemoProject/running_prds/
# View updated PRD with job reference
PYTHONPATH=. python3 -m src.cli.cli view-prd prd-demo-001 --format json# This will wait for orchestrator response
PYTHONPATH=. python3 -m src.cli.cli research-code --project DemoProject --follow 30Expected: Waits up to 30 seconds for orchestrator to respond with job creation details
mkdir -p ~/Dropbox/AgentStore/Queues/fast-queue/Jobs/{queued_jobs,running_jobs,finished_jobs,failed_jobs}
cat > ~/Dropbox/AgentStore/Queues/fast-queue/queue.json << 'EOF'
{
"config": {
"id": "fast-queue",
"worker_count": 5,
"claude_cli_path": "claude",
"rest_interval": 10,
"claude_default_args": ["-p"],
"max_job_runtime_seconds": 600
},
"runtime": {
"process_id": null,
"active_jobs": 0,
"last_update": null,
"queued_jobs": 0
}
}
EOFcd /home/chenry/projects/ClaudeProjects/AgenticOrchestrationSystem
PYTHONPATH=. python3 -m src.queue_manager.queue_manager fast-queue# Override project default queue
PYTHONPATH=. python3 -m src.cli.cli research-code --project DemoProject --queue fast-queue# View both queues
PYTHONPATH=. python3 -m src.cli.cli view-queue learning-queue
PYTHONPATH=. python3 -m src.cli.cli view-queue fast-queue
# List jobs by queue
ls ~/Dropbox/AgentStore/Queues/learning-queue/Jobs/finished_jobs/
ls ~/Dropbox/AgentStore/Queues/fast-queue/Jobs/finished_jobs/PYTHONPATH=. python3 -m src.cli.cli research-code --project NonExistentProjectExpected: Error message in outbox
# Find the correlation ID from the error message
ls ~/Dropbox/AgentStore/messaging/outbox/
# View error response
cat ~/Dropbox/AgentStore/messaging/outbox/<correlation-id>.json | jq .Temporarily rename the Claude command:
mv ~/.claude/commands/code-researcher.md ~/.claude/commands/code-researcher.md.backup
# Submit job
PYTHONPATH=. python3 -m src.cli.cli research-code --project DemoProject# Job should move to failed_jobs
watch -n 2 "ls ~/Dropbox/AgentStore/Queues/learning-queue/Jobs/failed_jobs/"
# View failed job
cat ~/Dropbox/AgentStore/Queues/learning-queue/Jobs/failed_jobs/<job-id>.json | jq .runtime.errormv ~/.claude/commands/code-researcher.md.backup ~/.claude/commands/code-researcher.md# Submit 5 jobs rapidly
for i in {1..5}; do
PYTHONPATH=. python3 -m src.cli.cli research-code --project DemoProject
echo "Submitted job $i"
done# Learning queue has worker_count=2, so only 2 should run at once
watch -n 1 "PYTHONPATH=. python3 -m src.cli.cli view-queue learning-queue | grep active_jobs"
# Also watch the job directories
watch -n 1 "ls ~/Dropbox/AgentStore/Queues/learning-queue/Jobs/*/. | wc -l"tail -n 50 ~/Dropbox/AgentStore/logs/orchestrator.log
grep ERROR ~/Dropbox/AgentStore/logs/orchestrator.logtail -n 50 ~/Dropbox/AgentStore/logs/queue-learning-queue.log
tail -n 50 ~/Dropbox/AgentStore/logs/queue-fast-queue.log# Check if event logs exist
ls ~/Dropbox/AgentStore/logs/events-*.jsonl
# View events (if available)
cat ~/Dropbox/AgentStore/logs/events-*.jsonl | jq .In Terminal 1, press Ctrl+C
Expected:
- "Shutdown signal received"
- "Orchestrator stopped"
- Lock file removed
cat ~/Dropbox/AgentStore/.orchestrator.lock
# Expected: File not found
PYTHONPATH=. python3 -m src.cli.cli orchestrator-daemon status
# Expected: "Orchestrator is not running"PYTHONPATH=. python3 -m src.cli.cli orchestrator-daemon startExpected: "Orchestrator daemon started"
PYTHONPATH=. python3 -m src.cli.cli orchestrator-daemon statusExpected: "Orchestrator is running (PID )"
PYTHONPATH=. python3 -m src.cli.cli orchestrator-daemon stopExpected: "Orchestrator stopped"
# Start orchestrator
PYTHONPATH=. python3 -m src.orchestrator.orchestrator &
ORCH_PID=$!
# Kill it ungracefully
kill -9 $ORCH_PIDcat ~/Dropbox/AgentStore/.orchestrator.lock
# Should still exist with old PIDPYTHONPATH=. python3 -m src.orchestrator.orchestratorExpected:
- "Removing stale lock file (PID )"
- "Orchestrator lock acquired (PID )"
PYTHONPATH=. python3 -m src.cli.cli list-users
PYTHONPATH=. python3 -m src.cli.cli list-projects
PYTHONPATH=. python3 -m src.cli.cli list-prds --project DemoProject
PYTHONPATH=. python3 -m src.cli.cli list-jobs --project DemoProject
PYTHONPATH=. python3 -m src.cli.cli list-queuesPYTHONPATH=. python3 -m src.cli.cli view-user learner
PYTHONPATH=. python3 -m src.cli.cli view-project DemoProject
PYTHONPATH=. python3 -m src.cli.cli view-prd prd-demo-001
PYTHONPATH=. python3 -m src.cli.cli view-job <job-id>
PYTHONPATH=. python3 -m src.cli.cli view-queue learning-queuePYTHONPATH=. python3 -m src.cli.cli list-users --format json | jq .
PYTHONPATH=. python3 -m src.cli.cli view-project DemoProject --format json | jq .Create a regular user:
cat > ~/Dropbox/AgentStore/users/regularuser.json << 'EOF'
{
"id": "regularuser",
"slack_username": "regularuser",
"name": "Regular User",
"email": "regular@example.com",
"permissions": "user"
}
EOF
# Login as regular user
PYTHONPATH=. python3 -m src.cli.cli login regularuser
# Try admin commands (may be restricted based on handlers.py implementation)
PYTHONPATH=. python3 -m src.cli.cli list-users# Stop orchestrator
PYTHONPATH=. python3 -m src.cli.cli orchestrator-daemon stop
# Stop queue managers (Ctrl+C in their terminals)
# Or find and kill them:
ps aux | grep queue_manager
kill <PID># Remove demo project
rm -rf ~/demo-project
# Remove test files from AgentStore (be careful!)
# rm -rf ~/Dropbox/AgentStore/projects/DemoProject
# rm -rf ~/Dropbox/AgentStore/Queues/learning-queue
# rm -rf ~/Dropbox/AgentStore/Queues/fast-queue
# rm ~/Dropbox/AgentStore/users/learner.json
# rm ~/Dropbox/AgentStore/users/regularuser.json✅ Setup: Created users, projects, and queues ✅ CLI: Used all major commands (list, view, set, login) ✅ Job Submission: Submitted jobs via messaging system ✅ Job Lifecycle: Watched jobs move through queued → running → finished ✅ Queue Management: Tested multiple queues and worker limits ✅ Error Handling: Saw how system handles invalid inputs and failures ✅ Daemon Control: Started, stopped, and recovered daemons ✅ Logging: Explored logs for debugging ✅ PRD Tracking: Created and tracked PRDs through workflow ✅ System Architecture: Experienced the full file-based orchestration system
- Create Real Projects: Set up actual codebases you want to work with
- Create More Claude Commands: Add prd-creator, task-implementer, etc.
- Integrate with Dropbox: Ensure Dropbox sync is working across machines
- Set Up Multiple Queues: Different machines with different capabilities
- Production Deployment: Run daemons as systemd services or with supervisord