commit ac5407a83e6c479f74a022318bcebc88707676fc Author: tegwick Date: Sun Jul 26 12:29:06 2026 +0200 Charter rein-openweights Agentic tool-use harness for current open-weight models via OpenRouter/ llm-connect, as an alternative to frontier-model-vendor harnesses (Claude Code, Grok CLI, Codex/GPT CLI). Chartered by glas-harness ADR-001. Local scaffold only, no Forgejo remote yet. Co-Authored-By: Claude Sonnet 5 diff --git a/INTENT.md b/INTENT.md new file mode 100644 index 0000000..84c93b0 --- /dev/null +++ b/INTENT.md @@ -0,0 +1,50 @@ +# INTENT + +> Why rein-openweights exists, its boundary, and what it must never +> become. Established by glas-harness +> `docs/adr/ADR-001-rein-harness-family.md`. + +## Why it exists + +Every current agent harness in the ecosystem (Claude Code, Grok CLI, +Codex/GPT CLI) is a frontier-model-vendor harness: it only drives that +vendor's own model. There is no way to run a current open-weight model +through an equivalent agentic tool-use loop (plan → tool call → observe → +repeat, with a bounded tool policy) without building one from scratch per +occasion. + +rein-openweights exists to be that harness: one agentic loop, model +supplied via OpenRouter (through `llm-connect`), usable anywhere a +rein-aharness-equivalent session is wanted but a frontier-vendor +dependency is not — cost-sensitive workloads, offline/degraded-network +tolerance, or simply comparing open-weight model capability against +frontier baselines on the same task. + +## Governing principle + +It is a **rein** — a concrete harness backend under glas-harness's +router, implementing the same harness contract as `rein-aharness` +(session lifecycle, tool dispatch + policy, sandbox consumption via +sand-boxer, State Hub reporting). It does not reimplement any of that +framework machinery itself; glas-harness owns the contract, this repo +owns the open-weight-model-specific agentic loop and tool execution. + +## What it must never become + +- **Not a model router.** Choosing which OpenRouter model to use for a + given task, pricing, and fallback stays in `llm-connect`. This repo + consumes `llm-connect`, it does not reimplement provider routing. +- **Not a second harness framework.** Session semantics, tool policy + schema, sandbox consumption, and audit reporting are glas-harness's + contract (`GLAS-WP-0001-T01`) — this repo implements it, not forks it. +- **Not a sandbox provisioner.** Isolation comes from sand-boxer via + glas-harness, the same as every other rein. +- **Not tenant-specific logic.** Anything specific to one consumer + belongs in that consumer's configuration, not hardcoded here. + +## Status + +Charter + local scaffold only. See `workplans/REIN-OW-WP-0001-bootstrap.md` +for the first concrete milestone (minimal tool-use loop against one +OpenRouter open-weight model, same starter tool surface as +rein-aharness's `green-commit-only` profile). diff --git a/README.md b/README.md new file mode 100644 index 0000000..e5e738f --- /dev/null +++ b/README.md @@ -0,0 +1,11 @@ +# rein-openweights + +An agentic tool-use harness that drives **current open-weight models via +OpenRouter** (through `llm-connect`), 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) +and this repo's [workplans/REIN-OW-WP-0001](workplans/REIN-OW-WP-0001-bootstrap.md). + +Not yet pushed to Forgejo — local scaffold only. diff --git a/workplans/REIN-OW-WP-0001-bootstrap.md b/workplans/REIN-OW-WP-0001-bootstrap.md new file mode 100644 index 0000000..a9e0d39 --- /dev/null +++ b/workplans/REIN-OW-WP-0001-bootstrap.md @@ -0,0 +1,77 @@ +--- +id: REIN-OW-WP-0001 +title: "Bootstrap: minimal open-weight agentic loop" +status: proposed +--- + +First working milestone for rein-openweights: prove an agentic tool-use +loop against a current open-weight model via OpenRouter/llm-connect, +comparable in scope to rein-aharness's `green-commit-only` profile, ready +to implement the glas-harness rein contract once +`glas-harness/GLAS-WP-0001-T01` defines it. + +## Task: Pick the starter open-weight model + OpenRouter path + +Confirm `llm-connect` already supports the intended model class (check +its existing OpenRouter integration, used today by rein-aharness's +mail-triage/brief-daily paths for structured JSON — but not for a +multi-turn tool-use loop). Identify gaps: streaming tool-call support, +function-calling schema compatibility for the chosen open-weight model. + +```task +id: REIN-OW-WP-0001-T01 +status: todo +priority: high +``` + +## Task: Minimal agentic loop + +Implement plan → tool call → observe → repeat with a hard tool allow-list +matching rein-aharness's `green-commit-only` (Read/Write/Edit/Glob/Grep + +local git add/commit/status/log/diff, no push/network/shell), bounded by +a turn/token budget (reuse `llm-connect`'s `BudgetTracker` the way +rein-aharness's runner does). + +```task +id: REIN-OW-WP-0001-T02 +status: todo +priority: high +``` + +## Task: Success criterion + reporting + +Mirror rein-aharness's model: a local git commit is the sole success +signal, State Hub progress/token event on completion, metrics written in +a comparable format so the two reins are measurable side by side. + +```task +id: REIN-OW-WP-0001-T03 +status: todo +priority: medium +``` + +## Task: Credential brokering + +Resolve per glas-harness `GLAS-WP-0001-T06`: OpenRouter/llm-connect +credential acquisition either brokered by glas-harness or done directly +here via OpenBao/ops-warden. Do not hardcode a choice before that ADR +addendum lands. + +```task +id: REIN-OW-WP-0001-T04 +status: todo +priority: medium +``` + +## Task: Forgejo repo creation + +This repo is local-only. Create `coulomb/rein-openweights.git` on +Forgejo and wire the remote once T02 has something worth pushing — +coordinate with the operator (repo creation is not something this +session can do unattended). + +```task +id: REIN-OW-WP-0001-T05 +status: todo +priority: low +```