agent_harness -> rein_aharness (package + all imports), CLI command agent-harness -> rein-aharness, Docker image tag, k8s namespace/labels/ names, Makefile targets, deploy script env var/paths. In-repo identity strings (hub event source, metrics harness field, default assignee, argparse prog name, commit author identity) updated to match. Historical documents left untouched on purpose: docs/adr/ADR-001-agent-harness-architecture.md, docs/architecture.md (dated v0.1 snapshot), workplans/HARNESS-WP-0001 (completed under the old name), and the SSH host alias "forgejo-agent-harness" (external ~/.ssh/config entry, not owned here). Verified: 47/47 tests pass, CLI runs correctly from a fresh venv, `make image` builds and the resulting container runs correctly. deploy/README.md gained an explicit rename cutover checklist for what this session cannot safely do unattended -- moving the host-side secrets dir and checkout on railiance01, and not deleting the old k8s namespace until the new one is confirmed working. The actual live cutover (running that checklist against the real Railiance deployment) is not attempted here -- real production surgery on binky-control's live automation, needs the operator present. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
75 lines
3.4 KiB
Markdown
75 lines
3.4 KiB
Markdown
# rein-aharness
|
|
|
|
(formerly `agent-harness`, renamed per glas-harness ADR-001 "rein" harness family)
|
|
|
|
The single shared runtime for unattended agent instances in the Coulomb /
|
|
Operational Knowledge ecosystem. Projects declare agents (manifest +
|
|
`.kaizen/` state); this harness runs them — blueprint via kaizen-agentic,
|
|
tasks via activity-core, compute via llm-connect, credentials via
|
|
OpenBao/ops-warden, reporting to the Custodian State Hub.
|
|
|
|
Within the glas-harness meta-framework, this repo is the **`rein-aharness`
|
|
rein**: the Claude-Code-CLI-driven, unattended/scheduled harness for
|
|
tenants that need governed cron-style agent runs. See
|
|
[glas-harness ADR-001](../glas-harness/docs/adr/ADR-001-rein-harness-family.md)
|
|
for how it relates to other reins (e.g. `rein-openweights`).
|
|
|
|
The CLI command (`rein-aharness`) and Python package (`rein_aharness`) are
|
|
renamed. Deploy artifacts (Docker image tag, k8s namespace, Railiance host
|
|
paths) are renamed in this repo too, but the live Railiance cutover itself
|
|
(moving the host-side checkout + secrets dir, redeploying) is a separate,
|
|
deliberate step — tracked in
|
|
[workplans/HARNESS-WP-0002](workplans/HARNESS-WP-0002-rename-and-glas-harness-alignment.md)
|
|
and [deploy/README.md](deploy/README.md)'s rename cutover checklist.
|
|
|
|
- Why and boundaries: [INTENT.md](INTENT.md)
|
|
- Decision + architecture: [docs/adr/ADR-001](docs/adr/ADR-001-agent-harness-architecture.md)
|
|
(kept under its original filename — it documents the pre-rename decision),
|
|
[docs/architecture.md](docs/architecture.md)
|
|
- Current work: [workplans/](workplans/)
|
|
|
|
## Usage
|
|
|
|
```
|
|
# Validate a consuming repo's instance manifest (.kaizen/schedule.yml)
|
|
rein-aharness validate --target ~/binky-control
|
|
rein-aharness validate --target ~/binky-control --strict # require harness fields
|
|
|
|
# List named tool profiles
|
|
rein-aharness profiles
|
|
|
|
# Run exactly one task (local JSON task-file path — dev)
|
|
rein-aharness run --task-file examples/task-hello-sandbox.json [--no-hub] [--no-metrics]
|
|
|
|
# Production intake: poll issue-core (activity-core emissions), claim, run, close
|
|
export ISSUE_CORE_URL=http://127.0.0.1:8765 ISSUE_CORE_API_KEY=…
|
|
rein-aharness poll
|
|
rein-aharness run --from-issue-core
|
|
|
|
|
|
# Deterministic mailbox scan (no LLM session)
|
|
rein-aharness mail-scan --target-repo ~/binky-control
|
|
|
|
# Mail triage via llm-connect HTTP (OpenRouter behind the service; no Claude CLI)
|
|
export LLM_CONNECT_URL=http://llm-connect.activity-core.svc.cluster.local:8080
|
|
rein-aharness mail-triage --target-repo ~/binky-control
|
|
|
|
# Daily brief via llm-connect (structured JSON → briefs/YYYY-MM-DD-daily-brief.md)
|
|
rein-aharness brief-daily --target-repo ~/binky-control
|
|
|
|
# Railiance packaging smoke (commit + optional push + hub; no Claude required)
|
|
rein-aharness smoke --work-dir ~/work/executor-sandbox
|
|
```
|
|
|
|
Railiance deploy: [deploy/README.md](deploy/README.md).
|
|
|
|
Each `run` resolves the agent's tool profile + budget from the target
|
|
repo's instance manifest (default `green-commit-only`), loads a persona
|
|
bundle (`kaizen-agentic schedule prepare`), runs a bounded agentic
|
|
session (cwd-pinned, hard allow-list, never pushes), verifies a local
|
|
commit, writes `.kaizen/metrics`, and posts a State Hub progress event.
|
|
|
|
Instance manifest contract: [docs/instance-manifest.md](docs/instance-manifest.md).
|
|
Example: [examples/schedule.harness.yml](examples/schedule.harness.yml).
|
|
|
|
Tests: `PYTHONPATH=".:$HOME/llm-connect" python3 -m pytest tests/ -q`
|