Four-step workflow for taking raw sources → compiled wiki → AtomicMemory runtime memory → injection-ready context.
llmwikiCLI available (see the llmwiki repository)- An AtomicMemory provider that supports
verbatimingest. TheAtomicMemoryProvidershipped in@atomicmemory/sdkqualifies. - An AtomicMemory CLI profile already initialized (
atomicmemory init …).
Inside an llmwiki project, drop your raw sources into sources/ and
run the compiler:
llmwiki compileThis produces an interlinked markdown wiki under wiki/. The wiki is
useful on its own — readable, greppable, browsable. Stop here if you
don't need runtime recall.
llmwiki export --target json --project-id my-kbThe export lands at dist/exports/wiki.json. --project-id is a
security boundary: two projects supplying the same id collide in
AtomicMemory because the bridge derives external IDs from it. Pick
something stable and namespace it; treat it like a tenant key.
The envelope schema is documented at
packages/llmwiki/src/schema.ts; the regex pinning
the on-wire projectId is
/^[a-z0-9][a-z0-9-]{0,62}$/.
The supported importer for wiki exports is still the npm CLI command (handles stable external IDs, provenance metadata, dry-run, and partial failures):
atomicmemory import --type llmwiki dist/exports/wiki.json \
--user "$USER" \
--namespace knowledgeWhat happens:
- Each wiki page becomes a verbatim memory with a stable
externalId - Namespace is set to
knowledge(or your chosen value) - Re-importing the same export is append-only (no duplicates)
Dry-run first:
atomicmemory import --type llmwiki dist/exports/wiki.json --user "$USER" --dry-runFor SDK-only read access without import, see
packages/llmwiki/README.md and the snapshot provider section
below. am memory ingest does not yet replace the llmwiki import command.
Once imported, the wiki content is queryable like any other AtomicMemory data:
atomicmemory search "chunking strategies" --user "$USER" --namespace knowledgeOr with am after the same import:
am memory search "chunking strategies" --scope-user "$USER" --scope-namespace knowledgeIf you want to query the wiki directly through the SDK without ever
ingesting into AtomicMemory, use the read-only SnapshotLLMWikiProvider:
import { loadLLMWikiExport, SnapshotLLMWikiProvider } from "@atomicmemory/llmwiki";
const exportData = await loadLLMWikiExport("./wiki.json");
const provider = new SnapshotLLMWikiProvider({
exportData,
scope: { user: "alice", namespace: "knowledge" },
});
const hits = await provider.search({ query: "chunking", scope: provider["scope"] });
const pack = await provider.package({ query: "chunking", scope: provider["scope"] });The provider is read-only by design; ingest() and delete() throw
E_LLMWIKI_PROVIDER_READONLY. Use the import path above when you want a
writable store.
- Compile + read the wiki: lowest-overhead path; pure markdown.
- Compile + read +
SnapshotLLMWikiProvider: queryable knowledge without a runtime store. Good for batch tasks, agents that consult one project at a time, CI checks. - Compile + import + AtomicMemory: queryable runtime memory that can also accept new memories from other sources. Good when the wiki is a starting point and the agent learns more over time.