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>
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.
- Why and boundaries: INTENT.md
- Decision + architecture: docs/adr/ADR-001 (kept under its original filename — it documents the pre-rename decision), docs/architecture.md
- Current work: 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.
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