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

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