rein-aharness/README.md
tegwick f6930ad115 Rename package, CLI, and deploy artifacts to rein-aharness (HARNESS-WP-0002-T02)
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>
2026-07-26 14:22:18 +02:00

3.4 KiB

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 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 and deploy/README.md's rename cutover checklist.

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.

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. Example: examples/schedule.harness.yml.

Tests: PYTHONPATH=".:$HOME/llm-connect" python3 -m pytest tests/ -q