rein-openweights/README.md

38 lines
1.6 KiB
Markdown
Raw Normal View History

# rein-openweights
An agentic tool-use harness that drives **current open-weight models via
OpenRouter**, as an alternative to the frontier-model-vendor harnesses
(Claude Code, Grok CLI, Codex/GPT CLI).
Part of the glas-harness "rein" family — see
[glas-harness ADR-001](../glas-harness/docs/adr/ADR-001-rein-harness-family.md),
[ADR-002](../glas-harness/docs/adr/ADR-002-credential-brokering-and-composable-reins.md)
(credential ownership), and this repo's
[workplans/REIN-OW-WP-0001](workplans/REIN-OW-WP-0001-bootstrap.md).
Uses its own minimal OpenRouter client (`src/rein_openweights/openrouter_client.py`),
not `llm-connect`'s `OpenRouterAdapter` — that adapter's `execute_prompt(prompt: str,
config)` takes a single prompt string and never surfaces `message.tool_calls`, so it
can't drive a multi-turn tool-calling loop without a breaking change to llm-connect's
frozen Core ABC. `llm-connect` stays an optional dependency (see `pyproject.toml`),
not load-bearing for the base loop.
Not yet pushed to Forgejo — local scaffold only.
## Usage
```bash
python3 -m venv .venv && source .venv/bin/activate
pip install -e .
# Credential: either export OPENROUTER_API_KEY directly, or set
# REIN_OPENWEIGHTS_APPROLE_DIR / REIN_OPENWEIGHTS_OPENROUTER_KV_PATH for
# OpenBao-based acquisition (see src/rein_openweights/credentials.py).
export OPENROUTER_API_KEY=sk-...
rein-openweights run --task-file examples/task-hello-sandbox.json --no-hub
```
Tests: `python3 -m pytest tests/ -q` (26 tests, no network/OpenBao calls —
everything mocked at the `httpx`/`bao` subprocess boundary).