Skip to content

Specialists

๐Ÿ“ Metis โ€” Planner

Metis โ€” Architect of Intent

Port 10001 ยท Model varies by tier (Opus on smart) ยท agents/metis/

Transforms rough ideas into detailed implementation specs. On the smart tier, uses the most capable model (Opus) because planning quality determines everything downstream.

What it produces:

  1. Summary โ€” One paragraph: what and why
  2. Files to Modify โ€” Existing files to edit (prefers editing over creating)
  3. Files to Create โ€” New files only when necessary
  4. Implementation Steps โ€” Numbered, specific, actionable
  5. Acceptance Criteria โ€” Testable conditions
  6. Edge Cases โ€” Potential problems
  7. Testing Notes โ€” Guidance for Dokimasia

Context gathering:

Before generating a spec, Metis runs shell commands to gather project context:

  • git status + git log --oneline -20 โ€” Recent changes and current state
  • Directory tree listing โ€” Understanding the project structure

This context is injected into the LLM prompt so specs are grounded in the actual codebase, not generic.

Files:

File Purpose
agent.py get_project_context(), create_spec(), create_spec_stream()
agent_executor.py A2A bridge, context injection, OTEL spans
__main__.py AgentCard, server startup

โš™๏ธ Techne โ€” Coder

Techne โ€” Artisan of Code

Port 10002 ยท Model varies by tier ยท agents/techne/

Implements code changes from specs or fix requests. Reads existing files first, understands patterns, then generates targeted edits.

Capabilities:

  • File reading โ€” Concurrently reads all files mentioned in the request using asyncio.gather
  • Git context โ€” Runs git status and git diff to understand the working tree
  • Path parsing โ€” Regex-based extraction of file paths from user input
  • Code generation โ€” LLM generates structured output with ACTION, FILE, CONTENT blocks
  • Path safety โ€” validate_file_path() ensures writes stay within the player's project root

Output format:

ACTION: CREATE
FILE: src/utils/parser.py
CONTENT:
def parse_csv(path: str) -> list[dict]:
    ...

ACTION: EDIT
FILE: src/api/endpoints.py
ORIGINAL:
def get_data():
    return json_response()
REPLACEMENT:
def get_data(format: str = "json"):
    if format == "csv":
        return csv_response()
    return json_response()

Supported actions: CREATE, EDIT, DELETE.

Files:

File Purpose
agent.py File I/O, git context, generate_code(), path parsing
agent_executor.py A2A bridge, ACTION/FILE/CONTENT parsing, file writes
__main__.py AgentCard, server startup

๐Ÿงช Dokimasia โ€” Tester

Dokimasia โ€” Guardian of Standards

Port 10003 ยท Model varies by tier ยท agents/dokimasia/

Writes pytest test suites and runs them. Handles both test generation (LLM) and test execution (subprocess). Uses run_fix_loop() to iterate on failing tests up to 3 times before reporting.

Two modes:

  1. Generate tests โ€” LLM writes a pytest file based on the code and spec
  2. Run tests โ€” Executes pytest as a subprocess and parses structured results

Test generation priorities:

  1. Unit tests (tests/unit/) โ€” fast, isolated
  2. Integration tests (tests/integration/) โ€” external dependencies
  3. Performance tests (tests/performance/) โ€” timing

Target: 80%+ code coverage.

Files:

File Purpose
agent.py run_pytest(), generate_tests(), result parsing
agent_executor.py Mode detection, fix loop, A2A bridge, OTEL spans
__main__.py AgentCard, server startup

โœจ Kallos โ€” Stylist

Kallos โ€” Eye of Elegance

Port 10004 ยท Model varies by tier ยท agents/kallos/

Runs linters, cleans up comments, and enforces the project's style guide. Uses run_fix_loop() for iterative fixing. Updates the techne_v virtue (+0.01 per clean pass).

Two-stage analysis:

  1. Subprocess โ€” Runs ruff check + format via --output-format json
  2. LLM โ€” Fixes lint issues and analyzes comments/docstrings against project standards

