memoryd.toml gains an optional [honcho] section, [[honcho.read]] and the Honcho keys in [secrets.<name>], checked at start into memoryd::honcho::config::HonchoConfig (13 reasons, runbook entry honcho-config-invalid given as a fragment), and [sockets] state for brokerd's state.sock. Keys are checked, never read; no [honcho] leaves memoryd as it was. memoryd enables bxcore's feature secrets. Checks: a reference at ref 05 + this task passes make gate with 1188 tests (1171 + 17); /tmp unchanged around the gate; the given tests fail before as the task says (two targets do not compile, 4 start tests fail); 49 one-line mutations of the reference, all caught (one gap, a URL with a user and no password, found and closed); the new tests 40 times under CPU load, no failure; a replay from the task text on a fresh ref-05 worktree with its own target is byte-identical and passes the gate, and every before block was found once; given files pass fmt and the 500-line limit; no chat-template tag in any file. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2.8 KiB
honcho-config-invalid
What you see. memoryd exits 1 at start, before it takes its lock or touches its home, with
one line naming its config file and the reason, then this entry:
memoryd: /etc/boxmaker/memoryd.toml: [honcho] agent and owner are both "kyle": the agent's peer must not be the owner's
see docs/runbook.md#honcho-config-invalid
Why. [honcho] in memoryd.toml names this agent's peer, the owner's peer and the
workspaces the agent writes to and reads in Honcho, and [secrets.<name>] where each workspace's
key comes from (M5c spec, section 10). A wrong name would send turns and memory to a workspace
they do not belong in, so memoryd checks the section before it starts. The reasons:
urlis nothttp://orhttps://, a host (letters, digits,.and-) and an optional port (1 to 65535), and nothing else: no path, not even a/, and no user or password. The line does not repeat the URL.- A name (
agent,owner,trusted,untrusted,fleet, and each[[honcho.read]]'sagentandworkspace) is not 1 to 512 ofa-z,A-Z,0-9,_and-, Honcho's own rule: a.or a space is not allowed. agentandownerare the same peer, or two oftrusted,untrustedandfleetare the same workspace.- A
[[honcho.read]]names this agent, names an agent twice, or names one of this agent's three workspaces; or itstrustis nottrustedoruntrusted, or itsclassnotpublic,privateorsecret(all lower case). - A
[secrets.<name>]is nothoncho_trusted,honcho_untrusted,honcho_fleetorhoncho_read_<agent>for an agent in[[honcho.read]]; or it does not name exactly one well-formedcredential,envorfile(as insecret-unavailable); or there is no[honcho]section for it.
A key missing from [honcho] or [[honcho.read]], an unknown key, or a value of the wrong type
is a parse error instead, and points to memoryd-start-failed. A key's value is not read here,
only where it comes from, and it is never printed. While memoryd is stopped nothing is synced,
and bxctl memory sync cannot reach it.
Confirm. The line quotes the table and the value. Open the file it names and compare the
section with the M5c spec, section 10 (docs/specs/2026-09-27-m5c-honcho.md):
grep -n -A6 -e '^\[honcho\]' -e '^\[\[honcho.read\]\]' -e '^\[secrets\.' <config path>
Fix. Correct the value. Keep a name that is already in use as it is: a new trusted,
untrusted or fleet sends everything from then on to a new, empty workspace, and a new agent
is a new peer. agent is this agent's own name, different on each agent; owner and fleet are
the same in every agent's file. To turn Honcho off, remove [honcho], its [[honcho.read]]
tables and every [secrets.honcho_…].
Check. memoryd serve --config <path> prints memoryd: serving.