Skip to main content

Claude-powered code review orchestrator that coordinates specialized review agents

Project description

Reldo

"The librarian has reviewed your code."

A Claude-powered code review orchestrator that coordinates specialized review agents.

Named after the Varrock Palace librarian in RuneScape who researches and checks things against ancient tomes.

Installation

# From PyPI
pip install reldo

# Or with uv
uv tool install reldo

Usage

As a Library

from reldo import Reldo, ReviewConfig
from pathlib import Path

# Load config from file
config = ReviewConfig.from_file(Path(".claude/reldo.json"))
reldo = Reldo(config=config)

# Run a review - single prompt argument
result = await reldo.review(
    prompt="Review app/Models/User.php for backend conventions. Context: Added user registration."
)

print(result.text)
print(f"Tokens used: {result.total_tokens}")

As a CLI

# Basic review
reldo review --prompt "Review app/Models/User.php"

# With JSON output (for CI)
reldo review --prompt "Review $(git diff --name-only HEAD)" --json --exit-code

# With custom config
reldo review --prompt "..." --config .claude/reldo.json

Configuration

Create .reldo/settings.json:

{
  "prompt": ".reldo/orchestrator.md",
  "allowed_tools": ["Read", "Glob", "Grep", "Bash", "Task"],
  "model": "claude-sonnet-4-20250514",
  "timeout_seconds": 300
}

Configuration Options

Option Type Default Description
prompt string required Path to orchestrator prompt file
allowed_tools string[] ["Read", "Glob", "Grep", "Bash", "Task"] Tools available to the orchestrator
mcp_servers object {} MCP server configurations
setting_sources string[] ["project"] Where to discover agents from (see Agent Discovery)
agents object {} Additional agent definitions (merged with discovered agents)
model string "claude-sonnet-4-20250514" Claude model to use
timeout_seconds int 180 Maximum review duration
cwd string current directory Working directory
logging object {"enabled": true, ...} Logging configuration

Agent Discovery

Reldo automatically discovers agents from your project's .claude/agents/ directory. This means you can use the same agents that Claude Code uses - no duplication needed.

How It Works

By default, setting_sources is set to ["project"], which tells the Claude Agent SDK to load agents from .claude/agents/. These agents are immediately available to your review orchestrator.

your-project/
├── .claude/
│   └── agents/
│       ├── backend-reviewer.md      # ← Auto-discovered
│       ├── frontend-reviewer.md     # ← Auto-discovered
│       └── architecture-reviewer.md # ← Auto-discovered
└── .reldo/
    └── settings.json                # ← No agent config needed!

Agent File Format

Agents in .claude/agents/ use markdown with YAML frontmatter:

---
name: backend-reviewer
description: Reviews PHP/Laravel code for conventions and patterns
model: inherit
---

# Backend Reviewer

You review PHP/Laravel code for best practices...

Controlling Agent Discovery

The setting_sources option controls where agents are loaded from:

Value Behavior
["project"] (default) Loads agents from .claude/agents/
["project", "local"] Also includes local settings overrides
["user", "project", "local"] Includes user-global agents too
[] Disables auto-discovery (only explicit agents)

Merging Explicit Agents

If you define agents in .reldo/settings.json, they are merged with discovered agents:

{
  "prompt": ".reldo/orchestrator.md",
  "agents": {
    "reldo-specific-agent": {
      "description": "An agent only for reldo reviews",
      "prompt": ".reldo/agents/special.md"
    }
  }
}

Result: Both .claude/agents/* AND reldo-specific-agent are available.

Disabling Auto-Discovery

To use only explicitly defined agents:

{
  "prompt": ".reldo/orchestrator.md",
  "setting_sources": [],
  "agents": {
    "my-reviewer": {
      "description": "Custom reviewer",
      "prompt": ".reldo/agents/my-reviewer.md"
    }
  }
}

MCP Server Configuration

Reldo supports MCP (Model Context Protocol) servers for extended functionality:

{
  "mcp_servers": {
    "server-name": {
      "command": "executable",
      "args": ["arg1", "arg2"],
      "env": {
        "ENV_VAR": "value"
      }
    }
  }
}

Variable Substitution

MCP server configurations support variable substitution:

  • ${cwd} - Replaced with the working directory
{
  "mcp_servers": {
    "serena": {
      "command": "uvx",
      "args": ["serena", "start-mcp-server", "--project", "${cwd}"]
    }
  }
}

CLI Reference

reldo review --prompt "..."     # Review prompt
             --config PATH      # Config file (default: .claude/reldo.json)
             --cwd PATH         # Working directory
             --json             # Output as JSON
             --verbose          # Verbose logging
             --no-log           # Disable session logging
             --exit-code        # Exit 1 if review fails (for CI)

Documentation

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

reldo-0.4.3.tar.gz (16.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

reldo-0.4.3-py3-none-any.whl (21.5 kB view details)

Uploaded Python 3

File details

Details for the file reldo-0.4.3.tar.gz.

File metadata

  • Download URL: reldo-0.4.3.tar.gz
  • Upload date:
  • Size: 16.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for reldo-0.4.3.tar.gz
Algorithm Hash digest
SHA256 54954c45b6dbe1de3403700e93154035d92a32ccedea8241ca483dd62ac74696
MD5 d2aa1e0a909a5562de74968a84eb2136
BLAKE2b-256 776a987ea260c32a7cadef27a2394727a7dfd89108d5acb8d1e8ef87baaed10f

See more details on using hashes here.

Provenance

The following attestation bundles were made for reldo-0.4.3.tar.gz:

Publisher: publish.yml on RasmusGodske/reldo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file reldo-0.4.3-py3-none-any.whl.

File metadata

  • Download URL: reldo-0.4.3-py3-none-any.whl
  • Upload date:
  • Size: 21.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for reldo-0.4.3-py3-none-any.whl
Algorithm Hash digest
SHA256 66b8d4c47b1adbfd6227a54e371b3e99b7ba6b3ba2de8f2e7f9ba9f9251cc3c3
MD5 f9c6e08547b9c0898fc2d7342833f99b
BLAKE2b-256 9c3cffc6223161dff344e842b401b4107eb15b9357cfb0d7210f4181466ca8b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for reldo-0.4.3-py3-none-any.whl:

Publisher: publish.yml on RasmusGodske/reldo

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page