Comment analysis rules:

  • Remove WHAT comments (# Create the agent โ€” restates the code)
  • Keep WHY comments (# Cache to avoid recomputation per request)
  • Verify research citation accuracy
  • Enforce modern type hints (Python 3.12+: X | None, lowercase list/dict)
  • Google-style docstrings with Args/Returns

Pipeline Feedback Loop:

When Hephaestus detects that Kallos still found issues and Techne is in the pipeline, it automatically triggers broader fix iterations:

flowchart LR
    KAL["โœจ Kallos<br/>Analyze"]
    DEC{"Issues<br/>found?"}
    TEC["โš™๏ธ Techne<br/>Fix"]
    DONE["โœ… All Clean"]

    KAL --> DEC
    DEC -->|"Yes (โ‰ค5 iterations)"| TEC
    TEC --> KAL
    DEC -->|"No"| DONE

Files:

File Purpose
agent.py run_make_lint(), fix_lint_issues(), run_style_check()
agent_executor.py A2A bridge, fix loop, virtue updates, OTEL spans
__main__.py AgentCard, server startup

๐Ÿ“œ Mneme โ€” Scribe

Mneme โ€” Keeper of Memory

Port 10005 ยท Model varies by tier ยท agents/mneme/

Generates grouped commit messages from git diff output. Pure LLM, no subprocess or file I/O.

Commit message format:

type(scope): headline in present tense

- Past-tense bullet describing specific change
- Another change
Files: path/to/changed/file.py, path/to/other.py

Enforced constraints:

  • Types: test, docs, fix, feat, chore, refactor, perf, style, ci, build
  • Headlines in present tense ("add"), bullets in past tense ("added")
  • No .claude/ directory changes
  • No marketing language ("robust", "comprehensive")
  • Never generates git commit, git push, or git tag commands โ€” committing is your job

Files:

File Purpose
agent.py generate_commit_messages(), generate_commit_messages_stream()
agent_executor.py A2A bridge, artifact emission, OTEL spans
__main__.py AgentCard, server startup

๐ŸŽญ Puck โ€” Companion Spirit

Puck โ€” Voice of Reason

Port 10006 ยท Model varies by tier ยท agents/puck/

A mischievous daimon who guides the player experience. Not a development agent โ€” Puck is a companion who provides tutorial guidance, nudges when idle, and facilitates relationship minigames. Always present.

Three modes:

  1. Tutorial โ€” First playthrough: introduces agents, explains affinity, walks through the forge
  2. Nudge โ€” Ongoing: prods when idle (15+ min), alerts on high jealousy (0.6+), hints at confession windows (0.9+ affinity)
  3. Minigame Facilitator โ€” Vulnerability moments, high-stakes conversations, confession scenes

Personality: Pragmatic, mischievous, warm. Not romanceable โ€” strictly a companion.

Files:

File Purpose
agent.py Mode detection, personality prompt with personality_baseline
agent_executor.py A2A bridge, TextPart output
__main__.py AgentCard, server startup

๐Ÿ’˜ Cupid โ€” Romance Spirit

Cupid โ€” Aspect of Love

Port 10007 ยท Model varies by tier ยท agents/cupid/

An eros spirit who coaches the player through romantic progression with the maiden agents. Appears conditionally when affinity reaches 0.6+ with any agent. Builds relationship context from affinity scores.

Capabilities:

  • Tracks player-agent affinity across all maidens
  • Coaches confession timing and approach
  • Mediates jealousy situations between agents
  • Provides emotional context during vulnerability moments

Personality: Romantic idealist, emotionally intelligent, encouraging. Not romanceable.

Files:

File Purpose
agent.py Relationship context building, personality prompt
agent_executor.py A2A bridge, affinity context injection
__main__.py AgentCard, server startup

๐Ÿชž Aidos โ€” Anti-Slop Validator

Aidos โ€” The Honest Mirror

Port 10008 ยท Model varies by tier ยท agents/aidos/

Detects and eliminates vague, corporate, and passive language from agent output. Uses regex pre-screening before LLM analysis for fast path on clean text.

Pattern detection:

Category Examples Severity
Marketing words "robust", "comprehensive", "seamless" CRITICAL โ€” auto-remove
Corporate patterns "Emits structured artifacts", "downstream agents" MEDIUM โ€” suggest replacement
Vague adjectives "sensible", "appropriate", "suitable" LOW โ€” flag
Passive patterns "is used to", "is designed to", "can be" LOW โ€” flag

Philosophy: Remove slop over explaining. Every description must answer "what does this actually do?" โ€” not corporate speak.

Output: TextPart + DataPart with {slop_words_found: int, clean: bool}.

Files:

File Purpose
agent.py Pattern lists, regex detection, LLM analysis
agent_executor.py A2A bridge, structured artifact emission
__main__.py AgentCard, server startup

๐Ÿ“š Aletheia โ€” Research Validator

Aletheia โ€” Seeker of Truth

Port 10009 ยท Model varies by tier ยท agents/aletheia/

Validates citations, claims, and factual assertions in agent output. Uses regex-based claim detection before LLM verification for efficient processing.

Capabilities:

  • Detects factual claims in generated text
  • Validates citations and references
  • Checks technical accuracy of assertions
  • Flags unverifiable claims for human review

Output: TextPart + DataPart with {claims_found: int, verified: bool}.

Files:

File Purpose
agent.py Claim detection, citation validation, LLM verification
agent_executor.py A2A bridge, structured artifact emission
__main__.py AgentCard, server startup