How to turn on the shared identity log so that projects, workspaces and agents are the same on each of your Macs, and how to name each Mac. The rules behind these commands are in identity-log-contract.md.
What is shared: projects, workspaces, project placement, root keys, agents and their names, and Mac display names. What is not: folder paths, bindings, approvals, owned-remote choices, workspace root folders, sessions, consent grants, hire caps and move state. Each Mac keeps its own.
The log is stored by engram, so engram must be running and must accept this
Mac as a member of the log. entorhinal does not manage that membership; a Mac
that is not a member gets identity_log_not_member.
ck projects log statusReads local state only: state (disabled, enabling, joining or
enabled), lastAppliedPosition, lastSeenHead and pendingWriteCount.
-
Make sure agent identity has been imported from the executive (the
prefrontal-coremodule, which held agent identity before entorhinal). If this fleet has no agents at all, you will pass--without-agentsinstead. -
Enable:
ck projects log enable # or, only when there are no agents to import: ck projects log enable --without-agents
This writes a snapshot of this Mac's projects, workspaces and agents to the log.
Refusals, all before anything changes:
| Code | Meaning |
|---|---|
agents_not_imported |
No agents and no import yet. Import first, or pass --without-agents if there are truly none. |
invalid_request |
--without-agents was passed but agents or an import exist. |
authority_not_cut_over |
Agents exist but the import was never completed. |
join_requires_empty_registry |
The log already has entries from another Mac and this registry is not empty (see below). |
engram_unavailable, engram_key_unavailable, identity_log_not_member |
engram cannot be used from this Mac. |
Verify: ck projects log status shows enabled, with
lastAppliedPosition equal to lastSeenHead and pendingWriteCount 0.
A Mac joins with an empty registry: no projects, workspaces or agents.
ck projects log enableThe Mac reads the log from the start, installs the first Mac's snapshot and
every later entry, and reaches enabled once it has caught up. Then give each
shared project a folder here with ck projects attach
(projects-and-roots.md).
A Mac that already has a registry cannot join a log another Mac started
(join_requires_empty_registry, with the local counts). It can only replace
the log's contents when it wrote every entry in it itself.
If enabling or joining is interrupted, the Mac stays in enabling or
joining and finishes in the background; running ck projects log enable
again resumes it. While it lasts, shared writes refuse
identity_log_enabling.
Moves target a Mac by its display name, so name every Mac after it is enabled:
ck projects log name "Studio"The name is trimmed and must be 1–64 characters. A Mac can name only itself.
It refuses identity_log_disabled before the log is enabled,
identity_log_enabling during bootstrap, and self_author_unknown until this
Mac has read its own identity from the log.
Other Macs learn the name at their next catch-up. Reverse: set a different name.
There is no operation that disables the log once it is enabled.
pendingWriteCountabove 0 after a command reportedengram_outcome_unknown: the write may or may not have landed. The next catch-up (within 30 seconds, or before the next shared write) settles it. Retry the command with the printed retry line if it did not land.identity_log_stalled: catch-up stopped at an entry it could not apply or verify, or at a gap. Shared writes refuse until it moves again. The module's health shows the reason (log_gap,log_verify_failed,apply_failed,identity_log_invariant). A log head lower than this Mac has already applied is ignored and reported aslog_head_regressed.identity_log_contended: other Macs kept appending first; retry.