Skip to main content

MCP server for recursive LLM reasoning—load context, iterate with search/code/think tools, converge on answers

Project description

Aleph

License: MIT Python 3.10+ PyPI version

Aleph is an MCP server and skill for Recursive Language Models (RLMs). It keeps working state — search indexes, code execution, evidence, recursion — in a Python process outside the prompt window, so the LLM reasons iteratively over repos, logs, documents, and data without burning context on raw content.

+-----------------+    tool calls     +-----------------------------+
|   LLM client    | ---------------> |  Aleph (Python process)     |
| (context budget)| <--------------- |  search / peek / exec / sub |
+-----------------+   small results  +-----------------------------+

Why Aleph:

  • Load once, reason many times. Data lives in Aleph memory, not the prompt.
  • Compute server-side. exec_python runs code over the full context and returns only derived results.
  • Recurse. Sub-queries and recipes split complex work across multiple reasoning passes.
  • Persist. Save sessions and resume long investigations later.

Quick Start

pip install "aleph-rlm[mcp]"
aleph-rlm install --profile claude   # or: codex, portable, api
aleph-rlm doctor                     # verify everything is wired up

Then restart your MCP client and confirm Aleph is available:

get_status()
list_contexts()

The optional /aleph (Claude Code) or $aleph (Codex) skill shortcut starts a structured RLM workflow. Install docs/prompts/aleph.md into your client's command/skill folder — see MCP_SETUP.md for exact paths.

Entry Points

Command Module What it does
aleph aleph.mcp.local_server:main MCP server. This is what MCP clients launch. Exposes 30+ tools for context management, search, code execution, reasoning, recursion, and action tools.
aleph-rlm aleph.cli:main Installer and CLI. install, configure, doctor, uninstall for setting up MCP clients. Also: run (single query), shell (interactive REPL), serve (start MCP server manually).

Install Profiles

aleph-rlm install asks which sub-query profile to use. Profiles configure the nested backend that sub_query and sub_query_batch spawn for recursive reasoning.

Profile What it pins
portable No nested backend — you choose later or rely on auto-detection
claude Claude CLI: --model opus, --effort low, shared session enabled
codex Codex MCP: gpt-5.4, low reasoning effort, shared session enabled
api OpenAI-compatible API — set ALEPH_SUB_QUERY_API_KEY and ALEPH_SUB_QUERY_MODEL
aleph-rlm install claude-code --profile claude
aleph-rlm configure --profile codex   # overwrite existing config

See docs/CONFIGURATION.md for all env vars, CLI flags, and runtime configure(...) options.

First Workflow

Aleph is best when you load data once, do the heavy work inside Aleph, and only pull back compact answers.

load_file(path="/absolute/path/to/large_file.log", context_id="doc")
search_context(pattern="ERROR|WARN", context_id="doc")
peek_context(start=1, end=60, unit="lines", context_id="doc")
exec_python(code="""
errors = [line for line in ctx.splitlines() if "error" in line.lower()]
result = {
    "error_count": len(errors),
    "first_error": errors[0] if errors else None,
}
""", context_id="doc")
get_variable(name="result", context_id="doc")
save_session(context_id="doc", path=".aleph/doc.json")

The important habit is to compute server-side. Do not treat get_variable("ctx") as the default path. Search, filter, chunk, or summarize first, then retrieve a small result.

If you want terminal-only mode instead of MCP, use:

aleph run "Summarize this log" --provider cli --model codex --context-file app.log

Local Models (llama.cpp)

Aleph can use a local model instead of a cloud API. This runs the full RLM loop — search, code execution, convergence — entirely on your machine with zero API cost.

Prerequisites: llama.cpp and a GGUF model file.

# Install llama.cpp
brew install llama.cpp          # Mac
winget install ggml.LlamaCpp    # Windows

# Start the server with your model
llama-server -m /path/to/model.gguf -c 16384 -ngl 99 --port 8080

Point Aleph at the running server:

export ALEPH_PROVIDER=llamacpp
export ALEPH_LLAMACPP_URL=http://127.0.0.1:8080
export ALEPH_MODEL=local
aleph

Or let Aleph start the server automatically:

