Your First Project
This walkthrough creates a project using the built-in HTTP API example, then starts the orchestrator.
Initialize with an Example
mkdir my-project && cd my-project
crux init --example httpapi
This creates:
my-project/
├── .crux/
│ └── config.yaml # Orchestrator configuration
├── docs/
│ └── phases/
│ ├── PHASE1A.md # Phase spec: project skeleton
│ ├── PHASE1A-PROMPT.md # Prompt contract
│ ├── PHASE1B.md # Phase spec: HTTP handlers
│ └── PHASE1B-PROMPT.md # Prompt contract
└── work-notes/ # Auto-generated per-phase notes
Configure Agents
Edit .crux/config.yaml to define your agents:
project:
name: my-project
root: .
state_dir: .crux
agents:
orchestrator:
plugin: claude
role: orchestrator
permission: elevated
engineer-1:
plugin: claude
role: engineer
permission: standard
memory:
sqlite_path: .crux/memory.db
vector_dir: .crux/vectors
phases:
spec_dir: docs/phases
security:
audit_log: .crux/audit.log
max_cmds_per_min: 60
max_files_per_session: 100
Inspect Phases
# List all phases
crux phase list
# Show details for phase 1A
crux phase show 1A
# Validate all specs
crux phase validate
Start Orchestration
crux start
Crux launches tmux sessions for each agent, assigns prompts from your phase docs, and begins the execution loop:
- Poll agent panes for output
- Parse completion markers through plugin adapters
- Run verification gates (
go build,go test,go vet) - Record decisions in the journal
- Advance to the next prompt
Monitor Progress
In another terminal:
# Live status
crux status
# View work notes
crux notes show 1A
# Search past decisions
crux decisions search "architecture choice"
# View audit log
crux audit list --since 1h
Create Your Own Phases
crux phase create --id 2A --name "Database Layer" --depends-on 1A --prompts 3
This generates PHASE2A.md (spec) and PHASE2A-PROMPT.md (prompt contract) in your phases directory. Edit them to define scope, tasks, files, and exit criteria.