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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file reldo-0.4.0.tar.gz.
File metadata
- Download URL: reldo-0.4.0.tar.gz
- Upload date:
- Size: 15.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9124607d9dcbb13b8c6b64ed3909d186d5792b3b3f126f484eca8d5c02858f6a
|
|
| MD5 |
da6fcff379dc6fb401c6200d739a03b9
|
|
| BLAKE2b-256 |
8297c394fef9696b2a63463b4e93aff0e4e317e9219d2a7cc7b87dbf39893583
|
Provenance
The following attestation bundles were made for reldo-0.4.0.tar.gz:
Publisher:
publish.yml on RasmusGodske/reldo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
reldo-0.4.0.tar.gz -
Subject digest:
9124607d9dcbb13b8c6b64ed3909d186d5792b3b3f126f484eca8d5c02858f6a - Sigstore transparency entry: 837177828
- Sigstore integration time:
-
Permalink:
RasmusGodske/reldo@a95e5c88560f18e28b2904cc0db95e2f64963f33 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/RasmusGodske
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a95e5c88560f18e28b2904cc0db95e2f64963f33 -
Trigger Event:
push
-
Statement type:
File details
Details for the file reldo-0.4.0-py3-none-any.whl.
File metadata
- Download URL: reldo-0.4.0-py3-none-any.whl
- Upload date:
- Size: 21.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc55acef2d6fef2bb9d4d304bc2ca946401fa45f07c6a64166e5016d306d762b
|
|
| MD5 |
07dc48c2217df805051fd23b17b7c8cd
|
|
| BLAKE2b-256 |
59813e8e48b272908c0a9cdab77e0aca3c3e6b4284281d0aeeb9d0873c818fb2
|
Provenance
The following attestation bundles were made for reldo-0.4.0-py3-none-any.whl:
Publisher:
publish.yml on RasmusGodske/reldo
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
reldo-0.4.0-py3-none-any.whl -
Subject digest:
dc55acef2d6fef2bb9d4d304bc2ca946401fa45f07c6a64166e5016d306d762b - Sigstore transparency entry: 837177852
- Sigstore integration time:
-
Permalink:
RasmusGodske/reldo@a95e5c88560f18e28b2904cc0db95e2f64963f33 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/RasmusGodske
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@a95e5c88560f18e28b2904cc0db95e2f64963f33 -
Trigger Event:
push
-
Statement type: