Scale model

Link is built for bounded local memory, not full-folder context dumps.

Large local wikis should stay usable because agents receive budgets, graph overviews open bounded first, search uses SQLite FTS when available, and unchanged pages are reused from the persistent cache.

Practical Promise

Link is local personal memory software. The expected sweet spot is a real user's working wiki: hundreds to thousands of Markdown pages, raw sources, durable memories, and graph links. The product is designed so agents do not need to enumerate that whole corpus for normal work.

Search

SQLite FTS5 is used when Python provides it. If SQLite FTS is unavailable, Link falls back to a token index and reports that backend in status and benchmark output.

Cache reuse

Persistent page-cache records let repeated runs reuse unchanged parsed pages instead of rereading everything after every command.

Graph

Large graphs open as a bounded high-signal overview first. Users can search, filter, focus neighborhoods, or explicitly load more when they need it.

Agent context

MCP and CLI query packets use small, medium, and large budgets with follow-up actions instead of dumping every page into the model.

Bounded Surfaces

The important scale behavior is not "can Link list every page?" It is "does the default agent and UI path stay bounded?"

SurfaceDefault behaviorExpansion path
query_linkReturns a budgeted context packet with why each item was selected.Use follow-up actions for more memory, search, context, or graph detail.
get_graph_summaryReturns a bounded topic or high-degree graph neighborhood.Increase limit/depth or request the full graph only when needed.
Local graph UIStarts capped with sparse labels and motion limits for large wikis.Use type filters, node search, focused neighborhoods, fullscreen, and explicit all-data loading.
All pagesLists a bounded window grouped by page type.Use paging, search, and type filters instead of scrolling the whole wiki.
HealthShows readiness, validation, interrupted writes, backend, and cache reuse.Run repair commands only when health points to a specific issue.

Measure Locally

Use lnk benchmark on your real wiki. It reports cache time, persistent-cache reuse, search backend, search/query timing, graph payload shape, and recommendations.

lnk benchmark "agent memory"
lnk health
lnk status --validate

From a source checkout, use a synthetic 10k-page check without touching your real wiki:

python3 scripts/smoke_large_wiki.py --pages 10000

The smoke script prints the generated wiki path, the local viewer command, and graph URLs so you can inspect browser behavior manually.

Large Wiki Habits

  • Prefer brief, query, and graph-summary over full exports.
  • Use page-type filters and search before opening full graph data.
  • Run lnk health after ingest or broad manual edits.
  • Run lnk doctor --fix only when health or validation points to a repairable issue.
  • Keep private raw sources out of Git; use snapshot, team-sync, and compliance-export for reviewable sharing paths.

Current Limits

Link is not pretending to be an enterprise search cluster. These are the current boundaries to understand before betting a huge corpus on it:

  • Indexes are local and process-owned. Very large wikis still use memory proportional to the page/index size.
  • The SQLite FTS index is built locally from wiki pages rather than maintained as a separate hosted service.
  • The local HTTP viewer is for personal loopback use, not a multi-user hosted deployment.
  • Full graph exports are intentionally not the default for large wikis. Use bounded graph summaries first.
  • At tens of thousands of pages and beyond, persistent on-disk indexing and chunked graph loading become the next engineering frontier.

The near-term direction is clear: preserve the plain Markdown storage model while making cache, search, graph, and validation paths more incremental over time.