-
Notifications
You must be signed in to change notification settings - Fork 1
Overlord CLI
The Overlord provides a CLI for meta-orchestration tasks across your project ecosystem. All commands are accessed via nebulus-atom overlord <command>.
Display the loaded Overlord configuration.
nebulus-atom overlord configOutput:
- Projects discovered
- Dependency relationships
- Test commands
- Build/check scripts
Options:
-
--validate- Validate circular dependencies and missing projects
Scan the workspace for overlord.yml files and discover all projects.
nebulus-atom overlord discover [--path /path/to/workspace]Options:
-
--path PATH- Workspace root (default: parent of current directory) -
--save- Save discovered projects to registry
Output:
- List of discovered projects
- Paths to their
overlord.ymlfiles - Quick validation status
Show the current state of all projects: git status, branch, test health.
nebulus-atom overlord status [--projects PROJECT ...]Options:
-
--projects PROJECT [PROJECT ...]- Filter to specific projects (default: all) -
--format {table,json}- Output format (default: table)
Output:
- Git status (clean, dirty, ahead, behind)
- Active branch
- Test status (passed, failed, not run)
- Last commit timestamp
Deep scan of all projects: git state, test execution, health check.
nebulus-atom overlord scan [--projects PROJECT ...] [--run-tests]Options:
-
--projects PROJECT [PROJECT ...]- Filter to specific projects -
--run-tests- Actually run test suites (slow, default: skip) -
--save- Save scan results to memory
Output:
- Detailed git state
- Test results (if run)
- Uncommitted changes count
- Unpushed commits count
Visualize and query the project dependency graph.
# Show full dependency graph (ASCII tree)
nebulus-atom overlord graph
# Show dependencies of a specific project
nebulus-atom overlord graph --project nebulus-core
# Show what depends on a project
nebulus-atom overlord graph --project nebulus-core --mode dependents
# Show affected projects if nebulus-core changes
nebulus-atom overlord graph --project nebulus-core --mode affected
# Extract subgraph for specific projects
nebulus-atom overlord graph --subgraph nebulus-core,nebulus-primeModes:
-
full- Complete dependency graph (default) -
upstream- What this project depends on -
downstream- What depends on this project (dependents) -
affected- All projects affected by a change to this project
Options:
-
--project PROJECT- Focus on a specific project -
--mode {full,upstream,downstream,affected}- Graph mode -
--subgraph PROJECT,PROJECT,...- Extract subgraph -
--format {tree,json}- Output format (default: tree)
Output:
- ASCII dependency tree
- Dependency order (topological sort)
- Cycle warnings (if any)
Evaluate the blast radius and autonomy suitability of a proposed change.
nebulus-atom overlord scope --project nebulus-atom --type localChange Types:
-
local- Changes only affect the project itself -
upstream- Changes to dependencies (affects downstream) -
downstream- Changes to dependents (may need upstream updates) -
cross_cutting- Changes affect multiple unrelated projects
Options:
-
--project PROJECT- Project being changed (required) -
--type {local,upstream,downstream,cross_cutting}- Change type (required) -
--targets PROJECT [PROJECT ...]- Specific affected projects (optional)
Output:
- Scope category (narrow, moderate, broad)
- Affected project list
- Autonomy recommendation (auto-dispatch vs. human review)
- Confidence score
- Suggested reviewers
Store a cross-project observation or learning.
nebulus-atom overlord memory remember \
--project nebulus-core \
--observation "After changing LLMClient, always rebuild nebulus-prime Docker image" \
--category gotcha \
--confidence highOptions:
-
--project PROJECT- Associated project (can specify multiple) -
--observation TEXT- The observation to remember (required) -
--category {pattern,gotcha,decision,performance,security}- Observation type -
--confidence {low,medium,high}- Confidence level (default: medium)
Search stored observations by keyword or project.
# Search by keyword
nebulus-atom overlord memory search "docker build"
# Search by project
nebulus-atom overlord memory search --project nebulus-prime
# Search by category
nebulus-atom overlord memory search --category gotchaOptions:
-
--project PROJECT- Filter by project -
--category CATEGORY- Filter by category -
--limit N- Max results (default: 10)
Output:
- Matching observations with timestamps
- Associated projects
- Confidence levels
- Categories
Remove an observation by ID.
nebulus-atom overlord memory forget <observation-id>Clean up stale observations (older than threshold, low confidence).
nebulus-atom overlord memory prune --days 90 --min-confidence mediumOptions:
-
--days N- Remove observations older than N days (default: 180) -
--min-confidence {low,medium,high}- Remove below this confidence (default: low) -
--dry-run- Show what would be deleted without deleting
Manage the background daemon lifecycle — start, stop, restart, and check status. Uses a PID file at ~/.atom/overlord/daemon.pid for reliable process discovery.
# Start the daemon
nebulus-atom overlord daemon start
# Check if daemon is running
nebulus-atom overlord daemon status
# Stop a running daemon (sends SIGTERM, waits up to 5s)
nebulus-atom overlord daemon stop
# Restart (stop + start)
nebulus-atom overlord daemon restartActions:
| Action | Description |
|---|---|
start |
Launch the daemon. Refuses if already running. |
status |
Show running/stopped state and PID. Detects stale PID files. |
stop |
Send SIGTERM to running daemon, wait for clean exit. |
restart |
Stop (if running) then start. |
What the daemon does:
- Connects to Slack via Socket Mode (if tokens set)
- Runs scheduled tasks via croniter (scan, test-all, clean-stale-branches)
- Routes detections through the ProposalManager for approval
- Sends daily digest notifications
Environment variables:
-
SLACK_BOT_TOKEN- Slack bot token -
SLACK_APP_TOKEN- Slack app token (Socket Mode) -
SLACK_CHANNEL_ID- Channel for Overlord messages
Schedule configuration (in overlord.yml):
schedule:
scan: "0 * * * *" # Hourly health check
test-all: "0 2 * * *" # Nightly test sweep
clean-stale-branches:
cron: "0 3 * * 0" # Weekly branch cleanup
enabled: true
notifications:
urgent_enabled: true
digest_enabled: true
digest_cron: "0 8 * * *" # 8 AM UTC dailyWhen the daemon is running, the Overlord listens for @atom mentions in the configured Slack channel. Messages are routed through the SlackCommandRouter to the Phase 2 stack.
Show ecosystem health or a single project's status.
@atom status # All projects
@atom status core # Single project
Output: Git branch, clean/dirty status, ahead/behind counts, test health, issues.
Deep scan with proactive detection (stale branches, ahead-of-main, failing tests).
@atom scan # All projects
@atom scan prime # Single project
Output: Detailed scan results plus any detections found, filtered by autonomy level.
Dispatch a merge operation. Creates a proposal if approval is required under the current autonomy level.
@atom merge core develop to main
Flow:
- TaskParser builds a
DispatchPlanwith scope analysis - If autonomy requires approval → creates a proposal, posts to Slack
- Reply "approve" or "deny" in the thread to control execution
- If approved → executes via DispatchEngine, reports result
Coordinated release workflow via ReleaseCoordinator.
@atom release core v0.3.0
Flow: Validates release spec → creates proposal → on approval, executes release steps (merge, tag, push) in dependency order.
Show or change the global autonomy level.
@atom autonomy # Show current level and summary
@atom autonomy proactive # Change to proactive
Levels: cautious (requires approval for all actions), proactive (auto-executes low-risk), scheduled (auto-executes on schedule).
Search cross-project observations.
@atom memory docker build issues
Output: Matching observations with timestamps, projects, categories, and confidence levels.
Approve or deny a pending proposal directly by ID (alternative to thread replies).
@atom approve abc123
@atom deny abc123
List all available commands with descriptions.
@atom help
When a proposal is posted to Slack, you can reply directly in the thread:
approve # Approve and execute the proposal
deny # Deny the proposal
Proposals auto-expire after 30 minutes if no action is taken.
Proposal message format:
Proposal: Merge Core develop to main
Scope: core | affects remote | estimated: low
Autonomy: cautious (requires approval)
Reply "approve" or "deny" in this thread.
Auto-expires in 30 minutes.
Check health of all projects:
nebulus-atom overlord statusFind what depends on nebulus-core:
nebulus-atom overlord graph --project nebulus-core --mode downstreamEvaluate scope of changing nebulus-atom:
nebulus-atom overlord scope --project nebulus-atom --type localRemember a cross-project gotcha:
nebulus-atom overlord memory remember \
--project nebulus-prime,nebulus-edge \
--observation "TabbyAPI and MLX server have different streaming response formats" \
--category gotcha \
--confidence highSearch for Docker-related observations:
nebulus-atom overlord memory search "docker"Start the daemon and use Slack commands:
# Terminal
nebulus-atom overlord daemon start
# In Slack (#nebulus-ops)
@atom status
@atom scan core
@atom merge core develop to main
# → Proposal posted, reply "approve" in thread
@atom autonomy proactive- Swarm Overlord - Overlord architecture and components
- CLI Reference - Main CLI reference
- Configuration - Overlord configuration details