Expand description
Per-session m4a accounts assigned by the node at spawn (owner model: session = nick = one key
= one role). When HATCHERY_M4A_AGENT_BIN and HATCHERY_M4A_ACCOUNTS_ROOT are set, every PTY
spawn gets its own account: the node runs m4a-agent account provision (registry and vaults
stay under the node’s accounts root, outside the session sandbox), reads the fresh capability
from a one-shot 0600 file it removes at once, and injects ONLY M4A_NICK and
M4A_SESSION_CAP into that session’s child environment. The capability is never logged.
Structs§
- M4aSession
Accounts - Session
Account - One session’s account as handed to its child: nick and capability only.
Constants§
- ACCOUNTS_
ROOT_ ENV - AGENT_
BIN_ ENV - PRODUCT_
AUDIENCE_ ENV - The product’s audience name the node signs for (default
m4a-product). - PRODUCT_
URL_ ENV - Messenger product base URL; with it (and an enrolled node) the node registers its sessions’ accounts on the messenger itself, signed with the node key.
Functions§
- m4a_
provider - g4a provider id -> the provider name
m4a-agentaccepts. g4a’s built-in catalog isclaude,codex,grok,kimi; anything else (custom agents) gets no account. - node_
account_ message - Exact bytes the messenger product verifies (
m4a-node-account-v1). - set_
node_ signer - Installs this node’s identity (enrolled, trusted) as the signer of account registrations. An unenrolled node never has one, so it registers nothing.