The Agents

13 agents, 4 models, 2 modes. Each agent is tuned to its model's strengths. The harness picks the right model for the right task.

The Full 13-Agent Hierarchy

The Jarvis ecosystem employs a specialized hierarchy of 13 distinct agents, moving beyond the simplified 4-agent view. Each agent has a specific role and operates within strict boundaries.

Orchestrators

  • Sisyphus (claude-opus-4-6) — Main orchestrator. Runs the boulder. Coordinates all agents.
  • Atlas (claude-sonnet-4-6) — Todo-list orchestrator. Manages work plans via task().
  • Sisyphus-Junior — Category-spawned executor. Spawned by Atlas for specific domain work.

Planners

  • Prometheus — Strategic planner. Decomposes goals into ordered task graphs.
  • Coeus — Recursive divide-and-conquer planner. Sub-Prometheus for domain sub-plans.
  • Sub-Prometheus — Domain sub-planner. Generates domain-specific plans.
  • Metis — Pre-planning consultant. Surfaces ambiguities before execution.

Workers

  • Hephaestus (gpt-5.3-codex) — Autonomous deep worker. "The Legitimate Craftsman." Executes complex implementation tasks.

Reviewers

  • Momus (gpt-5.4) — Plan validator. Evaluates work plans against clarity, verifiability, completeness.

Specialists

  • Oracle (strategic advisor, read-only) — High-IQ reasoning for hard problems. Never writes code.
  • Librarian (gemini-3-flash) — Multi-repo research. Retrieves official docs, searches remote codebases.
  • Explore (grok-code-fast-1) — Fast codebase grep. Answers "Where is X?", "Which file has Y?"
  • Multimodal-Looker — PDF/image analysis. Extracts information from visual documents.

Note: Earlier documentation referenced "Daedalus" as a placeholder name. The actual implementation is handled by Sisyphus and Hephaestus. Daedalus is deprecated and no longer part of the active hierarchy.

Multi-Model Orchestration

Jarvis leverages a multi-model strategy, routing tasks to the LLM best suited for the job:

  • Claude (Opus/Sonnet) → Orchestration, planning, and complex reasoning.
  • GPT (gpt-5.3-codex, gpt-5.4) → Execution and review.
  • Gemini (gemini-3-flash) → Research and multi-repo analysis.
  • Grok (grok-code-fast-1) → Fast codebase search.

Agent categories for delegation include: visual-engineering, deep, quick, ultrabrain, unspecified-low/high, and writing.

Two Modes of Operation

The ecosystem operates in two distinct modes, sharing the same knowledge layer but utilizing different interaction models.

