Boot & engram loading
When you unlock your cortex, Graphnosis doesn’t load every engram at once into memory — that would freeze the app on large cortexes. Instead it loads one engram first so you see content immediately, then streams the rest in the background while you’re already working.
This page explains what you see during boot, why it works that way, and how to read the status bar and engram picker.
The boot sequence
- You type your passphrase (or Touch ID). The lock screen shows “Loading memories…”.
- The sidecar acquires the cortex lock and loads exactly one engram — your preferred default.
- The app reveals with that engram already shown — its memories in the Check-in deck, its picker selection in the topbar, its data in the 3D engram tab.
- In the background, the sidecar loads the rest of your engrams one at a time. The status bar shows “Loading N more engrams…” with a live countdown.
- The engram picker fills in as each background load completes — pending engrams are visible from the start but greyed out until their data is ready.
On a fresh cortex with one engram, steps 4–5 don’t happen. On a cortex with 12 engrams, the reveal at step 3 happens in about 3 seconds and the rest stream in over the next 5–6 seconds.
Which engram loads first?
The “preferred default” is, in priority order:
- The engram you had selected last session — Graphnosis stores this
in
localStorage(graphnosis:lastActiveEngram) and passes it to the sidecar at unlock as theGRAPHNOSIS_DEFAULT_GRAPHenv var. So if you were last working in Book Notes, Book Notes is what loads. personal— the universal fallback for a first-run unlock or if the previously-saved engram has been deleted since you used it.personal(created) — on a brand-new cortex with no engrams on disk yet,personalis created with default metadata.
This means the lock screen disappears with the engram you actually want
to see already showing, instead of always showing personal and then
swapping a few seconds later once your real engram catches up.
Why not always parallel-load everything?
Earlier versions did. The problem: each engram load includes
synchronous decryption that monopolises the Node event loop, so 12
concurrent loads via Promise.all would stall the IPC socket for
20–30 seconds. The desktop app’s first list_nodes('personal') call
would sit queued, freezing the lock screen on “Loading memories…” for
the full duration of background loading.
Sequential loading with an await setImmediate() yield between each
engram is slightly slower in raw wall time (~6s sequential vs ~5s
parallel for 12 engrams), but the lock screen reveals in ~3s instead
of ~25–30s because IPC requests interleave between loads.
Reading the status bar
While background loads are in flight you’ll see, in the status bar at the bottom of the app:
Loading 7 more engrams…The number ticks down with each completed load. When all engrams have loaded, the message disappears.
Reading the engram picker
Click the engram name in the topbar to open the dropdown. The list shows every engram in your cortex immediately on unlock, in alphabetical order:
- Bold / normal weight — the engram is loaded and selectable.
- Greyed out, italic, “not allowed” cursor — the engram exists on disk but hasn’t finished decrypting into memory yet. Clicking it does nothing; the picker won’t switch.
- ✓ checkmark — the engram currently active.
As each engram finishes loading, its row drops the greyed styling and becomes selectable. Positions stay alphabetical the whole time — engrams don’t jump around as they load.
If you click an engram that’s still pending, the picker silently rejects the click and stays open so you can pick another. There’s no error flash; the visual greying is the signal.
What if I deleted the engram I last had open?
If localStorage remembers book-notes but book-notes.gai no longer
exists on disk, the sidecar falls back to personal silently (rather
than creating a fresh empty book-notes to match the stale preference).
On the next unlock after you select a different engram, the new choice becomes the persisted default.
Power-user override: GRAPHNOSIS_DEFAULT_GRAPH
If you launch the sidecar standalone (for MCP wiring into Claude
Desktop, for example) you can set GRAPHNOSIS_DEFAULT_GRAPH directly
in the environment to override the default. This is the same variable
the desktop app sets from localStorage at unlock time. See Environment
variables for the full list.
Related
- AI Access Controls — what an AI client can actually read once your engrams are loaded.
- Graphs and tiers — sensitivity tiers per engram.
- MCP Tools — the toolset AI clients see once the cortex is up.