Mirror of the public Nokido wiki (source of truth: https://github.com/Nokido-labs/nokido/wiki/19-Knowledge-Pack). Edits belong there.
Updated: 2026-10-07
π English Β· FranΓ§ais
Status (2026-10-07) : the export / import tools work on a local file and the release builder now
produces the pack ; no pack has been published yet (no GitHub Release carries one).
The Nokido Knowledge Pack is an optional, pre-vectorized snapshot of
the Nokido source code chunks (modules forge_*.py, docs, curated
skills) shipped as a single NPZ file with BGE-M3 1024D embeddings already
computed. Fresh installs (and forks) can import it in one command and
get instant semantic search over the Nokido codebase without running
the local embedder on cold chunks.
A fresh clone only has the text seeds (seed/*.jsonl, 11 files on 2026-09-29).
Those seeds cover lessons, ADRs, biblio, system
rules β but not the Nokido code itself. The user has two options
out of the box :
NokidoLlamaEmbed, :8099 β the old brain_worker :5557 isapp/forge_*.py + 840 tools/forge_*.pyCLAUDE.md Β§3.The knowledge pack ships the embeddings pre-computed, so the user gets
(1) zero waiting time, (2) immediate semantic search over the Nokido
codebase, (3) instant ability to run the anti-duplication rule before
creating a new forge_*.py.
Forks especially benefit : they inherit the same vectorized base. If
they add their own modules, those get embedded locally on top of the
pre-shipped pack.
One rule decides what enters the pack : a chunk is kept only if its text (whitespace
normalized) appears word for word in a file published in the public repository, read at the
promoted commit. Its content is therefore already public : nothing private can leak, even if a
chunk's source label is wrong, and nothing stale gets in. On top of that, a chunk is dropped if it
matches a secret pattern, a private identity, or a RED signal of the egress gate (public profile).
The pack is licensed like the repository, AGPL-3.0-or-later.
Format nokido-knowledge-pack/2 (NPZ archive, no pickled objects : the importer loads it with
allow_pickle=False, so a downloaded pack can never run code) :
| Field | Type | Description |
|---|---|---|
embeddings |
float16[N, 1024] | BGE-M3 dense vectors (read back as float32) |
meta |
uint8 (UTF-8 JSON) | manifest, chunk_ids, sources (published path), domains |
texts |
uint8 (UTF-8 JSON) | the chunk texts, verbatim |
Domains read : nokido_doc, doctrine, forge_core, nokido_code, docs, policy_rules,
policy_roles, policy_security. Memory, sessions, third-party documentation and watch material
are never read.
Against the public repository at 51d10ef : 29,695 chunks, 27.8 MB of text and about
30 MB of float16 vectors before compression. forge_knowledge_pack_export.py --dry-run prints
the real count per domain (read / kept / dropped per reason) before anything is written. The
vectors are BGE-M3 : the pack needs the pinned bge-m3-Q8_0.gguf embedder (pack local-llm) to
answer queries.
# 1. Make sure your local RAG base is populated and embedded
# (i.e. you've been using Nokido for a while)
python tools/forge_knowledge_pack_export.py --dist <public repo clone> --verbose --dry-run
# Shows stats : read / kept / dropped per reason, per domain
# 2. Generate the pack (the release builder does this with --with-assets)
python tools/forge_knowledge_pack_export.py --dist <public repo clone> --version 0.1.0
# β writes data/nokido_knowledge_pack_v0.1.0.npz
# β prints SHA256 (record it!)
# 3. Attach to GitHub Release
gh release create v0.1.0 \
--title "Nokido v0.1.0 + Knowledge Pack" \
--notes-file CHANGELOG.md \
data/nokido_knowledge_pack_v0.1.0.npz
The exporter is idempotent β re-run it any time you want to refresh the
pack with newer code chunks. Each release ships its own version.
python tools/forge_knowledge_pack_import.py --download
Downloads latest release asset, verifies SHA256 (manifest-embedded),
imports into the local RAG base. Its default repository is Nokido-labs/nokido, the
public showcase that carries the releases ; until it is public, use Option C.
python tools/forge_knowledge_pack_import.py --download --version 0.1.0
python tools/forge_knowledge_pack_import.py \
--from data/nokido_knowledge_pack_v0.1.0.npz
python tools/forge_knowledge_pack_import.py --download \
--expect-sha256 abc123def456...
Per chunk in the pack :
| State in local DB | Action |
|---|---|
| Chunk doesn't exist | INSERT (text + embedding + metadata) |
| Chunk exists, embedding NULL | UPDATE embedding only (keep local text changes) |
| Chunk exists, embedding present | SKIP (don't overwrite local) β use --overwrite to force |
The importer preserves any local modifications you've made β your forked
edits to forge_*.py won't be reverted by the pack.
After import, the hub's index needs a reload. The importer calls POST /api/rag/reload,
but the current hub exposes no such route (checked 2026-09-29) : restart the hub
after an import.
Maintainers re-export and re-release periodically (suggested cadence :
once per minor version bump). Users re-import to get newer chunks :
python tools/forge_knowledge_pack_import.py --download --overwrite
The --overwrite flag is needed only if you want upstream chunks to
replace your locally-edited versions. Default behavior preserves local
edits.
The pack contains :
The export sanitization is append-only β chunks containing secrets
are dropped (not redacted) to err on the safe side. The SHA256 in the
manifest lets users verify they got the file the maintainer signed.
data/ directory)?A pack weighs several MB and grows with the code : too heavy for git history.
GitHub Releases is the idiomatic distribution channel for "binary blob attached to a
tagged release", and keeps the repo lean for users who only want the source.
Both work. GitHub Releases is simpler (no separate account needed,
versioned alongside the code) but HF Datasets has better
discoverability. We may publish a mirror on HF eventually β open an
issue if you want to drive that.
Yes β re-run
forge_knowledge_pack_export.pyon your fork's RAG,
attach to your fork's GitHub Release. The importer--repoflag lets
users target any fork.
No. The export filter explicitly drops
agent_messages,
conversation_log,shared_prompt_log, and any chunk matching PII
heuristics. The only domains exported arenokido_code,
nokido_docs,curated_skills,policy_rulesβ all source-code-
equivalent content.
The manifest pins
model: "BAAI/bge-m3". If you use a different
embedder locally, the imported vectors won't align with yours.
There is no one-shot rebuild flag today (forge_embed_auto_trigger.pyonly takes
--max-passes) : plan a re-embed with your local model before mixing vectors from two
embedders.
Only via the text content (Nokido source code chunks). The
embeddings are just numpy float32 arrays β no executable payload
possible. Verify SHA256 against the manifest before importing, and
only download from the project's official release page.