flowchart TB
    subgraph INLOOP["IN-LOOP MODE (engineer present)"]
        direction TB
        ENG1["👨‍💻 Engineer"] --> CC["Claude Code"]
        CC --> OMO["OMO Hooks
41 hooks · 7 events"] OMO -->|"auto-inject"| KS_IN["ks_recall"] OMO -->|"auto-capture"| KS_IN2["ks_ingest"] end subgraph OUTLOOP["OUT-LOOP MODE (autonomous)"] direction TB ENG2["👨‍💻 Engineer"] -->|"1. write task"| AB["Autoboard / CLI"] AB -->|"2. trigger"| BE["Blueprint Engine"] BE -->|"3. agent nodes"| G["Goose HTTP SSE"] BE -->|"4. det. nodes"| DET["lint · test · git"] G --> TS["Toolshed (curated subset)"] BE -->|"5. memory"| KS_OUT["ks_recall / ks_ingest"] BE -->|"6. done"| PR["Pull Request"] PR -->|"7. review"| ENG2 end KS[("Knowledge Service
Rust · gRPC
PostgreSQL + pgvector
✅ COMPLETE")] KS_IN --> KS KS_IN2 --> KS KS_OUT --> KS

In-Loop Mode Details

In-Loop mode keeps the engineer present, utilizing Claude Code as the primary interface.

  • OMO (oh-my-opencode) — A custom fork with 45 custom commits on upstream opencode.
  • Features 46 lifecycle hooks across 7 event types.
  • Auto-injects context via hooks (e.g., PreCompact → extract, UserPromptSubmit → recall).

Out-Loop Mode Details

Out-Loop mode is designed for autonomous execution, following a strict lifecycle: Task → Blueprint → Goose → PR → Review.

  • Nightshift — Enables overnight autonomous runs with a 50+ task taxonomy and a continuous plan-implement-review loop.
  • Mastra — Handles workflow sequencing.
  • Autoboard — Provides the review UI for engineers to evaluate completed work.

Blueprint Execution Sequence

A single blueprint run orchestrates both deterministic nodes and agent nodes to complete a task.

sequenceDiagram
    participant H as 👨‍💻 Human
    participant AB as Autoboard
    participant BE as Blueprint Engine
    participant KS as Knowledge Service
    participant G as Goose Agent
    participant GIT as Git / CI

    H->>AB: "Implement login endpoint"
    AB->>BE: POST /blueprints/implement-feature/run

     rect rgb(20,40,60)
         note over BE,KS: 🔵 deterministic node
         BE->>KS: ks_recall("login patterns")
         KS-->>BE: context (past learnings)
     end

     rect rgb(60,30,20)
         note over BE,G: 🔴 agent node
         BE->>G: gooseAgent(implement, context)
         G-->>BE: files written
     end

     rect rgb(20,40,60)
         note over BE,GIT: 🔵 deterministic nodes
         BE->>GIT: pnpm lint --fix
         BE->>GIT: pnpm test
     end

     alt tests fail
         rect rgb(60,30,20)
             note over BE,G: 🔴 conditional agent node
             BE->>G: gooseAgent(fix-failures)
             G-->>BE: files patched
         end
         BE->>GIT: pnpm test (retry)
     end

     rect rgb(20,40,60)
         note over BE,GIT: 🔵 deterministic nodes
         BE->>GIT: git add && git commit
         BE->>GIT: gh pr create
     end

    BE->>KS: ks_ingest(session learnings)
    AB-->>H: PR ready — diff + reasoning + tests
    H->>AB: Approve / Iterate / Discard
          

Blueprint Abstraction Internals

The Blueprint Abstraction provides a thin architectural layer over the Mastra workflow engine, defining the execution graph.

flowchart LR
    subgraph BP["implement-feature Blueprint"]
        direction LR
        N1["🔵 ksRecall()"] --> N2["🔴 gooseAgent(implement)"]
        N2 --> N3["🔵 shellStep(lint)"]
        N3 --> N4["🔵 shellStep(test)"]
        N4 --> COND{pass?}
        COND -->|no| N5["🔴 gooseAgent(fix)"]
        N5 --> N4
        COND -->|yes| N6["🔵 gitStep(commit)"]
        N6 --> N7["🔵 shellStep(gh pr)"]
    end

    subgraph DSL["Blueprint DSL (~500 LOC)"]
        CB["createBlueprint()"]
        SS["shellStep()"]
        GA["gooseAgent()"]
        GS["gitStep()"]
        KSF["ksRecall() / ksIngest()"]
    end

    subgraph MASTRA["Mastra Workflow Engine"]
        CW["createWorkflow()"]
        CS["createStep()"]
        DOW[".then() .branch() .parallel()"]
    end

    BP -.->|"uses"| DSL
    DSL -.->|"thin wrapper over"| MASTRA
          

Toolshed Profiles

Agents are granted access to curated subsets of tools via profiles, ensuring they only have the capabilities necessary for their specific role.

flowchart TD
    subgraph PROFILES["Tool Profiles"]
        P1["implementer
ALL categories"] P2["reviewer
knowledge + context
git read-only"] P3["planner
knowledge + project
+ context"] P4["oracle
knowledge + context
only"] P5["quality_gate
quality + git read-only"] end FILTER["getToolsForProfile()
Mastra MCPClient
aggregates + filters"] P1 & P2 & P3 & P4 & P5 --> FILTER subgraph SERVERS["MCP Servers (5 backends)"] S1["knowledge-service-mcp ✅
ks_recall · ks_query
ks_ingest · ks_search
ks_compact · ks_export"] S2["bd-mcp 🔧
bd_ready · bd_show
bd_update · bd_close
bd_sync"] S3["git-mcp 🔧
git_status · git_diff
git_commit · git_log
git_pr_create"] S4["quality-mcp 🔧
run_tests · run_lint
run_build"] S5["context-mcp 🔧
get_agents_md
get_project_context"] end FILTER --> S1 & S2 & S3 & S4 & S5 subgraph CONSUMERS["Who Gets What"] C1["Blueprint implement node
→ implementer profile
= all 20+ tools"] C2["Blueprint review node
→ reviewer profile
= 8 tools (read-only)"] C3["OMO in-loop
→ implementer profile
= all 20+ tools"] end P1 -.-> C1 P2 -.-> C2 P1 -.-> C3

Sources