Skip to content

Commit 46e3c7c

Browse files
committed
Add the badge and image
1 parent c7db239 commit 46e3c7c

6 files changed

Lines changed: 34 additions & 15 deletions

File tree

.pre-commit-config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ default_language_version:
88
repos:
99
# Ruff - Fast Python linter and formatter
1010
- repo: https://github.com/astral-sh/ruff-pre-commit
11-
rev: v0.8.4
11+
rev: v0.15.1
1212
hooks:
1313
# Run the formatter only (no linting)
1414
- id: ruff-format

README.md

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,28 @@
22

33
<p align="center">
44
<a href="https://github.com/SuperagenticAI/rlm-code">
5-
<img src="https://raw.githubusercontent.com/SuperagenticAI/rlm-code/main/assets/rlm-code-logo.png" alt="RLM Code logo" width="300">
5+
<img src="https://github.com/SuperagenticAI/rlm-code/raw/main/assets/rlm-code-logo.png" alt="RLM Code logo" width="320">
66
</a>
77
</p>
88

9+
<p align="center">
10+
<a href="https://pypi.org/project/rlm-code/"><img alt="PyPI Version" src="https://img.shields.io/pypi/v/rlm-code"></a>
11+
<a href="https://pypi.org/project/rlm-code/"><img alt="PyPI Python Versions" src="https://img.shields.io/pypi/pyversions/rlm-code"></a>
12+
<a href="https://pypi.org/project/rlm-code/"><img alt="PyPI Downloads" src="https://img.shields.io/pypi/dm/rlm-code"></a>
13+
<a href="https://pypi.org/project/rlm-code/"><img alt="PyPI Wheel" src="https://img.shields.io/pypi/wheel/rlm-code"></a>
14+
<a href="LICENSE"><img alt="License" src="https://img.shields.io/pypi/l/rlm-code"></a>
15+
<a href="https://github.com/SuperagenticAI/rlm-code/actions/workflows/ci.yml"><img alt="CI" src="https://github.com/SuperagenticAI/rlm-code/actions/workflows/ci.yml/badge.svg"></a>
16+
<a href="https://github.com/SuperagenticAI/rlm-code/actions/workflows/pre-commit.yml"><img alt="Pre-commit" src="https://github.com/SuperagenticAI/rlm-code/actions/workflows/pre-commit.yml/badge.svg"></a>
17+
<a href="https://github.com/SuperagenticAI/rlm-code/actions/workflows/deploy-docs.yml"><img alt="Docs Deploy" src="https://github.com/SuperagenticAI/rlm-code/actions/workflows/deploy-docs.yml/badge.svg"></a>
18+
<a href="https://github.com/SuperagenticAI/rlm-code/actions/workflows/release.yml"><img alt="Release" src="https://github.com/SuperagenticAI/rlm-code/actions/workflows/release.yml/badge.svg"></a>
19+
<a href="https://github.com/SuperagenticAI/rlm-code/stargazers"><img alt="GitHub Stars" src="https://img.shields.io/github/stars/SuperagenticAI/rlm-code?style=social"></a>
20+
<a href="https://github.com/SuperagenticAI/rlm-code/issues"><img alt="GitHub Issues" src="https://img.shields.io/github/issues/SuperagenticAI/rlm-code"></a>
21+
<a href="https://github.com/SuperagenticAI/rlm-code/pulls"><img alt="GitHub Pull Requests" src="https://img.shields.io/github/issues-pr/SuperagenticAI/rlm-code"></a>
22+
</p>
23+
924
**Run LLM-powered agents in a REPL loop, benchmark them, and compare results.**
1025

