-
Notifications
You must be signed in to change notification settings - Fork 0
INTEGRATIONS
Mike Crowe edited this page Aug 15, 2026
·
5 revisions
Analysis Date: 2026-08-15
-
podman — host-native pod/container management; no daemon socket, no Docker-in-Docker. The CLI
(
src/harnessed/launcher.py) shells out topodmandirectly forbuild,pod create,run,volumeoperations.HARNESSED_PODMAN=1gates integration tests that require a real podman installation.
-
hatago — in-process MCP hub baked into the agent container. hatago
runs as a child process inside the harness container; the harness's
.mcp.jsoncarries a single entry pointing at hatago's Streamable-HTTP endpoint. Recipe MCP servers (stdio or HTTP sidecars) register with hatago; the harness never talks to them directly. -
Transport: Streamable-HTTP only — SSE is deprecated. All recipe MCP servers must expose a
Streamable-HTTP surface (or be a stdio child spawned by hatago). This constraint is enforced in
CLAUDE.mdand documented inARCHITECTURE.md. -
Harness config paths (
src/harnessed/schema.pyHARNESS_CONFIG_DIR):-
claude→.claude(native.mcp.json+ skills/commands/agents) -
omp→.claude(claude-hooks-bridge) -
opencode→.claude(readsskills/**/SKILL.md+CLAUDE.mdnatively; MCP via image-baked~/.config/opencode) -
antigravity→.claude(MCP via image-baked~/.gemini/config/mcp_config.json) -
codex→.claude(MCP via image-baked~/.codex/config.toml; readsAGENTS.md)
-
Defined in catalog/agents/<name>/agent.yaml. All build FROM harnessed-base.
| Agent | Image | Notable |
|---|---|---|
claude |
harnessed-claude |
Claude Code CLI 2.1.223 (pinned; hold: — version unqueryable from upstream) |
omp |
harnessed-omp |
Claude via claude-hooks-bridge; catalog/base/Dockerfile.harnessed-omp
|
opencode |
harnessed-opencode |
catalog/base/Dockerfile.harnessed-opencode |
antigravity |
harnessed-antigravity |
Google Gemini harness; catalog/base/Dockerfile.harnessed-antigravity
|
codex |
harnessed-codex |
OpenAI Codex; catalog/base/Dockerfile.harnessed-codex
|
Defined in catalog/services/<name>/service.yaml. All scope: global (default) — one shared
container per host, outliving any agent instance.
- Purpose: persistent shared memory store for all agents and instances
-
Image:
harnessed-agentmemory:latest -
Port:
3111(REST; reached athost.containers.internal:3111) -
Storage: named volume
agentmemory-data(SQLite via embedded iii-engine) -
MCP surface: none on the service itself — the
agentmemoryrecipe ships a stdio MCP shim that proxies the REST API overAGENTMEMORY_URL -
Healthcheck:
curl -sf http://localhost:3111/agentmemory/livez
- Purpose: lightweight network-native MCP tracer (proof-of-concept shared service)
-
Image:
harnessed-ping:latest -
Port:
8080(Streamable-HTTP MCP;host.containers.internal:8080) -
Storage: named volume
ping-data -
Healthcheck:
curl -sf http://localhost:8080/health
- Purpose: shared long-lived knowledge brain; multiple agent types read/write the same memory
-
Image:
harnessed-gbrain:latest -
Port:
3112 -
External dependency: operator-supplied Postgres+pgvector (
DATABASE_URL→ Supabase / Neon / self-hosted). The service does not manage the database; v2 (deferred, GAP 7) will add a managed Postgres sidecar via a compose file. -
Storage: named volume for brain repo (markdown) +
~/.gbrain/config; retrieval index in the external Postgres DB.
-
npm registry — all npm-based tool installs in images go through pnpm (supply-chain policy
BLD-01/BLD-03). Examples:
gsd-core@1.9.1(catalog/recipes/gsd-core/),markdownlint-cli2@0.23.2(catalog/base/extra-tools.default.txt),pyright@1.1.411(mise.toml) - PyPI — host Python deps via uv; container Python deps via uv inside images
-
GitHub releases — binary tools in
catalog/recipes/*/mise.lock(e.g.codebase-memory-mcpstatic binary); mise fetches and verifies sha256 checksums from release assets
-
1Password CLI (
op) — installed incatalog/base/Dockerfile.harnessed-base(best-effort; warns and continues ifdownloads.1password.comis unreachable). Used for SSH commit signing (op-ssh-sign). The SSH agent socket is forwarded from the host when present (launcher._ssh_agent_args). -
Credential mounts — handled by
src/harnessed/credmounts.py. Credentials are referenced (via mount, symlink, or token/broker URL) and never baked, copied, or snapshotted into any container or volume. This is a hard constraint enforced inCLAUDE.md.
-
GitHub — primary remote;
ghCLI used inmise.tomltasks (e.g.upgrade-pr) -
GitHub Actions — CI pipelines under
.github/workflows/; all actions pinned to commit SHAs (not mutable tags):-
test.yml—pyteston Python 3.12 + 3.13 (two separate jobs to preserve the required-check name) -
lint.yml— ruff + pyright + shellcheck; held at zero findings; usesmise-actionto reproduce local tool versions -
live.yml— full podman integration suite; runs on push tomain, nightly at 04:00 UTC, and on dispatch -
pin-check.yml— detects floating pins -
deploy-web.yml— web/wiki deployment
-
Recipes may ship MCP servers consumed by the harness through hatago.
| Recipe | Transport | Notes |
|---|---|---|
ping (via service) |
Streamable-HTTP | Reference sidecar; global scope |
agentmemory |
stdio (shim) | Proxies the agentmemory REST service |
codebase-memory-mcp |
stdio | Static binary (tree-sitter); baked via tools:; mise.lock verifies sha256 |
time |
stdio (uvx) | Hatago spawns as child |
serena |
stdio/LSP |
serena init -b LSP in install.sh |
context-mode |
(recipe) | catalog/recipes/context-mode/ |
repowise |
stdio | catalog/recipes/repowise/ |
gstack |
(recipe) | catalog/recipes/gstack/ |
Recipes pull upstream skill/tool content from external authors, pinned via install.refs::
-
Superpowers (Jesse Vincent / Prime Radiant) —
catalog/recipes/superpowers/; pinned GitHub release tag; 14 Claude-canonical skills -
GSD Core (opengsd.net) —
catalog/recipes/gsd-core/;npm:@opengsd/gsd-core@1.9.1via pnpm -
Serena —
catalog/recipes/serena/; language-server-protocol MCP bridge -
OpenBrain —
catalog/recipes/openbrain-example/ -
Caveman —
catalog/recipes/caveman/
All upstream content is pinned and fetched at build time; no @latest or --branch main is
accepted (PinValidationError enforced in src/harnessed/schema.py).
Start Here
Guides
- Recipe authoring
- Service authoring
- Stacks
- Extending stacks (proposed)
- Recipe catalog
- System prompt & rules (proposed)
- Secrets
- AWS SSO
- Pulumi (host login forwarding)
- Egress & exposing services
- Container filesystem
- Git hooks
- Troubleshooting
- Pin management (harnessed update)
Codebase Map
Planning & Roadmap
- open work: GitHub Issues
Research & Prompts
- research/ (home-folder requirements per harness, browse in-repo)
- prompts/ (reusable prompt templates, browse in-repo)