[read-only] doc_flow(id) — renders a doc's flowLink chain in order (journey view).
[read-only] doc_map(oneline) — overview of the full doc link network.
project dashboard — call at the start of every session.
external source 🔔 = a new push has arrived. receive it with openbox(action='show').
options: dismiss(turn off a nudge), undismiss(restore it), help.
init(blueprint='') — set up .linklore in this directory (starts local footprint memory).
- init() basic setup
- init(blueprint='X') apply a blueprint
project_dir: set up .linklore in another folder (creating a boundary is init-only). setting up there doesn't change this session's base project — to keep working there, config(action='pin').
Project settings (openbox source options) + iam + session pin.
WARNING: handle/name/email apply machine-wide, not per-project.
Sharing lives in a separate tool: openbox (openbox sharing/members).
11 actions:
- action='whoami' → your identity (handle/name/email)
- action='version' → server code version (git commit)
- action='sources' → list registered external sources (openboxes)
- action='option' → change an external source's settings (auto_search=/show_prefix=)
- action='sync' → force-refresh an external source's cache
- action='forget' → deregister an external source
- action='pin' → pin this session to a specific project
- action='unpin' → unpin the session
- action='sessions' → list/revoke your account sessions (revoke=)
- action='projects' → list every LinkLore project on this machine
- action='delete_project' → permanently delete your personal-server copy of this project (returns guidance, no execution — use the forced() command it prints)
help=true for details.
status() — detects code↔doc sync drift (git-diff based). Not for reading lore/doc content → use show()/brief().
since, action(''|'ack'|'reset'), ack, reset, help.
link(a, b, action=) — connect two items (dc↔dc / lr↔lr / dc↔lr auto-detected, prefix matching OK).
a/b may also be a file path or an existing title — non-id-shaped values are auto-classified (same as links= in add/edit).
Undo (inverse) = unlink(a, b) — same arguments.
action has 5 modes (extends the member/config(action=) convention):
- action='related' (default, same if omitted) → mutual link (symmetric). Same as link(a, b) — dc↔dc/lr↔lr/dc↔lr
- action='flow' → not a mutual link but **document order** (a→b direction, doc↔doc only): read a, then b.
- action='supersede' → "a is replaced by b" — a=old (dropped, head=False/dropped), b=target (alive,
must be an existing item — none is created). lore↔lore or doc↔doc only.
- action='unrelated' → verdict: not related — this pair stops appearing as related candidates or duplicate alerts (not a link, a stored verdict).
- action='distinct' → verdict: not a duplicate (confirmed separate) — only duplicate alerts are silenced, it still appears as a related candidate.
The 4 suggestion verdicts: related-yes=link(a,b) · duplicate-yes=action='supersede' · related-no=action='unrelated' · duplicate-no=action='distinct'
unlink(a, b, action=) — disconnect two items or clear a verdict. Symmetric with link() (action='' default|'flow'|'unrelated'|'distinct', also accepts file paths the same way).
[read-only] doc_rollup(id) — find and collect lore linked to a doc into an AI-summary draft.
[read-only] cleanup(type='lore'|'doc') threshold(=0.85), status(=open), help - duplicate candidates.
doctor() - checks project data integrity (oldId/newId, files[] paths, link targets).
doctor() read-only diagnostics (default)
doctor(action='fix') automatically repairs any issues found
Executes the exact destructive action described in a warning printed by rm(), local_cross(), config(), or openbox() — copy the values from that warning verbatim. Do not call this on your own initiative; only call it after seeing a warning that names it and tells you exactly what to pass.
+12 more tools listed on main page