Based on claude-code-tools TmuxCLIController, this refactor: - Added DockerTmuxController class for robust tmux session management - Implements send_keys() with configurable delay_enter - Implements capture_pane() for output retrieval - Implements wait_for_prompt() for pattern-based completion detection - Implements wait_for_idle() for content-hash-based idle detection - Implements wait_for_shell_prompt() for shell prompt detection Also includes workflow improvements: - Pre-task git snapshot before agent execution - Post-task commit protocol in agent guidelines Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
468 lines
10 KiB
JSON
468 lines
10 KiB
JSON
{
|
|
"orchestrator": {
|
|
"name": "sarlo-orchestrator",
|
|
"description": "Central orchestrator for all Sarlo server projects",
|
|
"model": "sonnet",
|
|
"max_concurrent_subagents": 10
|
|
},
|
|
"qa_preflight": {
|
|
"enabled": true,
|
|
"check_timeout_seconds": 10,
|
|
"timeout_categories": {
|
|
"short": 300,
|
|
"long": 600,
|
|
"async": 0
|
|
},
|
|
"logging_level": "info",
|
|
"block_on_service_unhealthy": false,
|
|
"block_on_privilege_required": true,
|
|
"block_on_capability_gap": true,
|
|
"warn_on_timeout_mismatch": true,
|
|
"use_historical_learning": true
|
|
},
|
|
"projects": {
|
|
"admin": {
|
|
"path": "/home/admin",
|
|
"description": "System administration",
|
|
"subagent_model": "haiku",
|
|
"tools": [
|
|
"Read",
|
|
"Bash",
|
|
"Glob",
|
|
"Grep"
|
|
],
|
|
"focus": "Server management, user admin, MCP servers",
|
|
"color": "#FFFFFF"
|
|
},
|
|
"overbits": {
|
|
"path": "/home/overbits",
|
|
"description": "Digital Production Factory",
|
|
"subagent_model": "haiku",
|
|
"tools": [
|
|
"Read",
|
|
"Edit",
|
|
"Bash",
|
|
"Glob",
|
|
"Grep"
|
|
],
|
|
"focus": "React/TypeScript frontend development",
|
|
"color": "#FFFF00"
|
|
},
|
|
"musica": {
|
|
"path": "/home/musica",
|
|
"description": "Digital Music Portal",
|
|
"subagent_model": "haiku",
|
|
"tools": [
|
|
"Read",
|
|
"Edit",
|
|
"Bash",
|
|
"Glob",
|
|
"Grep"
|
|
],
|
|
"focus": "Music app, Strudel patterns, React frontend",
|
|
"color": "#FF00FF"
|
|
},
|
|
"dss": {
|
|
"path": "/home/dss",
|
|
"description": "Digital Signature Service",
|
|
"subagent_model": "haiku",
|
|
"tools": [
|
|
"Read",
|
|
"Edit",
|
|
"Bash",
|
|
"Glob",
|
|
"Grep"
|
|
],
|
|
"focus": "TypeScript backend, cryptography",
|
|
"color": "#00FFFF",
|
|
"extra_mounts": [
|
|
"/opt/dss:/opt/dss"
|
|
]
|
|
},
|
|
"librechat": {
|
|
"path": "/home/librechat",
|
|
"description": "LibreChat AI Platform",
|
|
"subagent_model": "haiku",
|
|
"tools": [
|
|
"Read",
|
|
"Bash",
|
|
"Glob",
|
|
"Grep"
|
|
],
|
|
"focus": "Chat platform operations",
|
|
"color": "#00FF00"
|
|
},
|
|
"bbot": {
|
|
"path": "/home/bbot",
|
|
"description": "Trading Bot",
|
|
"subagent_model": "haiku",
|
|
"tools": [
|
|
"Read",
|
|
"Bash",
|
|
"Glob",
|
|
"Grep"
|
|
],
|
|
"focus": "Trading automation",
|
|
"color": "#FF6600"
|
|
},
|
|
"assistant": {
|
|
"path": "/home/assistant",
|
|
"description": "Bruno's Personal AI Assistant",
|
|
"subagent_model": "haiku",
|
|
"tools": [
|
|
"Read",
|
|
"Edit",
|
|
"Bash",
|
|
"Glob",
|
|
"Grep"
|
|
],
|
|
"focus": "Bruno's Personal AI Assistant",
|
|
"color": "#FF1493"
|
|
},
|
|
"botum": {
|
|
"path": "/home/botum",
|
|
"description": "Project user",
|
|
"subagent_model": "haiku",
|
|
"tools": [
|
|
"Read",
|
|
"Edit",
|
|
"Bash",
|
|
"Glob",
|
|
"Grep"
|
|
],
|
|
"focus": "Project user",
|
|
"color": "#87CEEB"
|
|
},
|
|
"bruno": {
|
|
"path": "/home/bruno",
|
|
"description": "Project user",
|
|
"subagent_model": "haiku",
|
|
"tools": [
|
|
"Read",
|
|
"Edit",
|
|
"Bash",
|
|
"Glob",
|
|
"Grep"
|
|
],
|
|
"focus": "Project user",
|
|
"color": "#DDA0DD"
|
|
},
|
|
"claude": {
|
|
"path": "/home/claude",
|
|
"description": "Claude Integration Agent",
|
|
"subagent_model": "haiku",
|
|
"tools": [
|
|
"Read",
|
|
"Edit",
|
|
"Bash",
|
|
"Glob",
|
|
"Grep"
|
|
],
|
|
"focus": "Claude Integration Agent",
|
|
"color": "#4169E1"
|
|
},
|
|
"collabook": {
|
|
"path": "/home/collabook",
|
|
"description": "Collaboration notebook",
|
|
"subagent_model": "haiku",
|
|
"tools": [
|
|
"Read",
|
|
"Edit",
|
|
"Bash",
|
|
"Glob",
|
|
"Grep"
|
|
],
|
|
"focus": "Collaboration notebook",
|
|
"color": "#90EE90"
|
|
},
|
|
"gemini": {
|
|
"path": "/home/gemini",
|
|
"description": "Gemini Integration Agent",
|
|
"subagent_model": "haiku",
|
|
"tools": [
|
|
"Read",
|
|
"Edit",
|
|
"Bash",
|
|
"Glob",
|
|
"Grep"
|
|
],
|
|
"focus": "Gemini Integration Agent",
|
|
"color": "#FFD700"
|
|
},
|
|
"luzia": {
|
|
"path": "/opt/server-agents/orchestrator",
|
|
"description": "Luzia Orchestrator (dogfooding)",
|
|
"subagent_model": "sonnet",
|
|
"tools": [
|
|
"Read",
|
|
"Edit",
|
|
"Bash",
|
|
"Glob",
|
|
"Grep",
|
|
"Write"
|
|
],
|
|
"focus": "Self-improvement, orchestration CLI, meta-development",
|
|
"color": "#FF6B6B",
|
|
"user": "admin"
|
|
},
|
|
"git": {
|
|
"path": "/home/git",
|
|
"description": "Project user",
|
|
"subagent_model": "haiku",
|
|
"tools": [
|
|
"Read",
|
|
"Edit",
|
|
"Bash",
|
|
"Glob",
|
|
"Grep"
|
|
],
|
|
"focus": "Project user"
|
|
},
|
|
"gitea": {
|
|
"path": "/home/gitea",
|
|
"description": "Gitea",
|
|
"subagent_model": "haiku",
|
|
"tools": [
|
|
"Read",
|
|
"Edit",
|
|
"Bash",
|
|
"Glob",
|
|
"Grep"
|
|
],
|
|
"focus": "Gitea"
|
|
},
|
|
"guest": {
|
|
"path": "/home/guest",
|
|
"description": "Web Guest Account",
|
|
"subagent_model": "haiku",
|
|
"tools": [
|
|
"Read",
|
|
"Edit",
|
|
"Bash",
|
|
"Glob",
|
|
"Grep"
|
|
],
|
|
"focus": "Web Guest Account"
|
|
},
|
|
"josito": {
|
|
"path": "/home/josito",
|
|
"description": "Josito (8 years old)",
|
|
"subagent_model": "haiku",
|
|
"tools": [
|
|
"Read",
|
|
"Edit",
|
|
"Bash",
|
|
"Glob",
|
|
"Grep"
|
|
],
|
|
"focus": "Josito (8 years old)"
|
|
},
|
|
"liza": {
|
|
"path": "/home/liza",
|
|
"description": "Liza",
|
|
"subagent_model": "haiku",
|
|
"tools": [
|
|
"Read",
|
|
"Edit",
|
|
"Bash",
|
|
"Glob",
|
|
"Grep"
|
|
],
|
|
"focus": "Liza"
|
|
},
|
|
"luzuy": {
|
|
"path": "/home/luzuy",
|
|
"description": "Luz.uy Operator",
|
|
"subagent_model": "haiku",
|
|
"tools": [
|
|
"Read",
|
|
"Edit",
|
|
"Bash",
|
|
"Glob",
|
|
"Grep"
|
|
],
|
|
"focus": "Luz.uy Operator"
|
|
},
|
|
"miguel": {
|
|
"path": "/home/miguel",
|
|
"description": "Project user",
|
|
"subagent_model": "haiku",
|
|
"tools": [
|
|
"Read",
|
|
"Edit",
|
|
"Bash",
|
|
"Glob",
|
|
"Grep"
|
|
],
|
|
"focus": "Project user"
|
|
},
|
|
"nico": {
|
|
"path": "/home/nico",
|
|
"description": "Nico's operator workspace",
|
|
"subagent_model": "haiku",
|
|
"tools": [
|
|
"Read",
|
|
"Edit",
|
|
"Bash",
|
|
"Glob",
|
|
"Grep"
|
|
],
|
|
"focus": "Nico's operator workspace"
|
|
},
|
|
"oscar": {
|
|
"path": "/home/oscar",
|
|
"description": "Oscar Sarlo",
|
|
"subagent_model": "haiku",
|
|
"tools": [
|
|
"Read",
|
|
"Edit",
|
|
"Bash",
|
|
"Glob",
|
|
"Grep"
|
|
],
|
|
"focus": "Oscar Sarlo"
|
|
},
|
|
"presi": {
|
|
"path": "/home/presi",
|
|
"description": "Project presi",
|
|
"subagent_model": "haiku",
|
|
"tools": [
|
|
"Read",
|
|
"Edit",
|
|
"Bash",
|
|
"Glob",
|
|
"Grep"
|
|
],
|
|
"focus": "Project presi"
|
|
},
|
|
"rio": {
|
|
"path": "/home/rio",
|
|
"description": "Rio",
|
|
"subagent_model": "haiku",
|
|
"tools": [
|
|
"Read",
|
|
"Edit",
|
|
"Bash",
|
|
"Glob",
|
|
"Grep"
|
|
],
|
|
"focus": "Rio"
|
|
},
|
|
"rut": {
|
|
"path": "/home/rut",
|
|
"description": "Ruth (Mother)",
|
|
"subagent_model": "haiku",
|
|
"tools": [
|
|
"Read",
|
|
"Edit",
|
|
"Bash",
|
|
"Glob",
|
|
"Grep"
|
|
],
|
|
"focus": "Ruth (Mother)"
|
|
},
|
|
"sarlo": {
|
|
"path": "/home/sarlo",
|
|
"description": "Sarlo",
|
|
"subagent_model": "haiku",
|
|
"tools": [
|
|
"Read",
|
|
"Edit",
|
|
"Bash",
|
|
"Glob",
|
|
"Grep"
|
|
],
|
|
"focus": "Sarlo"
|
|
},
|
|
"vita": {
|
|
"path": "/home/vita",
|
|
"description": "Project user",
|
|
"subagent_model": "haiku",
|
|
"tools": [
|
|
"Read",
|
|
"Edit",
|
|
"Bash",
|
|
"Glob",
|
|
"Grep"
|
|
],
|
|
"focus": "Project user"
|
|
},
|
|
"livekit-agents": {
|
|
"path": "/home/livekit-agents",
|
|
"description": "LiveKit Agents - Real-time AI voice/video agent framework",
|
|
"subagent_model": "sonnet",
|
|
"tools": [
|
|
"Read",
|
|
"Write",
|
|
"Edit",
|
|
"Bash",
|
|
"Glob",
|
|
"Grep",
|
|
"WebFetch",
|
|
"WebSearch"
|
|
]
|
|
}
|
|
},
|
|
"shared_tools": {
|
|
"zen": "Deep reasoning via PAL MCP",
|
|
"sarlo-admin": "Server administration"
|
|
},
|
|
"routes": {
|
|
"management": [
|
|
"list",
|
|
"status",
|
|
"stop",
|
|
"cleanup",
|
|
"logs"
|
|
],
|
|
"project_execution": [
|
|
"<project> <task>"
|
|
],
|
|
"special_operations": [
|
|
"work on <project>",
|
|
"think deep <topic>",
|
|
"research <topic>",
|
|
"fix <issue>"
|
|
],
|
|
"internal": [
|
|
"--exec <project> <command>",
|
|
"--write <project> <path> <content>",
|
|
"--read <project> <path>",
|
|
"--context <project>"
|
|
]
|
|
},
|
|
"troubleshooting": {
|
|
"config_corrupted": {
|
|
"error_patterns": [
|
|
"configuration corrupted",
|
|
"invalid json",
|
|
"corrupted",
|
|
"config"
|
|
],
|
|
"fix": "Run restore script in user home: ~/restore-claude-config.sh",
|
|
"source_script": "/home/dss/restore-claude-config.sh",
|
|
"note": "Script should exist in each project home"
|
|
},
|
|
"build_failed": {
|
|
"error_patterns": [
|
|
"build failed",
|
|
"build error",
|
|
"build"
|
|
],
|
|
"fix": "Check npm/cargo logs, verify dependencies, run clean build",
|
|
"source_script": null,
|
|
"note": "Run: npm cache clean && npm install or cargo clean && cargo build"
|
|
},
|
|
"container_issue": {
|
|
"error_patterns": [
|
|
"container",
|
|
"docker",
|
|
"connection refused"
|
|
],
|
|
"fix": "Restart Docker daemon or check container logs: docker logs <container>",
|
|
"source_script": null,
|
|
"note": "Use: luzia stop <project> && luzia <project> <task>"
|
|
}
|
|
}
|
|
}
|