Skip to main content
Nika Diamond targets the -crate architecture, reached additively across 1.x minors, organized across six layers. Today are admitted and are WIP (). The remaining crates are future 1.x expansion, not required for the first-run CLI/LSP/MCP path.
Live state: /reference/status. Layer model: /architecture/layers. Admission process: /architecture/admission.

Full dependency graph

βœ… admitted (12 gates green) Β· 🟑 WIP Β· 🧭 planned. Colors by state: green admitted, amber WIP, slate planned, purple binary root. Arrows read β€œdepends on” β€” all point downward.

Layer breakdown

LayerAdmittedWIPPlannedNotes
L0nika-types, nika-error, nika-catalog, nika-catalog-codegen, nika-schema, nika-eventβ€”binding, transform, pck-manifestPure sync, zero I/O.
L0.5nika-kernel (facade), nika-kernel-core, nika-kernel-ai, nika-kernel-runtime, nika-kernel-plugin, nika-kernel-mockβ€”β€”Trait definitions (4-way split + facade hub) + mock companion. Async OK
L1nika-fs, nika-http, nika-exec-runner, nika-clock, nika-providersβ€”git, keys-*, pck-registry, pck-store, memory-satellites (v0.95)Effect impls. Each declares capability axes
L2nika-verb-infer, nika-verb-exec, nika-verb-invoke, nika-verb-agent, nika-builtinβ€”pck, memory (v0.95), observability, builtin-Verbs + domain services (fetch is the nika:fetch builtin, not a verb crate)
L3nika-runtimeβ€”shield, wasm-host (v0.100), sandbox (v0.100)Runtime + policy
L4nika-catalog-verify, nika-cli, nika-mcp, nika-lspβ€”serve, sdkInterfaces, libraries
L5nikaβ€”β€”The public binary surface

Memory subsystem (the 2.0 Connectome era) β€” separate count

The 8-crate memory subsystem (plus 1 orchestrator at L2) is not counted in the target. It lands in the 2.0 Connectome era, after the 42-crate foundation, via the MemoryStore + EmbeddingProvider trait reservations already in nika-kernel.
nika-connectome β€” ties the 10 satellites together behind the MemoryStore trait. Exposes unified put / query / forget / recall API.
  • nika-hnsw β€” approximate nearest neighbor (HNSW index)
  • nika-bm25 β€” sparse full-text ranking
  • nika-rrf β€” reciprocal-rank fusion (hybrid search)
  • nika-fsrs β€” Free Spaced Repetition Scheduler (memory decay)
  • nika-rdfs-reasoner β€” RDFS inference for knowledge triples
  • nika-temporal β€” time-aware recency + decay
  • nika-graph-algos β€” graph traversal (shortest-path, community)
  • nika-autodesc β€” auto-description generation (embed-and-label)

Admission queue

Current admission order (per Q5 decision, rev.2):
1

Round 3 β€” nika-catalog-codegen

Extract TOML β†’ Rust codegen to its own L0 crate. Independent of other crates; unblocks faster iteration on catalog data.
2

Round 4 β€” nika-schema

Complete parser + DAG + ariadne diagnostics. Unblocks verb crates (they need to parse .nika.yaml step shapes).
3

Round 5 β€” nika-event + nika-transform

Event envelope + 65 transforms. Can run in parallel.
4

Round 6 β€” nika-binding + nika-pck-manifest

Template engine + package manifest. Binding depends on transform.
5

Rounds 7-10 β€” verbs

One verb per round: infer β†’ exec β†’ invoke β†’ agent (fetch is the nika:fetch builtin under invoke, not a verb crate).
6

Rounds 11-15 β€” effects + runtime

L1 effect crates (fs, http, process, keys, provider-*) and L3 runtime.
7

Rounds 16+ β€” interfaces + binary

L4 cli / serve / mcp / lsp / sdk and the L5 nika binary.
No hard timeline per admission round. Real semver toward 1.0: quality over speed. Each admission = 1 atomic commit = 1 per-admission pre-release tag (v0.90.0-rc.N on the way to 1.0.0).

See also

Live state

HEAD, tests, hygiene β€” drift-proof snapshot.

Layer registry

Six layers, mechanical sort test, security axes.

12-gate admission

How a crate earns a seat at the workspace.

L0 foundation decisions

Q1-Q13 decisions that shaped today’s L0 layout.