11-
RLM Code implements the [Recursive Language Models](https://arxiv.org/abs/2502.07503) (RLM) approach from the 2025 paper release. Instead of stuffing your entire document into the LLM's context window, RLM stores it as a Python variable and lets the LLM write code to analyze it chunk by chunk, iteration by iteration. This is dramatically more token-efficient for large inputs.
26+
RLM Code implements the [Recursive Language Models](https://arxiv.org/abs/2502.07503) (RLM) approach from the 2025 paper release. Instead of stuffing your entire document into the LLM's context window, RLM stores it as a Python variable and lets the LLM write code to analyze it, chunk by chunk, iteration by iteration. This is dramatically more token-efficient for large inputs.
1227

1328
RLM Code wraps this algorithm in an interactive terminal UI with built-in benchmarks, trajectory replay, and observability.
1429

@@ -41,6 +56,10 @@ pip install rlm-code[tui,llm-all]
4156
```
4257
</details>
4358

59+
<p align="center">
60+
<img src="https://github.com/SuperagenticAI/rlm-code/raw/main/assets/rlm-lab.png" alt="RLM Research Lab view" width="980">
61+
</p>
62+
4463
## Quick Start
4564

4665
### 1. Launch
@@ -78,7 +97,7 @@ or for a free local model via [Ollama](https://ollama.com/):
7897
/connect ollama llama3.2
7998
```
8099

81-
> You need the matching API key in your environment (`ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, `GEMINI_API_KEY`) or in a `.env` file in your project directory. Ollama needs no key just a running Ollama server.
100+
> You need the matching API key in your environment (`ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, `GEMINI_API_KEY`) or in a `.env` file in your project directory. Ollama needs no key, just a running Ollama server.
82101
83102
Follow the interactive path with just `/connect` command instead: Check it worked:
84103

@@ -126,7 +145,7 @@ After at least two benchmark runs, export a compare report:
126145
/rlm replay <run_id>
127146
```
128147

129-
Walk through the last run one step at a time see what code the LLM wrote, what output it got, and what it did next.
148+
Walk through the last run one step at a time, see what code the LLM wrote, what output it got, and what it did next.
130149

131150
### 7. Use RLM Code as a coding agent (local/BYOK/ACP)
132151

@@ -218,7 +237,7 @@ If a run is going out of hand:
218237

219238
## What You Can Do With It
220239

221-
- **Analyze large documents**: Feed in a 500-page PDF and ask questions the LLM reads it in chunks via code
240+
- **Analyze large documents**: Feed in a 500-page PDF and ask questions, then the LLM reads it in chunks via code
222241
- **Compare models**: Run the same benchmark with different providers and see who scores higher
223242
- **Compare paradigms**: Test Pure RLM vs CodeAct vs Traditional approaches on the same task
224243
- **Debug agent behavior**: Replay any run step-by-step to see exactly what the agent did

assets/rlm-lab.png

414 KB
Loading

tests/rlm/test_phase3.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -370,9 +370,9 @@ def test_benchmark_cases_have_pure_rlm_env(self):
370370
for preset in ["oolong_style", "browsecomp_style", "token_efficiency"]:
371371
cases = get_benchmark_cases(preset)
372372
for case in cases:
373-
assert (
374-
case.environment == "pure_rlm"
375-
), f"{preset}/{case.case_id} should use pure_rlm"
373+
assert case.environment == "pure_rlm", (
374+
f"{preset}/{case.case_id} should use pure_rlm"
375+
)
376376

377377
def test_benchmark_cases_have_reasonable_timeouts(self):
378378
"""Test that paper benchmarks have appropriate timeouts."""

tests/test_retry.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,9 @@ def failing_operation():
8383
with pytest.raises(ValueError):
8484
controller.execute_sync_with_retry(failing_operation, "test_op")
8585

86-
assert (
87-
attempt_count == max_attempts
88-
), f"Expected {max_attempts} attempts, got {attempt_count}"
86+
assert attempt_count == max_attempts, (
87+
f"Expected {max_attempts} attempts, got {attempt_count}"
88+
)
8989

9090
@pytest.mark.asyncio
9191
async def test_async_retry_respects_max_attempts(self):

tests/test_security_validator.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,6 @@ class MockConfig:
209209
validator = SecurityValidator()
210210

211211
# Check module code (where calculator_tool is defined)
212-
assert not validator.has_eval(
213-
program.module_code
214-
), f"Generated module code should not contain eval():\n{program.module_code}"
212+
assert not validator.has_eval(program.module_code), (
213+
f"Generated module code should not contain eval():\n{program.module_code}"
214+
)

0 commit comments

Comments
 (0)