5.2 KiB
Private instruction profiles
This slice is instruction editing/publication/selection, not agent-signed public kind0 metadata. It does not change public names, pictures or about fields, create agent identities/grants, or start an agent as a side effect of publication.
Owner workflow
Use the same owner state directory for both commands:
beehive drafts <state-directory> # offline, no signer/network
beehive tui discover <relay> <state-directory> # existing owner signer
# With a retained catalog: its parent directory is the owner state directory.
beehive tui <catalog-file>
The offline editor supports drafts, profile-new, profile-resume <draft-id>,
profile-discard <draft-id> and quit. Draft IDs are printed after saving.
Save boundary: Enter completing a valid instructions line, after name input;
not every keystroke. Instructions are currently one input line, at most 2048 UTF-8
bytes (the codec also supports newlines). An interrupted first input is unsaved;
an interrupted edit leaves the previously saved text intact. Do not put passwords
or keys in instructions. This command never loads the owner signer or a host/model.
In the connected TUI:
profile-new, orprofilesthenprofile-edit <version-number>, saves a local draft before asking whether to publish. Answeringnoor closing retains it.draftslists retained text and any matching submitted operation status.profile-resume <draft-id>offersedit/publish/cancel; publish still needs explicityesconfirmation. Editing a saved draft edits that draft's candidate; to branch from a published revision useprofile-edit, preserving its parent.- Publication is owner-signed, encrypted to the owner, independently of host
placement/reachability.
operationsdistinguishes pending/unknown from observed immutable publication.reconcilereloads history without lifting policy blocks; explicitly retry only after resolving the real transport refusal. Drafts remain saved even after publication.profile-discarddeletes only local editable text; it does not retract submitted operations, delete revisions or change agents. profileslists complete immutable revisions; missing/conflicting parents stay INCOMPLETE and cannot be selected. Concurrent children are explicit branches, never a timestamp-selected latest revision. Fresh sessions reload relay history.hosts,select <row>,apply <profile-number>saves selected-next using the current agent/host revision precondition. No restart.apply defaultclears the selected override.showseparates selected-next from the actual run.- Explicit
start(stopped) orrestartapplies the exact selected snapshot after the existing authorization, binding and prerequisite checks. A running agent keeps its old snapshot until Restart; existing run history is not rewritten.
Persistence and authority
<state-directory>/profile-drafts/drafts.json: local editable text, 0600, inside a 0700 directory; no secret keys. At most 100 drafts. Atomic file/directory-fsynced saves and a short exclusiveedit.lockprotect against concurrent overwrites. Stale editors fail rather than erase newer text. A process killed inside a save can leave the lock; after confirming no editor owns it, local administration may remove that empty lock directory. There is no automated lock-owner guessing.<state-directory>/management-intents/<relay-and-owner-digest>/: existing encrypted durable operation journal, prepared before network effects. Discarding draft text cannot cancel an already submitted publication.- Relay: standard NIP42 connection plus NIP44/NIP59 encrypted kind1059 envelopes.
Library publications are owner-to-self with a signed
{relay, profile}body in the existing Beehive message namespace. Owner signer, recipient, relay, routing, schema and content address are checked before rebuilding the catalog. Private instructions never enter kind0 or plaintext public events. Reload depends on the relay retaining and returning history; no new pagination/retention service. - Host: only the authorized selected snapshot travels in the existing private
owner-signed Save. The host validates strict
selection/profilecodecs (including recomputing the content hash), pinned owner/host/agent assignment and CAS, then persists selected-next in its per-agent journal. Parent links organize the owner's library; they are not grants. The host does not independently demand a library publication receipt or acquire unrelated ancestors. An authorized owner-signed exact snapshot is the instruction authority at this consumer; an arbitrary caller label or unverified revision map is not. Legacy dev transport keeps its catalog checks. Start/Restart consumes the durable selection and records actual applied revision/hash, exact instructions and run history through existing launch paths.
No membership discovery/precheck/invite/proof, host approval ceremony, host OA, owner-secret sharing with hosts, private-key exchange, relay/native API extension, Move enablement or production signed operation is added. Public metadata publication remains the next separate slice and requires the agent signer, not the owner instruction-library signer.