export ALEPH_PROVIDER=llamacpp
export ALEPH_LLAMACPP_MODEL=/path/to/model.gguf
export ALEPH_LLAMACPP_CTX=16384
export ALEPH_MODEL=local
aleph

Tested with Qwen 3.5 9B (Q8_0, ~9 GB). Any GGUF model works — larger models give better results in the RLM loop. Models with reasoning/thinking support (Qwen 3.5, QwQ, etc.) are handled automatically. See CONFIGURATION.md for all ALEPH_LLAMACPP_* variables.

Common Workloads

Scenario What Aleph Is Good At
Large log analysis Load big files, trace patterns, correlate events
Codebase navigation Search symbols, inspect routes, trace behavior
Data exploration Analyze JSON, CSV, and mixed text with Python helpers
Long document review Load PDFs, Word docs, HTML, and compressed logs
Recursive investigations Split work into sub-queries instead of one giant prompt
Long-running sessions Save and resume memory packs across sessions

Core Tools

Category Primary tools What they do
Load context load_context, load_file, list_contexts, diff_contexts Put data into Aleph memory and inspect what is loaded
Navigate search_context, semantic_search, peek_context, chunk_context, rg_search Find the relevant slice before asking for an answer
Compute exec_python, get_variable Run code over the full context and retrieve only the derived result
Reason think, evaluate_progress, get_evidence, finalize Structure progress and close out with evidence
Orchestrate configure, validate_recipe, estimate_recipe, run_recipe, run_recipe_code Switch backends and automate repeated reasoning patterns
Persist save_session, load_session Keep long investigations outside the prompt window

Inside exec_python, Aleph also exposes helpers such as search(...), chunk(...), lines(...), sub_query(...), sub_query_batch(...), and sub_aleph(...). Recursive helpers live inside the REPL, not as top-level MCP tools.

Safety Model

Aleph is built to keep raw context out of the model window unless you explicitly pull it back:

  • Tool responses are capped and truncated.
  • get_variable("ctx") is policy-aware and should not be your default path.
  • exec_python stdout, stderr, and return values are bounded independently.
  • ALEPH_CONTEXT_POLICY=isolated adds stricter session export/import rules and more defensive defaults.

The safest pattern is always:

  1. Load the large context into Aleph memory.
  2. Search or compute inside Aleph.
  3. Retrieve only the small result you need.

Docs Map

Development

git clone https://github.com/Hmbown/aleph.git
cd aleph
pip install -e ".[dev,mcp]"
pytest tests/ -v
ruff check aleph/ tests/

References

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

aleph_rlm-0.9.1.tar.gz (331.2 kB view details)

Uploaded Source

Built Distribution

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

aleph_rlm-0.9.1-py3-none-any.whl (157.3 kB view details)

Uploaded Python 3

File details

Details for the file aleph_rlm-0.9.1.tar.gz.

File metadata

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

File hashes

Hashes for aleph_rlm-0.9.1.tar.gz
Algorithm Hash digest
SHA256 9c471812ef4c2d0e25f1208db6b2a2446913fc6057da3392e01d335595427232
MD5 f0a551ca0124f466a407a436e6afee28
BLAKE2b-256 81dcb4fbfe5394bfe6c574a307d81e69603514d15d8db3eb77ffad691e042f7f

See more details on using hashes here.

Provenance

The following attestation bundles were made for aleph_rlm-0.9.1.tar.gz:

Publisher: publish.yml on Hmbown/aleph

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

File details

Details for the file aleph_rlm-0.9.1-py3-none-any.whl.

File metadata

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

File hashes

Hashes for aleph_rlm-0.9.1-py3-none-any.whl
Algorithm Hash digest
SHA256 dd3ac9dae98f07dddff4579dd07cb7980a9ba17c61b3ff66aa128a4e0c67613d
MD5 8af1805b05473562878a1aeb5db4e5c5
BLAKE2b-256 aaa57be9839595aec72dd0aee68f7df66aed2649738090f1e8e0c4ee1d2c26ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for aleph_rlm-0.9.1-py3-none-any.whl:

Publisher: publish.yml on Hmbown/aleph

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