Skip to content

Adding a New Agent

Raghav Kattel edited this page Jun 1, 2026 · 1 revision

Adding a New Agent

This guide covers adding novelty engines, reviewer personas, and subagents.

1. Create the Agent File

Create a Markdown file in the appropriate directory:

Agent Type Directory
Subagent subagents/
Novelty Engine novelty-engines/
Reviewer reviewers/

Required Frontmatter

---
mode: subagent
description: "One-line description of what this agent does"
skills:
  - skill-academic-humanizer  # Include if agent generates text
permission:
  "*": deny
  read:
    "*": allow
  write:
    /root/sisyphus-academica/out/papers/*: allow
  bash: deny  # Allow only if agent needs to run code
  webfetch: allow  # Allow if agent needs internet access
  task: deny
  call_omo_agent: deny
---

Permission Guidelines

Capability When to Allow
bash: allow Agent runs code (data-engineer, verifier)
webfetch: allow Agent needs to search the web (literature-scout, verifier)
write Always allow to out/papers/*
read Always allow (agents read the paper they're working on)
task Usually deny (only the Research Director delegates)

2. Write the Agent Prompt

Follow these patterns:

For Novelty Engines

Structure:

  1. Identity statement ("You are The X")
  2. Method description (step-by-step)
  3. Input format
  4. Output format (JSON schema)
  5. Constraints/rules
  6. Example output

Keep to 60-80 lines — long enough to be specific, short enough to fit context window.

For Reviewer Personas

Structure:

  1. Identity statement with focus area
  2. 5 questions the persona always asks
  3. Rating dimensions (4 categories, 1-10 scale)
  4. Review output format

Keep to 25-30 lines — concise, sharp, opinionated.

3. Register the Agent

In the Research Director

Edit orchestrator/research-director.md:

  • Add the agent to the army list in the <Role> section
  • Add deployment instructions in the appropriate phase
  • Add a <subagent_commands> entry with the agent's purpose, tools, and output format

In agent-config.json

Edit config/agent-config.json:

"your-agent-name": {
  "model": "9router/opencode-free",
  "variant": "think",
  "description": "What this agent does",
  "skills": ["skill-academic-humanizer"],
  "permission": {
    "read": "allow",
    "write": { "/root/sisyphus-academica/out/papers/*": "allow" },
    "bash": "deny",
    "webfetch": "allow",
    "edit": "deny",
    "task": "deny"
  }
}

Then add it to the agent_order array.

4. Test It

  1. Run a dry paper cycle with your agent only
  2. Verify the agent produces the expected output format
  3. Check that permissions work (no unexpected denials)
  4. Fix any issues in the prompt

5. Important Rules

  • Agents never write alone. Novelty engines always fan out in parallel. Reviewers always run as a full set of 10.
  • Output format must be JSON. The Research Director parses results programmatically.
  • No shared state. Every agent is stateless — it reads input files and writes output files.
  • No hallucinated citations. Even novelty engines should ground their hypotheses in the literature.

Clone this wiki locally