Files
luzia/README.md
admin ec33ac1936 Refactor cockpit to use DockerTmuxController pattern
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>
2026-01-14 10:42:16 -03:00

721 lines
16 KiB
Markdown

# Luzia CLI - Unified Orchestration for AI Agent Tasks
Luzia is a unified command-line interface for dispatching and managing AI agent tasks across multiple projects. It provides pattern-based routing, Docker container isolation, background job management, knowledge graph integration, and research capabilities.
## Table of Contents
- [Quick Start](#quick-start)
- [Architecture](#architecture)
- [Command Reference](#command-reference)
- [Project Task Dispatch](#project-task-dispatch)
- [Project Management](#project-management)
- [Job Management](#job-management)
- [Failure Management](#failure-management)
- [Maintenance](#maintenance)
- [Research](#research)
- [Deep Reasoning](#deep-reasoning)
- [Documentation & QA](#documentation--qa)
- [Internal Commands](#internal-commands)
- [Configuration](#configuration)
- [Permissions](#permissions)
- [Exit Codes](#exit-codes)
- [Examples](#examples)
---
## Quick Start
```bash
# List available projects
luzia list
# Dispatch a task to a project
luzia musica "fix the audio playback bug"
# Check job status
luzia jobs
# View project history
luzia history musica
```
---
## Architecture
### Core Components
```
┌─────────────────────────────────────────────────────────────────┐
│ LUZIA CLI │
│ Pattern-based routing dispatcher │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Projects │ │ Docker │ │ Knowledge │ │
│ │ Config │ │ Bridge │ │ Graph │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │ │ │ │
│ v v v │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ config.json │ │ Containers │ │ SQLite │ │
│ │ │ │ (per-proj) │ │ Databases │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
```
### Key Directories
| Path | Description |
|------|-------------|
| `/opt/server-agents/orchestrator/` | Luzia installation |
| `/opt/server-agents/orchestrator/bin/luzia` | Main CLI script |
| `/opt/server-agents/orchestrator/lib/` | Library modules |
| `/opt/server-agents/orchestrator/config.json` | Project configuration |
| `/var/log/luz-orchestrator/` | Log directory |
| `/var/log/luz-orchestrator/jobs/` | Background job storage |
| `/etc/zen-swarm/memory/` | Knowledge graph databases |
### Execution Model
1. **Natural Language Tasks**: Spawn autonomous Claude agents with full permissions
2. **Shell Commands**: Execute directly in project Docker containers
3. **Background Jobs**: Track with job IDs, monitor completion via notifications
---
## Command Reference
### Project Task Dispatch
The primary way to interact with projects:
```bash
luzia <project> <task>
```
#### Behavior
- **Natural language tasks** (e.g., "fix the login bug") spawn a Claude agent
- **Shell commands** (e.g., `npm install`) execute directly in Docker container
- Returns immediately with job ID: `agent:<project>:<job_id>`
#### Shell Command Detection
These prefixes trigger direct execution:
`npm`, `node`, `python`, `pip`, `git`, `ls`, `cat`, `grep`, `find`, `make`, `cargo`, `go`, `yarn`, `pnpm`, `docker`, `cd`, `pwd`, `echo`, `touch`, `mkdir`, `rm`, `cp`, `mv`, `curl`, `wget`, `which`, `env`, `export`, `source`, `bash`, `./`, `sh`, `test`
#### Examples
```bash
# Natural language task (spawns Claude agent)
luzia musica "add dark mode to the settings page"
# Shell command (direct execution)
luzia overbits npm run build
# Show project info only
luzia dss
```
#### Options
| Flag | Description |
|------|-------------|
| `--verbose` | Show detailed output |
| `--fg` | Run in foreground (shell commands only) |
---
### Project Management
#### `luzia list`
List all registered projects with status.
```bash
luzia list
luzia list --verbose # Include focus areas
```
Output shows:
- `[RUN]` - Container is running
- `[---]` - Container stopped
#### `luzia status [project] [--conductor]`
Show system status including active tasks and containers.
```bash
luzia status # All projects
luzia status musica # Specific project
luzia status --conductor # Conductor tasks only
```
#### `luzia stop <project>`
Stop a project's Docker container.
```bash
luzia stop musica
```
#### `luzia history <project> [limit]`
View recent changes from the project's knowledge graph.
```bash
luzia history musica
luzia history overbits 20
```
---
### Job Management
#### `luzia jobs [job_id]`
List or inspect background jobs.
```bash
# List recent jobs (last 20)
luzia jobs
# Show specific job details
luzia jobs 143521-ab12
```
Output indicators:
- `[✓]` - Completed
- `[…]` - Running
- `🤖` - Agent task
- `📦` - Docker command
#### `luzia logs <project|job_id>`
View logs for a project or specific job.
```bash
luzia logs musica # Latest project log
luzia logs 143521-ab12 # Specific job output
```
#### `luzia kill <job_id>`
Terminate a running agent.
```bash
luzia kill 143521-ab12
```
#### `luzia notify [limit]`
View agent completion notifications.
```bash
luzia notify # Last 10
luzia notify 20 # Last 20
```
---
### Failure Management
Smart retry system with exit code classification.
#### `luzia failures [options]`
List and manage failed jobs.
```bash
# List recent failures
luzia failures
# Show specific failure details
luzia failures 143521-ab12
# Summary by exit code
luzia failures --summary
# Auto-retry all fixable failures
luzia failures --auto-retry
```
#### `luzia retry <job_id>`
Retry a specific failed job.
```bash
luzia retry 143521-ab12
```
#### Exit Code Classification
| Code | Meaning | Retryable |
|------|---------|-----------|
| 0 | Success | No |
| 1 | General error | Yes |
| 2 | Shell misuse | No |
| 126 | Permission denied | No |
| 127 | Command not found | No |
| 130 | SIGINT (Ctrl+C) | Yes |
| 137 | SIGKILL (OOM) | Yes |
| 143 | SIGTERM | Yes |
| 254 | Claude CLI error | Yes |
| -9 | Killed by user | No |
---
### Maintenance
#### `luzia cleanup [subcommand] [--dry-run]`
Clean up old jobs, containers, and logs.
```bash
# Full maintenance
luzia cleanup
# Preview only
luzia cleanup --dry-run
# Specific cleanups
luzia cleanup jobs # Old job directories
luzia cleanup containers # Stale containers
luzia cleanup conductor # Stale conductor tasks
luzia cleanup all # Everything
```
#### `luzia maintenance`
Show maintenance status and recommendations.
```bash
luzia maintenance
```
Displays:
- Job statistics (total, running, completed, failed)
- Container count and age
- Disk usage
- Retention policy settings
- Recommendations for cleanup
#### Retention Policy
| Setting | Value |
|---------|-------|
| `JOB_MAX_COUNT` | 50 (always keep last N) |
| `JOB_MAX_AGE_DAYS` | 3 days (completed jobs) |
| `JOB_FAILED_MAX_AGE_DAYS` | 7 days (failed jobs) |
| `CONTAINER_MAX_LIFETIME_HOURS` | 24 hours |
| `NOTIFICATION_LOG_MAX_LINES` | 1000 lines |
---
### Research
Three-phase research flow with knowledge graph integration.
#### `luzia research [project] <topic>`
Start a research session.
```bash
luzia research admin "multi-agent orchestration patterns"
luzia deep research musica "audio synthesis libraries"
luzia web research overbits "react performance optimization"
```
#### Research Phases
1. **Context Expansion** - Expand topic into search branches
2. **Branching Web Search** - Execute parallel searches
3. **Final Synthesis** - Consolidate findings into knowledge graph
#### `luzia research-list [project]`
List research sessions.
```bash
luzia research-list admin
```
#### `luzia research-show <session_id>`
Show research session details.
```bash
luzia research-show abc12345
```
#### `luzia research-knowledge [project]`
Show project knowledge graph.
```bash
luzia research-knowledge admin
```
#### Internal Research Commands
Used during research flow:
```bash
luzia research-update <session_id> <phase> <json_data>
luzia research-graph <session_id> <entities_json>
```
---
### Deep Reasoning
#### `luzia think deep <topic>`
Enhanced deep logic framework using Zen MCP with Gemini 3.
```bash
luzia think deep "how to optimize database queries"
luzia think deep --code "implement caching layer"
luzia think deep --bug "race condition in auth"
luzia think deep --arch "microservices vs monolith"
luzia think deep --qa "test coverage strategy"
```
#### Modes
| Mode | Lens Emphasis |
|------|---------------|
| `--code` | Technical, Scale, Integration |
| `--bug` | Technical, Failure, Temporal |
| `--arch` | Technical, Scale, Integration, Temporal |
| `--qa` | User, Failure, Scale, Integration |
#### Analysis Stages
1. **Decomposition** (First Principles) - Break down to fundamental truths
2. **Multi-Lens Analysis** (Refraction) - Examine through 7 lenses
3. **Synthesis** - Combine insights, generate solutions
4. **Validation** - Checklist verification
---
### Documentation & QA
#### `luzia docs [domain] <query>`
Search knowledge graphs.
```bash
luzia docs "nginx configuration"
luzia docs sysadmin "backup"
luzia docs projects "api endpoints"
luzia docs --show entity_name
luzia docs --stats
luzia docs --sync # Sync .md files to KG
```
#### Domains
- `sysadmin` - Server admin docs, commands, procedures
- `users` - User management, permissions, workflows
- `projects` - Project-specific docs, features, APIs
- `research` - Research sessions, findings
#### `luzia qa [options]`
Run QA validation for Luzia itself.
```bash
luzia qa # Run all validations
luzia qa --test-all # Verbose output
luzia qa --update-docs # Update reference docs
luzia qa --sync # Sync to knowledge graph
```
Validates:
- Python syntax
- Route handlers
- Docstring accuracy
- Config validity
- Required directories
#### `luzia fix <issue>`
Troubleshooting helper.
```bash
luzia fix "configuration corrupted"
luzia fix "build failed"
luzia fix "container connection refused"
```
---
### Queue Commands
Load-aware task queue with priority scheduling.
#### `luzia queue [project] [--clear]`
Show queue status.
```bash
luzia queue
luzia queue --clear # Clear pending tasks
```
#### `luzia dispatch <project> <task> [options]`
Queue a task with priority.
```bash
luzia dispatch musica "fix bug" --priority 3
luzia dispatch overbits "deploy" --now # Immediate execution
```
Priority:
- 1-3: High priority tier
- 4-10: Normal priority tier
---
### Interactive Work
#### `luzia work on <project> [task]`
Interactive work session or task dispatch.
```bash
luzia work on musica
luzia work on overbits "refactor auth module"
```
For the Luzia project itself (dogfooding), spawns an interactive Claude session.
---
### Internal Commands
Used by subagents for container operations. Output is JSON.
```bash
# Execute command in container
luzia --exec <project> <command>
# Write file in container
luzia --write <project> <path> <content>
luzia --write <project> <path> - # Read content from stdin
# Read file from container
luzia --read <project> <path>
# Get project context
luzia --context <project>
```
---
## Configuration
### config.json Structure
```json
{
"orchestrator": {
"name": "sarlo-orchestrator",
"model": "sonnet",
"max_concurrent_subagents": 10
},
"projects": {
"project_name": {
"path": "/home/project_name",
"description": "Project description",
"subagent_model": "haiku",
"tools": ["Read", "Edit", "Bash", "Glob", "Grep"],
"focus": "Project focus area",
"color": "#FFFFFF",
"extra_mounts": ["/opt/path:/opt/path"],
"user": "custom_user"
}
},
"shared_tools": {
"zen": "Deep reasoning via PAL MCP",
"sarlo-admin": "Server administration"
},
"routes": {
"management": ["list", "status", "stop"],
"project_execution": ["<project> <task>"],
"special_operations": ["work on <project>", "think deep <topic>"]
}
}
```
### Project Configuration Fields
| Field | Required | Description |
|-------|----------|-------------|
| `path` | Yes | Project home directory |
| `description` | No | Human-readable description |
| `subagent_model` | No | Model for subagents (default: haiku) |
| `tools` | No | Allowed Claude tools |
| `focus` | No | Project focus area |
| `color` | No | Hex color for terminal output |
| `extra_mounts` | No | Additional Docker volume mounts |
| `user` | No | Override run-as user |
---
## Permissions
### Triple-Check Permission System
1. **Admin/Root**: Full access to all projects
2. **Operators Group**: Access to all projects
3. **Project Owner**: Access to own project
4. **Project Group Member**: Access to project
### Guest Restrictions
Guest users are limited to read-only commands:
**Allowed**: `list`, `status`, `jobs`, `logs`, `queue`, `docs`, `help`, `health`
**Blocked**: `kill`, `cleanup`, `maintenance`, `retry`, `work`, `research`, `think`, `qa`, `dispatch`
---
## Exit Codes
| Code | Meaning |
|------|---------|
| 0 | Success |
| 1 | General error / Unknown command |
| 126 | Permission denied |
---
## Examples
### Daily Workflow
```bash
# Start of day - check status
luzia status
luzia jobs
# Work on a project
luzia musica "implement the new playlist feature"
# Monitor progress
luzia jobs
luzia logs 143521-ab12
# Check for failures and retry
luzia failures
luzia retry 143521-ab12
# End of day - cleanup
luzia cleanup --dry-run
luzia cleanup
```
### Research Session
```bash
# Start research
luzia research admin "kubernetes autoscaling strategies"
# Check research status
luzia research-list admin
# View findings
luzia research-show abc12345
luzia research-knowledge admin
```
### Deep Analysis
```bash
# Architecture decision
luzia think deep --arch "event sourcing vs CRUD for order system"
# Debug complex bug
luzia think deep --bug "intermittent timeout in payment processing"
```
### Queue Management
```bash
# Queue multiple tasks
luzia dispatch musica "update dependencies" --priority 5
luzia dispatch musica "run tests" --priority 3
luzia dispatch overbits "deploy staging" --priority 1
# Check queue
luzia queue
# Execute immediately (bypass queue)
luzia dispatch admin "check disk space" --now
```
---
## Troubleshooting
### Container Issues
```bash
# Check container status
docker ps | grep luzia
# Restart container
luzia stop musica
luzia musica "test"
# Manual cleanup
luzia cleanup containers
```
### Job Stuck
```bash
# Check job status
luzia jobs <job_id>
# View output
luzia logs <job_id>
# Kill if needed
luzia kill <job_id>
```
### Permission Errors
```bash
# Check permissions
id
groups
# Verify project access
luzia --verbose <project> <task>
```
---
## Version
- **Script**: `/opt/server-agents/orchestrator/bin/luzia`
- **Version**: 1.0.0
- **Last Updated**: 2026-01-08
- **Python**: 3.10+
---
## Related Documentation
- `/opt/server-agents/docs/UNIFIED-ORCHESTRATION-ARCHITECTURE.md`
- `/opt/server-agents/docs/AI-AGENT-LUZIA-GUIDE.md`
- `/opt/server-agents/CLAUDE.md`