Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

xeno_harness-4.1.0-py3-none-any.whl (195.0 kB view details)

Uploaded Python 3

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

Hashes for xeno_harness-4.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 20efa54158461677cce838d0bdf82c8cf5f81d799cb3dc169b1dea87cb02a6c3
MD5 949eadfdb1c8834881c626eb7ae9779d
BLAKE2b-256 0d4ba9ce98737ca023ce0f732c5913561907e14d6620f112cdc5e1102815c76d

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page