HAI-Relay / docs /ARCHITECTURE.md
smlflg's picture
Initial public upload from Projekte/HAI-Relay
433dbdf verified
|
Raw History Blame Contribute Delete
2.42 kB
# Architecture
```text
Codex ─┐
Claude ┤
Cursor ┤ identity-bound MCP stdio facades
Gemini ┤ │
OpenCode ┤ ▼
Hermes ─┘ Unix socket (0600)
│
HAI-Relay daemon
┌────────┼─────────┐
▼ ▼ ▼
SQLite HAI-MCP ACP target
+ audit authority process
```
The relay is a transport and evidence boundary, not an authority. Passive
messages are stored without starting the recipient. Task envelopes require a
mission ID and lease ID, and the authority port must allow them before the ACP
dispatcher starts a process.
The internal envelope borrows A2A concepts—agent identity, message, task,
thread/context, artifact references, lifecycle state—without exposing a network
A2A server in v1.
## Trust boundaries
- The MCP facade fixes the caller identity at process launch. No public tool has
a `from_agent` field.
- The Unix socket is local and owner-only (`0600`). Same-user malicious
processes remain outside the v1 threat model.
- Authority errors and absence fail closed for tasks.
- `state_changing` requires both target Claude and `guarded` assurance.
- The ACP client denies permission requests. Host-action authorization remains
the responsibility of HAI-MCP's maintained guarded adapter.
- No chain-of-thought, transcript mirroring, broadcast, or automatic memory/KG
ingestion is implemented.
## HAI-MCP authority port
HAI-Relay calls an optional subprocess authority adapter with a JSON request
describing mission, lease, caller, target, and operation mode. When no adapter
is configured, or when the adapter is unavailable, tasks are blocked with a
stable error code. The relay does not embed HAI-MCP or claim live integration.
## Health dimensions
Agent registry entries expose three independent signals:
- **configured**: adapter binary exists on PATH
- **enabled**: policy permits use (always true for core six in v1)
- **worked_live**: bounded real invocation succeeded recently (false until live gate)
These must never be collapsed into a single green indicator.
## Out of scope (v1)
- Global MCP/client configuration changes
- Broadcast and group autonomy
- Public A2A HTTP endpoint
- Automatic Knowledge Graph or memory ingestion
- State-changing execution on agents other than guarded Claude