Multi-agent autonomy harness with multi-provider support, per-role permission tiers, and Agent Harness Engineering observability.
Project description
agent-harness
An autonomy-aware Claude harness with cross-session memory, skills, a
streaming dashboard, and an MCP server. Built across a 7-lab series; see
LABS/ and DEEP-DIVES/.
Layout
autonomy-lab/ # Canonical harness (sync CLI loop)
autonomy_harness.py # Budget, CacheMetrics, @tool registry, memory,
# compaction, sub-agents, skills, ~1600 lines
memory_backend.py # FilesystemBackend + SqliteBackend
skill_loader.py # Two-tier cascade + path-safe Read
consolidation.py # End-of-session Haiku consolidation pass
mcp_server.py # MCP stdio server exposing the registry
skills/ # Skill cascade (3 starter skills)
tests/ # pytest suite (offline + API-gated)
ai-harness/ # Streaming dashboard (FastAPI + React)
backend/agent.py # 190-line streaming wrapper around autonomy_harness
backend/main.py # FastAPI app: auth, rate-limit, CORS, /api/*
frontend/ # Vite + React + Tailwind v4 + shadcn
.github/workflows/ # CI: pytest + tsc + backend-import on every PR
Use it
# CLI single-shot (full machinery, no streaming)
cd autonomy-lab
uv run python autonomy_harness.py "Your goal here"
# Dashboard with streaming UI
cd ai-harness && ./dev.sh # backend :8000, frontend :5173
# MCP server (Claude Code, Cursor, ...)
# In your client's MCP config:
# "autonomy-harness": {
# "command": "uv",
# "args": ["run", "--directory",
# "/abs/path/to/autonomy-lab",
# "python", "mcp_server.py"]
# }
Deploy the dashboard
cd deploy
cp .env.example .env # set ANTHROPIC_API_KEY and DASHBOARD_TOKEN
docker compose up --build
# http://localhost:8080
See deploy/README.md for the three modes:
local laptop (HTTP), Mac mini + Tailscale (HTTP over private mesh), or
public domain (HTTPS via Let's Encrypt). Memory + replay state persist in
deploy/data/.
Dev mode (no DASHBOARD_TOKEN) auto-disables auth.
Web tools
web_search and web_fetch are wired as Anthropic server-side tools (zero
local impl, real-time index, billed per call). On by default; disable with
WEB_TOOLS_ENABLED=0 before running the CLI or the dashboard backend.
Tests
cd autonomy-lab && uv run pytest -v
CI runs the offline subset (38 tests, ~2s) on every PR. API-using tests
(test_skill_triggers, test_context_rot, test_claude_picks_right_tool)
self-skip without ANTHROPIC_API_KEY.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file xeno_harness-4.1.0-py3-none-any.whl.
File metadata
- Download URL: xeno_harness-4.1.0-py3-none-any.whl
- Upload date:
- Size: 195.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
20efa54158461677cce838d0bdf82c8cf5f81d799cb3dc169b1dea87cb02a6c3
|
|
| MD5 |
949eadfdb1c8834881c626eb7ae9779d
|
|
| BLAKE2b-256 |
0d4ba9ce98737ca023ce0f732c5913561907e14d6620f112cdc5e1102815c76d
|
Provenance
The following attestation bundles were made for xeno_harness-4.1.0-py3-none-any.whl:
Publisher:
publish-pypi.yml on belonsavon-sys/agent-harness
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
xeno_harness-4.1.0-py3-none-any.whl -
Subject digest:
20efa54158461677cce838d0bdf82c8cf5f81d799cb3dc169b1dea87cb02a6c3 - Sigstore transparency entry: 1586318896
- Sigstore integration time:
-
Permalink:
belonsavon-sys/agent-harness@798f8a0833d082523f88aff2ece32d987f982797 -
Branch / Tag:
refs/tags/v4.1.0 - Owner: https://github.com/belonsavon-sys
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@798f8a0833d082523f88aff2ece32d987f982797 -
Trigger Event:
push
-
Statement type: