# Makima CLI Reference Makima is a unified CLI for server, daemon, and task management. It provides commands for running the Makima server, connecting daemon workers, and orchestrating contracts and tasks. ## Table of Contents - [Installation](#installation) - [Commands Overview](#commands-overview) - [Command Reference](#command-reference) - [makima server](#makima-server) - [makima daemon](#makima-daemon) - [makima supervisor](#makima-supervisor) - [makima contract](#makima-contract) - [Configuration](#configuration) - [Configuration File](#configuration-file) - [Environment Variables](#environment-variables) - [Usage Examples](#usage-examples) - [Starting the Server](#starting-the-server) - [Running a Daemon Worker](#running-a-daemon-worker) - [Contract Orchestration Workflow](#contract-orchestration-workflow) - [Task-Contract Interaction](#task-contract-interaction) --- ## Installation Build and install the Makima CLI from source: ```bash cd makima cargo build --release cargo install --path . ``` Or install directly: ```bash cargo install --path makima ``` The `makima` binary will be available in your PATH after installation. --- ## Commands Overview | Command | Description | |---------|-------------| | `makima server` | Run the HTTP/WebSocket server | | `makima daemon` | Connect to server and manage tasks | | `makima supervisor` | Contract orchestration commands | | `makima contract` | Task-contract interaction commands | --- ## Command Reference ### makima server Run the Makima HTTP/WebSocket server that coordinates daemons and manages contracts. ```bash makima server [OPTIONS] ``` #### Options | Option | Environment Variable | Default | Description | |--------|---------------------|---------|-------------| | `--port ` | `PORT` | `8080` | Server port | | `--parakeet-model-dir ` | `PARAKEET_MODEL_DIR` | `models/parakeet-tdt-0.6b-v3` | Path to Parakeet model directory | | `--parakeet-eou-dir ` | `PARAKEET_EOU_DIR` | `models/realtime_eou_120m-v1-onnx` | Path to Parakeet EOU model directory | | `--sortformer-model-path ` | `SORTFORMER_MODEL_PATH` | `models/diarization/diar_streaming_sortformer_4spk-v2.1.onnx` | Path to Sortformer model | | `--database-url ` | `POSTGRES_CONNECTION_URI` | - | PostgreSQL connection URI | | `-l, --log-level ` | - | `info` | Log level (trace, debug, info, warn, error) | #### Examples ```bash # Start server on default port makima server # Start server on custom port with database makima server --port 3000 --database-url "postgresql://user:pass@localhost/makima" # Start server with custom model paths makima server --parakeet-model-dir /path/to/models/parakeet ``` --- ### makima daemon Run the daemon worker that connects to the Makima server and executes tasks. ```bash makima daemon [OPTIONS] ``` #### Options | Option | Environment Variable | Default | Description | |--------|---------------------|---------|-------------| | `-c, --config ` | - | - | Path to custom config file | | `--repos-dir ` | `MAKIMA_DAEMON_REPOS_DIR` | `~/.makima/repos` | Directory where repositories are cloned | | `--worktrees-dir ` | `MAKIMA_DAEMON_WORKTREES_DIR` | `~/.makima/worktrees` | Directory where worktrees are created | | `--server-url ` | `MAKIMA_DAEMON_SERVER_URL` | `wss://api.makima.jp` | WebSocket server URL | | `--api-key ` | `MAKIMA_DAEMON_SERVER_APIKEY` | - | API key for server authentication | | `--max-tasks ` | - | `4` | Maximum number of concurrent tasks | | `-l, --log-level ` | - | `info` | Log level (trace, debug, info, warn, error) | #### Examples ```bash # Start daemon with CLI arguments makima daemon --server-url ws://localhost:8080 --api-key your-api-key # Start daemon with custom config file makima daemon --config /path/to/config.toml # Start daemon with environment variables export MAKIMA_DAEMON_SERVER_URL=ws://localhost:8080 export MAKIMA_API_KEY=your-api-key makima daemon ``` --- ### makima supervisor Supervisor commands for contract orchestration. These commands are used by orchestrators to manage tasks, branches, and pull requests. ```bash makima supervisor [OPTIONS] ``` #### Common Options All supervisor subcommands accept these common options: | Option | Environment Variable | Default | Description | |--------|---------------------|---------|-------------| | `--api-url ` | `MAKIMA_API_URL` | `https://api.makima.jp` | API URL | | `--api-key ` | `MAKIMA_API_KEY` | - | API key for authentication | | `--contract-id ` | `MAKIMA_CONTRACT_ID` | - | Contract ID | | `--task-id ` | `MAKIMA_TASK_ID` | - | Current task ID (optional) | #### Subcommands ##### tasks List all tasks in the contract. ```bash makima supervisor tasks [OPTIONS] ``` ##### tree Get the task tree structure showing parent-child relationships. ```bash makima supervisor tree [OPTIONS] ``` ##### spawn Create and start a new task. ```bash makima supervisor spawn [OPTIONS] ``` | Argument/Option | Description | |-----------------|-------------| | `` | Name of the task | | `` | Plan/description for the task | | `--parent ` | Parent task ID to branch from | | `--checkpoint ` | Checkpoint SHA to start from | | `--repo ` | Repository URL (local path or remote) | ##### wait Wait for a task to complete. ```bash makima supervisor wait [TIMEOUT] ``` | Argument | Default | Description | |----------|---------|-------------| | `` | - | Task ID to wait for | | `` | `300` | Timeout in seconds | ##### read-file Read a file from a task's worktree. ```bash makima supervisor read-file ``` ##### branch Create a git branch. ```bash makima supervisor branch [OPTIONS] ``` | Argument/Option | Description | |-----------------|-------------| | `` | Branch name to create | | `--from ` | Reference (task ID or SHA) to branch from | ##### merge Merge a task's changes to a branch. ```bash makima supervisor merge [OPTIONS] ``` | Option | Description | |--------|-------------| | `--to ` | Target branch to merge into | | `--squash` | Squash commits on merge | ##### pr Create a pull request from a task's changes. ```bash makima supervisor pr [OPTIONS] ``` | Option | Default | Description | |--------|---------|-------------| | `--title ` | - | PR title (required) | | `--body <BODY>` | - | PR body/description | | `--base <BRANCH>` | `main` | Base branch | ##### diff View a task's diff. ```bash makima supervisor diff <TASK_ID> ``` ##### checkpoint Create a checkpoint (save point) for the current task. ```bash makima supervisor checkpoint <MESSAGE> ``` ##### checkpoints List all checkpoints for the current task. ```bash makima supervisor checkpoints ``` ##### status Get contract status including current phase. ```bash makima supervisor status ``` ##### advance-phase Advance the contract to the next phase. ```bash makima supervisor advance-phase <PHASE> ``` | Argument | Description | |----------|-------------| | `<PHASE>` | Phase to advance to (specify, plan, execute, review) | ##### ask Ask a question and wait for user feedback. ```bash makima supervisor ask <QUESTION> [OPTIONS] ``` | Option | Default | Description | |--------|---------|-------------| | `--choices <CHOICES>` | - | Comma-separated list of choices | | `--context <CONTEXT>` | - | Context about what this relates to | | `--timeout <SECONDS>` | `3600` | Timeout in seconds (default: 1 hour) | --- ### makima contract Contract commands for task-contract interaction. These commands are used by tasks to interact with their parent contract. ```bash makima contract <SUBCOMMAND> [OPTIONS] ``` #### Common Options All contract subcommands accept these common options: | Option | Environment Variable | Default | Description | |--------|---------------------|---------|-------------| | `--api-url <URL>` | `MAKIMA_API_URL` | `https://api.makima.jp` | API URL | | `--api-key <KEY>` | `MAKIMA_API_KEY` | - | API key for authentication | | `--contract-id <UUID>` | `MAKIMA_CONTRACT_ID` | - | Contract ID | | `--task-id <UUID>` | `MAKIMA_TASK_ID` | - | Current task ID (optional) | #### Subcommands ##### status Get the contract status. ```bash makima contract status ``` Returns JSON with contract name, description, current phase, and status. ##### checklist Get the phase checklist with deliverables. ```bash makima contract checklist ``` Returns JSON with completion percentage, file deliverables, and suggestions. ##### goals Get the contract goals. ```bash makima contract goals ``` ##### files List all contract files. ```bash makima contract files ``` ##### file Get a specific file's content. ```bash makima contract file <FILE_ID> ``` ##### report Report progress on the contract. ```bash makima contract report <MESSAGE> ``` ##### suggest-action Get a suggested next action based on contract state. ```bash makima contract suggest-action ``` ##### completion-action Get a completion recommendation with metrics. ```bash makima contract completion-action [OPTIONS] ``` | Option | Default | Description | |--------|---------|-------------| | `--files <FILES>` | - | Comma-separated list of modified files | | `--lines-added <N>` | `0` | Number of lines added | | `--lines-removed <N>` | `0` | Number of lines removed | | `--code` | - | Flag indicating code changes | ##### update-file Update an existing contract file (reads content from stdin). ```bash cat content.md | makima contract update-file <FILE_ID> ``` ##### create-file Create a new contract file (reads content from stdin). ```bash cat content.md | makima contract create-file <NAME> ``` --- ## Configuration ### Configuration File The daemon loads configuration from multiple sources in order of precedence (highest first): 1. CLI arguments 2. Environment variables 3. Custom config file (if `--config` specified) 4. `./makima-daemon.toml` (current directory) 5. `~/.config/makima-daemon/config.toml` (user config) 6. `/etc/makima-daemon/config.toml` (system config, Linux only) 7. Default values #### Example Configuration File Create `makima-daemon.toml`: ```toml # Server connection settings [server] url = "ws://localhost:8080" api_key = "your-api-key" heartbeat_interval_secs = 30 reconnect_interval_secs = 5 max_reconnect_attempts = 0 # 0 = infinite # Worktree settings for task isolation [worktree] base_dir = "~/.makima/worktrees" repos_dir = "~/.makima/repos" branch_prefix = "makima/task-" cleanup_on_start = false # Process settings for Claude Code execution [process] claude_command = "claude" claude_args = [] claude_pre_args = [] enable_permissions = false disable_verbose = false max_concurrent_tasks = 4 default_timeout_secs = 0 # 0 = no timeout # Additional environment variables for Claude Code [process.env_vars] ANTHROPIC_API_KEY = "your-anthropic-key" # Local database settings [local_db] path = "~/.makima/daemon.db" # Logging settings [logging] level = "info" # trace, debug, info, warn, error format = "pretty" # pretty or json # Repository auto-clone settings [repos] home_dir = "~/.makima/home" # Auto-clone repositories on daemon startup [[repos.auto_clone]] url = "https://github.com/user/repo.git" branch = "main" shallow = true # Shorthand format also supported [[repos.auto_clone]] url = "github:user/another-repo" name = "custom-name" ``` ### Environment Variables #### Daemon Environment Variables | Variable | Description | |----------|-------------| | `MAKIMA_API_KEY` | API key for authentication (preferred) | | `MAKIMA_DAEMON_SERVER_URL` | WebSocket server URL | | `MAKIMA_DAEMON_SERVER_APIKEY` | API key (alternative) | | `MAKIMA_DAEMON_REPOS_DIR` | Repository directory | | `MAKIMA_DAEMON_WORKTREES_DIR` | Worktrees directory | | `MAKIMA_DAEMON_PROCESS_MAXCONCURRENTTASKS` | Max concurrent tasks | #### Server Environment Variables | Variable | Description | |----------|-------------| | `PORT` | Server port | | `POSTGRES_CONNECTION_URI` | PostgreSQL connection URI | | `PARAKEET_MODEL_DIR` | Parakeet model directory | | `PARAKEET_EOU_DIR` | Parakeet EOU model directory | | `SORTFORMER_MODEL_PATH` | Sortformer model path | #### Supervisor/Contract Environment Variables | Variable | Description | |----------|-------------| | `MAKIMA_API_URL` | API URL for commands | | `MAKIMA_API_KEY` | API key for authentication | | `MAKIMA_CONTRACT_ID` | Current contract ID | | `MAKIMA_TASK_ID` | Current task ID | --- ## Usage Examples ### Starting the Server ```bash # Start with defaults makima server # Start with database makima server --database-url "postgresql://localhost/makima" --port 8080 # Production setup makima server \ --port 8080 \ --database-url "$DATABASE_URL" \ --log-level info ``` ### Running a Daemon Worker ```bash # Quick start with CLI args makima daemon \ --server-url ws://localhost:8080 \ --api-key your-api-key \ --max-tasks 4 # Using environment variables export MAKIMA_DAEMON_SERVER_URL=ws://localhost:8080 export MAKIMA_API_KEY=your-api-key makima daemon # Using a config file makima daemon --config /etc/makima/daemon.toml ``` ### Contract Orchestration Workflow ```bash # Set up environment export MAKIMA_API_URL=http://localhost:8080 export MAKIMA_API_KEY=your-api-key export MAKIMA_CONTRACT_ID=your-contract-uuid # Check contract status makima supervisor status # List existing tasks makima supervisor tasks # View task tree makima supervisor tree # Spawn a new task makima supervisor spawn "Implement feature X" "Add the new feature with tests" # Wait for task completion makima supervisor wait <task-id> 600 # View task diff makima supervisor diff <task-id> # Create a PR makima supervisor pr <task-id> \ --title "Add feature X" \ --body "Implements feature X with full test coverage" \ --base main # Or merge directly makima supervisor merge <task-id> --to main --squash # Ask user a question makima supervisor ask "Which approach should we use?" \ --choices "Option A,Option B,Option C" \ --timeout 3600 ``` ### Task-Contract Interaction When running inside a task, use contract commands to interact with the parent contract: ```bash # Get contract context makima contract status # Check phase requirements makima contract checklist # List contract files makima contract files # Read a specific file makima contract file <file-id> # Report progress makima contract report "Completed initial implementation" # Get suggested next action makima contract suggest-action # Create a new documentation file echo "# Architecture\n\nSystem design..." | makima contract create-file "Architecture" # Update an existing file cat updated_doc.md | makima contract update-file <file-id> # Report completion with metrics makima contract completion-action \ --files "src/main.rs,src/lib.rs" \ --lines-added 150 \ --lines-removed 30 \ --code ``` --- ## Output Format All commands output JSON to stdout for easy parsing and integration: ```bash # Parse with jq makima supervisor tasks | jq '.tasks[].name' # Get specific fields makima contract status | jq '{name: .name, phase: .phase}' # Check completion makima contract checklist | jq '.completion_percentage' ``` --- ## Exit Codes | Code | Description | |------|-------------| | `0` | Success | | `1` | General error (authentication failed, invalid arguments, etc.) | --- ## See Also - [Makima README](../README.md) - Project overview - [Task Branching Plan](./PLAN-task-branching.md) - Task isolation architecture