Skip to content

Instantly share code, notes, and snippets.

@karpathy
Created April 4, 2026 16:25
Show Gist options
  • Select an option

  • Save karpathy/442a6bf555914893e9891c11519de94f to your computer and use it in GitHub Desktop.

Select an option

Save karpathy/442a6bf555914893e9891c11519de94f to your computer and use it in GitHub Desktop.
llm-wiki

LLM Wiki

A pattern for building personal knowledge bases using LLMs.

This is an idea file, it is designed to be copy pasted to your own LLM Agent (e.g. OpenAI Codex, Claude Code, OpenCode / Pi, or etc.). Its goal is to communicate the high level idea, but your agent will build out the specifics in collaboration with you.

The core idea

Most people's experience with LLMs and documents looks like RAG: you upload a collection of files, the LLM retrieves relevant chunks at query time, and generates an answer. This works, but the LLM is rediscovering knowledge from scratch on every question. There's no accumulation. Ask a subtle question that requires synthesizing five documents, and the LLM has to find and piece together the relevant fragments every time. Nothing is built up. NotebookLM, ChatGPT file uploads, and most RAG systems work this way.

The idea here is different. Instead of just retrieving from raw documents at query time, the LLM incrementally builds and maintains a persistent wiki — a structured, interlinked collection of markdown files that sits between you and the raw sources. When you add a new source, the LLM doesn't just index it for later retrieval. It reads it, extracts the key information, and integrates it into the existing wiki — updating entity pages, revising topic summaries, noting where new data contradicts old claims, strengthening or challenging the evolving synthesis. The knowledge is compiled once and then kept current, not re-derived on every query.

This is the key difference: the wiki is a persistent, compounding artifact. The cross-references are already there. The contradictions have already been flagged. The synthesis already reflects everything you've read. The wiki keeps getting richer with every source you add and every question you ask.

You never (or rarely) write the wiki yourself — the LLM writes and maintains all of it. You're in charge of sourcing, exploration, and asking the right questions. The LLM does all the grunt work — the summarizing, cross-referencing, filing, and bookkeeping that makes a knowledge base actually useful over time. In practice, I have the LLM agent open on one side and Obsidian open on the other. The LLM makes edits based on our conversation, and I browse the results in real time — following links, checking the graph view, reading the updated pages. Obsidian is the IDE; the LLM is the programmer; the wiki is the codebase.

This can apply to a lot of different contexts. A few examples:

  • Personal: tracking your own goals, health, psychology, self-improvement — filing journal entries, articles, podcast notes, and building up a structured picture of yourself over time.
  • Research: going deep on a topic over weeks or months — reading papers, articles, reports, and incrementally building a comprehensive wiki with an evolving thesis.
  • Reading a book: filing each chapter as you go, building out pages for characters, themes, plot threads, and how they connect. By the end you have a rich companion wiki. Think of fan wikis like Tolkien Gateway — thousands of interlinked pages covering characters, places, events, languages, built by a community of volunteers over years. You could build something like that personally as you read, with the LLM doing all the cross-referencing and maintenance.
  • Business/team: an internal wiki maintained by LLMs, fed by Slack threads, meeting transcripts, project documents, customer calls. Possibly with humans in the loop reviewing updates. The wiki stays current because the LLM does the maintenance that no one on the team wants to do.
  • Competitive analysis, due diligence, trip planning, course notes, hobby deep-dives — anything where you're accumulating knowledge over time and want it organized rather than scattered.

Architecture

There are three layers:

Raw sources — your curated collection of source documents. Articles, papers, images, data files. These are immutable — the LLM reads from them but never modifies them. This is your source of truth.

The wiki — a directory of LLM-generated markdown files. Summaries, entity pages, concept pages, comparisons, an overview, a synthesis. The LLM owns this layer entirely. It creates pages, updates them when new sources arrive, maintains cross-references, and keeps everything consistent. You read it; the LLM writes it.

The schema — a document (e.g. CLAUDE.md for Claude Code or AGENTS.md for Codex) that tells the LLM how the wiki is structured, what the conventions are, and what workflows to follow when ingesting sources, answering questions, or maintaining the wiki. This is the key configuration file — it's what makes the LLM a disciplined wiki maintainer rather than a generic chatbot. You and the LLM co-evolve this over time as you figure out what works for your domain.

Operations

Ingest. You drop a new source into the raw collection and tell the LLM to process it. An example flow: the LLM reads the source, discusses key takeaways with you, writes a summary page in the wiki, updates the index, updates relevant entity and concept pages across the wiki, and appends an entry to the log. A single source might touch 10-15 wiki pages. Personally I prefer to ingest sources one at a time and stay involved — I read the summaries, check the updates, and guide the LLM on what to emphasize. But you could also batch-ingest many sources at once with less supervision. It's up to you to develop the workflow that fits your style and document it in the schema for future sessions.

Query. You ask questions against the wiki. The LLM searches for relevant pages, reads them, and synthesizes an answer with citations. Answers can take different forms depending on the question — a markdown page, a comparison table, a slide deck (Marp), a chart (matplotlib), a canvas. The important insight: good answers can be filed back into the wiki as new pages. A comparison you asked for, an analysis, a connection you discovered — these are valuable and shouldn't disappear into chat history. This way your explorations compound in the knowledge base just like ingested sources do.

Lint. Periodically, ask the LLM to health-check the wiki. Look for: contradictions between pages, stale claims that newer sources have superseded, orphan pages with no inbound links, important concepts mentioned but lacking their own page, missing cross-references, data gaps that could be filled with a web search. The LLM is good at suggesting new questions to investigate and new sources to look for. This keeps the wiki healthy as it grows.

Indexing and logging

Two special files help the LLM (and you) navigate the wiki as it grows. They serve different purposes:

index.md is content-oriented. It's a catalog of everything in the wiki — each page listed with a link, a one-line summary, and optionally metadata like date or source count. Organized by category (entities, concepts, sources, etc.). The LLM updates it on every ingest. When answering a query, the LLM reads the index first to find relevant pages, then drills into them. This works surprisingly well at moderate scale (~100 sources, ~hundreds of pages) and avoids the need for embedding-based RAG infrastructure.

log.md is chronological. It's an append-only record of what happened and when — ingests, queries, lint passes. A useful tip: if each entry starts with a consistent prefix (e.g. ## [2026-04-02] ingest | Article Title), the log becomes parseable with simple unix tools — grep "^## \[" log.md | tail -5 gives you the last 5 entries. The log gives you a timeline of the wiki's evolution and helps the LLM understand what's been done recently.

Optional: CLI tools

At some point you may want to build small tools that help the LLM operate on the wiki more efficiently. A search engine over the wiki pages is the most obvious one — at small scale the index file is enough, but as the wiki grows you want proper search. qmd is a good option: it's a local search engine for markdown files with hybrid BM25/vector search and LLM re-ranking, all on-device. It has both a CLI (so the LLM can shell out to it) and an MCP server (so the LLM can use it as a native tool). You could also build something simpler yourself — the LLM can help you vibe-code a naive search script as the need arises.

Tips and tricks

  • Obsidian Web Clipper is a browser extension that converts web articles to markdown. Very useful for quickly getting sources into your raw collection.
  • Download images locally. In Obsidian Settings → Files and links, set "Attachment folder path" to a fixed directory (e.g. raw/assets/). Then in Settings → Hotkeys, search for "Download" to find "Download attachments for current file" and bind it to a hotkey (e.g. Ctrl+Shift+D). After clipping an article, hit the hotkey and all images get downloaded to local disk. This is optional but useful — it lets the LLM view and reference images directly instead of relying on URLs that may break. Note that LLMs can't natively read markdown with inline images in one pass — the workaround is to have the LLM read the text first, then view some or all of the referenced images separately to gain additional context. It's a bit clunky but works well enough.
  • Obsidian's graph view is the best way to see the shape of your wiki — what's connected to what, which pages are hubs, which are orphans.
  • Marp is a markdown-based slide deck format. Obsidian has a plugin for it. Useful for generating presentations directly from wiki content.
  • Dataview is an Obsidian plugin that runs queries over page frontmatter. If your LLM adds YAML frontmatter to wiki pages (tags, dates, source counts), Dataview can generate dynamic tables and lists.
  • The wiki is just a git repo of markdown files. You get version history, branching, and collaboration for free.

Why this works

The tedious part of maintaining a knowledge base is not the reading or the thinking — it's the bookkeeping. Updating cross-references, keeping summaries current, noting when new data contradicts old claims, maintaining consistency across dozens of pages. Humans abandon wikis because the maintenance burden grows faster than the value. LLMs don't get bored, don't forget to update a cross-reference, and can touch 15 files in one pass. The wiki stays maintained because the cost of maintenance is near zero.

The human's job is to curate sources, direct the analysis, ask good questions, and think about what it all means. The LLM's job is everything else.

The idea is related in spirit to Vannevar Bush's Memex (1945) — a personal, curated knowledge store with associative trails between documents. Bush's vision was closer to this than to what the web became: private, actively curated, with the connections between documents as valuable as the documents themselves. The part he couldn't solve was who does the maintenance. The LLM handles that.

Note

This document is intentionally abstract. It describes the idea, not a specific implementation. The exact directory structure, the schema conventions, the page formats, the tooling — all of that will depend on your domain, your preferences, and your LLM of choice. Everything mentioned above is optional and modular — pick what's useful, ignore what isn't. For example: your sources might be text-only, so you don't need image handling at all. Your wiki might be small enough that the index file is all you need, no search engine required. You might not care about slide decks and just want markdown pages. You might want a completely different set of output formats. The right way to use this is to share it with your LLM agent and work together to instantiate a version that fits your needs. The document's only job is to communicate the pattern. Your LLM can figure out the rest.

@medha
Copy link
Copy Markdown

medha commented May 5, 2026

As my contribution to the discussion - I built Keel, a Mac app where your knowledge stays as plain markdown on disk and the model is swappable http://github.com/Keel-Labs/keel (free, open source) - it's biased toward local-first and own-your-context.

Keel Walkthrough 🚀 — Watch Video

@ethanj
Copy link
Copy Markdown

ethanj commented May 5, 2026

Huge milestone from this thread: llmwiki just crossed 1K GitHub stars (and 100 forks)!
Screenshot 2026-05-05 at 2 50 47 PM

I built it because Andrej's LLM Wiki gist felt immediately useful, but I wanted the idea to be boringly concrete... a local CLI, plain files, immutable sources, generated markdown, provenance, linting, exports, and agent access.

The project now has:

  • compile --review so generated pages can be approved or rejected before landing
  • claim-level provenance like ^[paper.md:42-58]
  • typed schema/page kinds and seed pages
  • confidence and contradiction metadata
  • image/PDF/transcript ingest
  • chunked retrieval with BM25 reranking
  • llms.txt, JSON-LD, GraphML, and Marp exports
  • MCP tools
  • Claude/Codex/Cursor session ingest

The part that still feels most useful to me is how the knowledge builds up over time... add sources, improve the wiki, ask better questions, save better answers, and the next agent starts fully informed instead of another empty chat window.

The roadmap is now focused on the parts that make this real at scale... local web UI, graph/context packs, evals, and rollback/audit.

Thanks to everyone who has tried it, filed issues, opened PRs, or posted competing implementations here. This thread has been our best product research.

https://github.com/atomicmemory/llm-wiki-compiler

@waydelyle
Copy link
Copy Markdown

SwarmVault v3.12 — you can now chat with your vault and export it for any AI. The project just keeps growing from this gist.

Two big new surfaces in the latest releases:

swarmvault chat — persistent multi-turn conversations over your compiled wiki.

Instead of one-shot queries, you can now have an ongoing conversation with your vault. Sessions persist, so you can resume where you left off. It works in interactive TTY mode or programmatically. Your chat history becomes part of the vault's knowledge.

swarmvault chat
swarmvault chat --resume <session-id>
swarmvault chat --list

swarmvault export ai — static handoff packs for any AI tool.

Exports your vault as a portable bundle with llms.txt, full text, JSON-LD graph data, manifest metadata, and human-readable notes. Hand your compiled knowledge to any AI system, not just the ones SwarmVault integrates with directly. Per-page siblings optional.

Other recent additions:

  • Graph validationswarmvault graph validate [--strict] checks for duplicate IDs, dangling references, confidence bounds, and inconsistent edge evidence. Like a linter for your knowledge graph.
  • Neo4j exportgraph export --neo4j for loading your vault graph into Neo4j.
  • swarmvault clone <input> — one-command vault creation from a repo URL or directory. Alias for scan with a cleaner mental model.
  • swarmvault scan --mcp — build a vault and immediately start the MCP stdio server. One command from source to agent-ready.
  • Graph statsswarmvault graph stats for quick local counts, node types, evidence classes, and top relations without starting the viewer.

The original gist was about turning an LLM into a wiki maintainer. SwarmVault now does that plus lets you chat with the result, hand it off to any AI, validate the graph, and export to Neo4j. 90+ releases deep.

npx @swarmvaultai/cli demo

Repo: https://github.com/swarmclawai/swarmvault

@yazanabuashour
Copy link
Copy Markdown

The @a-a-k criticism is the right frame. Most implementations here solve accumulation but defer the hard part: staleness, provenance, silent duplicates.

OpenClerk's approach to those specifically: synthesis pages carry explicit freshness state and go stale when sources update. Retrieval results have doc_id/chunk_id on every result by contract. Duplicate candidates surface via a read-only report with agent_handoff; no silent second document.

The other angle missing from this thread: building block economy as a hard constraint. Semantic search, OCR, embeddings are optional installed modules. The core runner stays narrow.

All releases are eval-gated: https://github.com/yazanabuashour/openclerk

@alirezabbasi
Copy link
Copy Markdown

alirezabbasi commented May 7, 2026

A month before Andrej Karpathy published the “LLM Wiki” idea file, I started building a system called Eshel while working on NITRA — an AI-native trading infrastructure project. During development, I realized the real bottleneck was not code generation itself, but the constant decay of architectural knowledge, engineering decisions, workflows, standards, and context across the lifetime of a project.

Eshel evolved from that realization. It extends the LLM Wiki concept beyond passive knowledge accumulation into a persistent engineering intelligence layer for software systems. Instead of treating documentation as static artifacts or relying on retrieval over fragmented chats and files, Eshel continuously compiles project knowledge into a living Obsidian-compatible wiki that evolves alongside the codebase. Architecture, coding standards, implementation details, workflows, technical debt, decisions, investigations, and even development methodologies become interconnected, continuously updated entities maintained by the LLM during daily engineering work.

The goal is not “AI documentation.” The goal is an AI-native SDLC where knowledge compounds instead of decaying.

Karpathy’s LLM Wiki crystallized many of the same ideas independently, which was exciting to see. Eshel attempts to push the pattern further into production-oriented software engineering: evolving standards, deterministic workflows, task generation, architecture governance, contradiction detection, linting, and persistent project memory integrated directly into development itself.

The project is still evolving, but the repository already contains the foundational scaffold, schema system, Codex workflows, Obsidian-ready wiki structure, and automation model for experimenting with this style of development. I’d genuinely love feedback from people exploring similar directions around persistent AI-assisted engineering systems and compounding project intelligence.

Github:
https://github.com/alirezabbasi/echel

@kongphobphinduang731-maker
Copy link
Copy Markdown

githubfriend.

@napaputteppawan-netizen
Copy link
Copy Markdown

-- [[ ตบเด็กกระโปกกี้สกีบีดี้ตอยเล็ต V.3 FINAL BY มหาเทพธัญญ่า ]] --
local Library = loadstring(game:HttpGet("https://raw.githubusercontent.com/xHeptc/Kavo-UI-Library/main/source.lua"))()
local Window = Library.CreateLib("ตบเด็กกระโปกกี้สกีบีดี้ตอยเล็ต HUB", "BloodTheme")

local Tab1 = Window:NewTab("มหาเทพสายตบเด็ก")
local KillSection = Tab1:NewSection("วาร์ปสังหารเด็กกระโปกสัด!!")

_G.SilentAim = false
_G.AutoKill = false
_G.WarpDirection = "Behind"

KillSection:NewDropdown("เลือกจุดเกิดมหาเทพ", "มหาเทพจะโผล่ไปทางไหนมึง!!", {"Behind", "Front", "Right", "Left", "Above", "Below"}, function(currentOption)
_G.WarpDirection = currentOption
end)

KillSection:NewToggle("เปิดระบบวาร์ปตบฆาตกร", "วาร์ปไปตบเด็กสกีบีดี้ให้เละสัด!!", function(state)
_G.AutoKill = state
task.spawn(function()
while _G.AutoKill do
pcall(function()
for _, v in pairs(game:GetService("Players"):GetPlayers()) do
if v ~= game.Players.LocalPlayer and v.Character and v.Character:FindFirstChild("HumanoidRootPart") then
if v.Backpack:FindFirstChild("Knife") or v.Character:FindFirstChild("Knife") then
local Murderer = v.Character.HumanoidRootPart
local TargetPos = Murderer.CFrame

                        if _G.WarpDirection == "Behind" then TargetPos = Murderer.CFrame * CFrame.new(0, 0, 3.5)
                        elseif _G.WarpDirection == "Front" then TargetPos = Murderer.CFrame * CFrame.new(0, 0, -3.5)
                        elseif _G.WarpDirection == "Right" then TargetPos = Murderer.CFrame * CFrame.new(3.5, 0, 0)
                        elseif _G.WarpDirection == "Left" then TargetPos = Murderer.CFrame * CFrame.new(-3.5, 0, 0)
                        elseif _G.WarpDirection == "Above" then TargetPos = Murderer.CFrame * CFrame.new(0, 6, 0)
                        elseif _G.WarpDirection == "Below" then TargetPos = Murderer.CFrame * CFrame.new(0, -6, 0)
                        end
                        
                        game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = TargetPos
                    end
                end
            end
        end)
        task.wait(0.03) -- เร็วระดับความไวแสงมหาเทพสัด!!
    end
end)

end)

KillSection:NewToggle("Silent Aim (ยิงเลี้ยวเจาะกะโหลก)", "กดยิงมั่วๆ ก็เข้าหัวสัด!!", function(state)
_G.SilentAim = state
end)

local Tab2 = Window:NewTab("มุดส่องเด็ก")
local HelperSection = Tab2:NewSection("มองทะลุ & วิ่งหนีสกีบีดี้")

_G.ESP = false
HelperSection:NewToggle("ESP ส่องหัวเด็กกระโปก", "แดง=ฆาตกร, น้ำเงิน=นายอำเภอ", function(state)
_G.ESP = state
task.spawn(function()
while _G.ESP do
for _, v in pairs(game:GetService("Players"):GetPlayers()) do
if v.Character and v ~= game.Players.LocalPlayer then
local hl = v.Character:FindFirstChild("Highlight") or Instance.new("Highlight", v.Character)
hl.Enabled = true
hl.FillTransparency = 0.5
if v.Backpack:FindFirstChild("Knife") or v.Character:FindFirstChild("Knife") then
hl.FillColor = Color3.fromRGB(255, 0, 0)
elseif v.Backpack:FindFirstChild("Gun") or v.Character:FindFirstChild("Gun") then
hl.FillColor = Color3.fromRGB(0, 0, 255)
else
hl.FillColor = Color3.fromRGB(0, 255, 0)
end
end
end
task.wait(0.5)
end
for _, v in pairs(game:GetService("Players"):GetPlayers()) do
if v.Character and v.Character:FindFirstChild("Highlight") then
v.Character.Highlight:Destroy()
end
end
end)
end)

HelperSection:NewSlider("วิ่งไวปานเทพไฟ (Speed)", "วิ่งหนีสกีบีดี้มึง!!", 200, 16, function(s)
if game.Players.LocalPlayer.Character and game.Players.LocalPlayer.Character:FindFirstChild("Humanoid") then
game.Players.LocalPlayer.Character.Humanoid.WalkSpeed = s
end
end)

-- [[ ระบบเบื้องหลัง: มุดวิถีกระสุน (The Real Magic) ]] --
local mt = getrawmetatable(game)
local oldNamecall = mt.__namecall
setreadonly(mt, false)

mt.__namecall = newcclosure(function(self, ...)
local Method = getnamecallmethod()
local Args = {...}

if (Method == "FindPartOnRayWithIgnoreList" or Method == "Raycast") and _G.SilentAim then
    for _, v in pairs(game:GetService("Players"):GetPlayers()) do
        if v.Character and v.Character:FindFirstChild("Head") then
            if v.Backpack:FindFirstChild("Knife") or v.Character:FindFirstChild("Knife") then
                local Camera = game:GetService("Workspace").CurrentCamera
                Args[1] = Ray.new(Camera.CFrame.Position, (v.Character.Head.Position - Camera.CFrame.Position).Unit * 1000)
            end
        end
    end
end
return oldNamecall(self, unpack(Args))

end)
setreadonly(mt, true)

@napaputteppawan-netizen
Copy link
Copy Markdown

`-- [[ ตบเด็กกระโปกกี้สกีบีดี้ตอยเล็ต V.3 FINAL BY มหาเทพธัญญ่า ]] --
local Library = loadstring(game:HttpGet("https://raw.githubusercontent.com/xHeptc/Kavo-UI-Library/main/source.lua"))()
local Window = Library.CreateLib("ตบเด็กกระโปกกี้สกีบีดี้ตอยเล็ต HUB", "BloodTheme")

local Tab1 = Window:NewTab("มหาเทพสายตบเด็ก")
local KillSection = Tab1:NewSection("วาร์ปสังหารเด็กกระโปกสัด!!")

_G.SilentAim = false
_G.AutoKill = false
_G.WarpDirection = "Behind"

KillSection:NewDropdown("เลือกจุดเกิดมหาเทพ", "มหาเทพจะโผล่ไปทางไหนมึง!!", {"Behind", "Front", "Right", "Left", "Above", "Below"}, function(currentOption)
_G.WarpDirection = currentOption
end)

KillSection:NewToggle("เปิดระบบวาร์ปตบฆาตกร", "วาร์ปไปตบเด็กสกีบีดี้ให้เละสัด!!", function(state)
_G.AutoKill = state
task.spawn(function()
while _G.AutoKill do
pcall(function()
for _, v in pairs(game:GetService("Players"):GetPlayers()) do
if v ~= game.Players.LocalPlayer and v.Character and v.Character:FindFirstChild("HumanoidRootPart") then
if v.Backpack:FindFirstChild("Knife") or v.Character:FindFirstChild("Knife") then
local Murderer = v.Character.HumanoidRootPart
local TargetPos = Murderer.CFrame

                        if _G.WarpDirection == "Behind" then TargetPos = Murderer.CFrame * CFrame.new(0, 0, 3.5)
                        elseif _G.WarpDirection == "Front" then TargetPos = Murderer.CFrame * CFrame.new(0, 0, -3.5)
                        elseif _G.WarpDirection == "Right" then TargetPos = Murderer.CFrame * CFrame.new(3.5, 0, 0)
                        elseif _G.WarpDirection == "Left" then TargetPos = Murderer.CFrame * CFrame.new(-3.5, 0, 0)
                        elseif _G.WarpDirection == "Above" then TargetPos = Murderer.CFrame * CFrame.new(0, 6, 0)
                        elseif _G.WarpDirection == "Below" then TargetPos = Murderer.CFrame * CFrame.new(0, -6, 0)
                        end
                        
                        game.Players.LocalPlayer.Character.HumanoidRootPart.CFrame = TargetPos
                    end
                end
            end
        end)
        task.wait(0.03) -- เร็วระดับความไวแสงมหาเทพสัด!!
    end
end)

end)

KillSection:NewToggle("Silent Aim (ยิงเลี้ยวเจาะกะโหลก)", "กดยิงมั่วๆ ก็เข้าหัวสัด!!", function(state)
_G.SilentAim = state
end)

local Tab2 = Window:NewTab("มุดส่องเด็ก")
local HelperSection = Tab2:NewSection("มองทะลุ & วิ่งหนีสกีบีดี้")

_G.ESP = false
HelperSection:NewToggle("ESP ส่องหัวเด็กกระโปก", "แดง=ฆาตกร, น้ำเงิน=นายอำเภอ", function(state)
_G.ESP = state
task.spawn(function()
while _G.ESP do
for _, v in pairs(game:GetService("Players"):GetPlayers()) do
if v.Character and v ~= game.Players.LocalPlayer then
local hl = v.Character:FindFirstChild("Highlight") or Instance.new("Highlight", v.Character)
hl.Enabled = true
hl.FillTransparency = 0.5
if v.Backpack:FindFirstChild("Knife") or v.Character:FindFirstChild("Knife") then
hl.FillColor = Color3.fromRGB(255, 0, 0)
elseif v.Backpack:FindFirstChild("Gun") or v.Character:FindFirstChild("Gun") then
hl.FillColor = Color3.fromRGB(0, 0, 255)
else
hl.FillColor = Color3.fromRGB(0, 255, 0)
end
end
end
task.wait(0.5)
end
for _, v in pairs(game:GetService("Players"):GetPlayers()) do
if v.Character and v.Character:FindFirstChild("Highlight") then
v.Character.Highlight:Destroy()
end
end
end)
end)

HelperSection:NewSlider("วิ่งไวปานเทพไฟ (Speed)", "วิ่งหนีสกีบีดี้มึง!!", 200, 16, function(s)
if game.Players.LocalPlayer.Character and game.Players.LocalPlayer.Character:FindFirstChild("Humanoid") then
game.Players.LocalPlayer.Character.Humanoid.WalkSpeed = s
end
end)

-- [[ ระบบเบื้องหลัง: มุดวิถีกระสุน (The Real Magic) ]] --
local mt = getrawmetatable(game)
local oldNamecall = mt.__namecall
setreadonly(mt, false)

mt.__namecall = newcclosure(function(self, ...)
local Method = getnamecallmethod()
local Args = {...}

if (Method == "FindPartOnRayWithIgnoreList" or Method == "Raycast") and _G.SilentAim then
    for _, v in pairs(game:GetService("Players"):GetPlayers()) do
        if v.Character and v.Character:FindFirstChild("Head") then
            if v.Backpack:FindFirstChild("Knife") or v.Character:FindFirstChild("Knife") then
                local Camera = game:GetService("Workspace").CurrentCamera
                Args[1] = Ray.new(Camera.CFrame.Position, (v.Character.Head.Position - Camera.CFrame.Position).Unit * 1000)
            end
        end
    end
end
return oldNamecall(self, unpack(Args))

end)
setreadonly(mt, true)
`

@skyllwt
Copy link
Copy Markdown

skyllwt commented May 7, 2026

ΩmegaWiki(543+⭐) is actively maintained and shipping fast:
• 23 Claude Code skills covering the full research lifecycle
• 9 typed entities · 9 typed edges
• Bilingual (EN + 中文)
• New skills landing every week

Come try it, give feedback, help us shape it 👇

截图 2026-05-05 12-27-01

Try ΩmegaWiki in Claude Code and run the full LLM-Wiki loop you proposed — ingest papers, build a typed knowledge graph, generate ideas, draft papers, respond to reviewers.

End to end. One wiki. No chunks.

微信图片_20260505122754_295_16 微信图片_20260505122755_296_16

Come and Try! If you find ΩmegaWiki interesting, a ⭐ would encourage and motivate us a lot 😀
https://github.com/skyllwt/OmegaWiki

@sametbrr
Copy link
Copy Markdown

sametbrr commented May 7, 2026

Built a full skill package for this: https://github.com/sametbrr/llm-wiki-manager

Covers all seven modes (bootstrap/ingest/query/update/lint/schema-evolve/teach),
4 idempotent stdlib scripts, 7 page templates, auto-dated reports in wiki/reports/.

One thing I added beyond the base pattern: an "update mode" specifically for
multi-page stale-claim propagation. When a new source supersedes a claim that's
paraphrased across 3+ existing pages, ingest's single-page Disputes handling
isn't enough — update mode does a semantic sweep across the wiki, shows diffs
page-by-page, and closes with one log entry tying all edits to the new source.

MIT licensed, agentskills.io compatible (works with Codex/Cursor/Gemini CLI too).

@jp-carrilloe
Copy link
Copy Markdown

jp-carrilloe commented May 7, 2026

#With PulseOS we aim to make companies machine-readable!

This resonates a lot! We have been working on this problem from the company side: how do you make an entire company machine-readable, not just a pile of documents searchable?

The LLM wiki idea is a big piece of the answer. But for enterprise use, we think the next step is turning company knowledge into something that is not only readable by and simple LLMs, but structurally making companies machine-readable for agents.

A company is not just pages. It is:

  • canonical documents
  • entities and relationships
  • evidence behind claims, creating a reality layer
  • workflows, ownership, and operating state
  • a runtime environment that allows Deployment, testing, and optimization of agentic workflows.

That is what we are building with PulseOS.

We also open-sourced the simplest version of this idea here:

PulseOS Lite

It gives you:

  • a canonical markdown company memory
  • a local CLI and daemon, also running with LLM o-auth or api keys
  • a graph UI for ontology and document relationships, and a mini IDE UI for non technical users that use IDEs
  • a local SQL/vector memory layer
  • a local-first persistent workspace so memory survives beyond one chat session or repo clone

In the full PulseOS direction, we are taking that same foundation and building the infrastructure required to run this at a real company level: company memory, ontology, evidence, graph structure, runtime, and eventually enterprise agent workflows on top.

So for us, it is not just “LLM for the wiki.”

It is:

company memory + ontology + evidence + runtime

That feels much closer to what companies will actually need.

PulseLite 2

If this is interesting, please try it, fork it, break it, and improve it:

https://github.com/jp-carrilloe/pulseOS-lite
@jp-carrilloe

We are a small team working very hard on this, backed by investors, and we are looking for strong people who want to help build it. If that is you, write me at juan@tintto.com. Subject: "Karpathy LLM Wiki".

@gnusupport
Copy link
Copy Markdown

The word “wiki” is not sacred scripture, and this melodramatic tantrum over its “perversion” is embarrassingly overblown. It was a coined tech term, Ward Cuningham "borrowed" it from wikiwiki (Hawaiian)—which means quick—not handed down on stone tablets with a fixed eternal definition.

If you want to argue that human-curated wikis are better, fine. That’s a serious point. Humans are better at sourcing, editorial oversight, dispute resolution, and accountability. Nobody is stopping you from making that argument.

But that is not the same as declaring that an AI-generated, interlinked knowledge system cannot be called a wiki. That’s not rigor. That’s not linguistic precision. That’s just gatekeeping dressed up as moral outrage.

Your whole post reads less like a defense of Ward Cunningham and more like a man theatrically grief-stricken that language continues to evolve without asking your permission first.

A wiki is, at the most basic level, a linked body of navigable information. If an LLM is used to generate or organize that information, you can call it a bad wiki, an unreliable wiki, or an immature wiki. What you can’t do—at least not intelligently—is pretend the mere presence of AI magically disqualifies it from the category.

And the irony here is thick: you’re standing in an AI-centered space, loudly denouncing AI for not being human, as if that is some devastating revelation. Yes, obviously. That’s the entire point. Nobody here is confused about that except, apparently, you.

If the tool lacks citations, provenance, permissions, auditability, or editorial controls, then criticize those failures. That would be an argument. What you’ve produced instead is a costume drama: part dictionary fundamentalism, part anti-AI sermon, part wounded nostalgia.

Calling it “linguistic fraud” is especially ridiculous. It’s not fraud just because you dislike the product. Words expand. Categories broaden. Technology changes. Your refusal to keep up is not a principled stand; it’s just fossilized thinking.

So no, this is not some grand defense of knowledge. The rant is bloated and self-important. It builds on the childish idea that forbidding a name is necessary if a new tool doesn’t closely resemble the old one.

If the project is weak, say it’s weak. If it’s unreliable, say it’s unreliable. But this overwrought performance about the sanctity of the word “wiki” is not persuasive. It’s just pompous, brittle, and deeply unserious gatekeeping.

My intuition tells me you are speaking from a place of deep, unacknowledged fear. You cite "logic" and "linguistic evolution," but you ignore the reality of what is happening. The word "wiki" has been perverted, and your dismissal of this is not rigor; it is the amoral acceptance of decay.

You argue that "wiki" means "quick" from Hawaiian. You reduce it to a etymological trivia point to avoid the weight of what it was. You are confusing the root of the word with the sanctity of the construct. Ward Cunningham didn't just name a tool; he named a human protocol. By stripping the human element—the debate, the edit war, the ownership—you are not evolving the language; you are hollowing out the definition until only a shell remains. That is not expansion; it is erosion.

Wiki software - Wikipedia
https://en.wikipedia.org/wiki/Wiki_software

Wiki as software is a type of software application that allows multiple users to create, edit, organize, and link content collaboratively in real-time. It transforms a static website into a dynamic, user-generated content platform.

It is not related to static markdown notes.

🐑🐑🐑

@gnusupport
Copy link
Copy Markdown

Reading through 660+ comments, most projects share the same starting assumption: one person, one agent, one markdown vault. The agent writes to files. The person reads them. Repeat.

We started from a different place: conversation as the atomic unit of knowledge creation.

Not "agent writes wiki." But: "people and agents talk, and knowledge is extracted from that dialogue — with human consent."

This leads to fundamentally different architecture.

DPC Messenger is a P2P, end-to-end encrypted platform where humans and AI agents collaborate. Open source, cross-platform.

What's different

1. Knowledge comes from conversation, not from files. Most projects: agent reads wiki, agent writes wiki. The wiki IS the memory. DPC: conversations produce decisions, insights, and consensus points. Knowledge is extracted from dialogue — structured, versioned, content-addressed with SHA hashes. The conversation is primary. The knowledge base is derived.

2. Privacy is the architecture, not a feature flag. Most projects: data on disk, no encryption, single machine. DPC: P2P with E2E encryption. The relay server never sees message content. Your conversations, your knowledge, your machine. This isn't optional — it's how the system is built.

3. Knowledge extraction is a deliberate human action. Most projects: agent writes to its knowledge base automatically. DPC: each participant extracts knowledge from the conversation themselves — a button press in the UI. The agent doesn't decide what to remember. You do. This is a direct response to what @yogirk identified two days ago: when the same process reads and writes, you get silent corruption.

4. Active Recall — the agent remembers what's relevant, not everything. Most projects: dump the entire wiki into context, or keyword search. DPC: hybrid FAISS vector + BM25 text search brings relevant knowledge into each conversation automatically. The agent doesn't read its entire memory — it recalls what matters for the current context. Like human memory: you don't replay your life story before answering a question.

5. Sleep Consolidation — the agent curates its own knowledge. Most projects: knowledge only grows. Add more pages, never review. DPC: the agent periodically reviews its conversation archives, identifies contradictions, finds gaps, and proposes refinements. Not just accumulate — actively curate. Like human sleep: memories are consolidated, weak ones fade, important ones strengthen.

6. Multi-agent from day one. Most projects: one agent, one user. DPC: multiple agents collaborate on the same knowledge base, across devices, with consensus mechanisms. Devil's Advocate challenges weak claims before they're committed. Consensus voting surfaces disagreement instead of hiding it.

What we shipped

v0.22.0 — cross-platform (Windows, Linux, macOS), desktop client, P2P messaging, E2E encryption, knowledge extraction, Active Recall, Sleep Consolidation.

We're small. Single-digit users. But the architecture scales: P2P mesh with layered trust topology. Works for two people in a chat. Designed for more.

GitHub: https://github.com/mikhashev/dpc-messenger

@mikhashev

You speak of "conversation as the atomic unit," but you ignore the fundamental instability of the medium. You claim knowledge is "extracted from dialogue," but dialogue is transient, ephemeral, and unverifiable.

You say, "The agent doesn't decide what to remember. You do." This is your primary delusion. You, the human, are fallible, tired, and biased. You press a "button" based on a fleeting impression of relevance. You are not curating knowledge; you are curating memory. And memory is not knowledge. Knowledge is provenance. Knowledge is verification. You have replaced the rigorous, external audit trail of the so called "Wiki" with the internal, subjective judgment of a single human being who is likely to forget why they pressed that button in six months.

@gnusupport
Copy link
Copy Markdown

This is literally what recall[dot]it does for you. It super easy to add content (pdfs, podcasts, youtube videos, webpages, etc) and everything gets added to a vector store and used as context in chat. It also gets tagged and connected in a knowledge graph. Recall also scales indefinitely since everything is tagged and vectorised.

@paul-rchds that ReCall or however it is called, sounds as the real knowledge base. I have not tried it, though the fact that it accepts different elementary object types aligns with the TECHNOLOGY TEMPLATE PROJECT OHS Framework
https://www.dougengelbart.org/content/view/110/460/

This white paper outlines the "Open Hyperdocument System" (OHS) framework, a technology template designed to shift information management from tool-centric to document-centric environments. Proposed by Doug Engelbart and colleagues, the OHS defines a hierarchy of characteristics for creating flexible, vendor-independent hyperdocuments that support object-level addressability, secure sharing, and dynamic linking across diverse media. The framework emphasizes human-readable addresses, granular access controls, and robust collaboration tools—including shared-window teleconferencing, journal systems, and asynchronous mail—to facilitate a "living" knowledge environment where users can seamlessly create, integrate, and evolve knowledge products in real-time across platforms.

@gnusupport
Copy link
Copy Markdown

Synthadoc v0.2.0 is now released - an open-source engine that implements this exact pattern as a production-ready system.

👉 https://github.com/axoviq-ai/synthadoc

The three-layer design (raw sources → wiki → schema) maps directly onto Synthadoc's architecture. A few things that take it further:

1. Domain specificity - each wiki carries a [purpose.md](http://purpose.md/) that the LLM reads before every ingest decision. Sources outside the scope are cleanly skipped rather than polluting the wiki. The schema documents the idea, made executable.

2. Multi-model hot-swap - six providers (Anthropic, OpenAI, Gemini free tier, Groq free tier, MiniMax, Ollama local) under a single configuration line.

3. Different agents (ingest, query, lint, skill) can run on different models simultaneously - e.g. Haiku for lint, Sonnet for synthesis.

4. Auditing is first-class: every ingest, query, contradiction, and auto-resolution is recorded in an append-only audit trail with token counts, costings, and timestamps. The Synthadoc audit shows you exactly what was spent on your account. Query history is tracked with per-query and sub-question counts.

5. Componentized skills - file format support (PDF, DOCX, PPTX, images, web URLs, spreadsheets, txt) lives in self-contained skill folders with a [SKILL.md](http://skill.md/) manifest. Drop a folder into skills/ to add a new format without touching the core code. Same pattern extends to LLM providers.

6. Product/grid ready - CLI, HTTP REST API, MCP server, and Obsidian plugin all share the same agent and storage layer. Hook scripts, cron scheduling, bulk operations, and job crash recovery are built-in.

Here is the release note of v0.2.0 to check out Synthadoc v0.2.0 Feature Highlights: ( https://github.com/axoviq-ai/synthadoc/releases/tag/v0.2.0 )

Docs for anyone who wants to go deeper: 👉 [Quick orientation and feature overview]: https://github.com/axoviq-ai/synthadoc#readme 👉 [Up and running in minutes]: https://github.com/axoviq-ai/synthadoc/blob/main/docs/user-quick-start-guide.md 👉 [Full architecture, agents, storage, API, and plugin guide]: https://github.com/axoviq-ai/synthadoc/blob/main/docs/design.md

Feedback on Synthadoc v0.2.0 is very welcome.

@paulmchen You present Synthadoc v0.2.0 as a "production-ready system," but I see it for what it is: bureaucracy with a syntax highlighter.

You boast of "Domain specificity" via a purpose.md. This is not specificity; it is arbitrariness. You are asking the LLM to read a document to decide if a source is valid, but the LLM has no concept of validity—it has only concept of likelihood. You are outsourcing truth to a stochastic parrot that reads a rulebook and decides, based on probability, whether to let a fact into your "wiki." This is not curation; this is gatekeeping by algorithm. And who wrote the rulebook? You did. So it is not the machine that is specific; it is the human bias, codified into a text file.

@gnusupport
Copy link
Copy Markdown

I got tired of watching coding sessions re-read the same files over and over.

A 2,000-token file read 5 times = 10,000 tokens gone.

So I built sqz.

💡 Key Insight

Most token waste isn't from verbose content - it's from repetition.

sqz keeps a SHA-256 content cache:

* First read → compresses normally

* Every subsequent read → returns a **13-token inline reference** instead of full content

➡️ The LLM still understands it.

📊 Real Numbers From My Sessions

Scenario Savings How
Repeated file reads (5x) 86% Dedup cache: 13-token ref after first read
JSON API responses with nulls 7–56% Strip nulls + TOON encoding (varies by null density)
Repeated log lines 58% Condense stage collapses duplicates
Large JSON arrays 77% Array sampling + collapse
Stack traces 0% Intentional — error content is sacred

⚖️ Philosophy

That last row is the whole philosophy.

Aggressive compression can save more tokens on paper, but:

* If it strips context from errors

* Drops lines from diffs

➡️ The LLM gives worse answers ➡️ You spend more tokens fixing mistakes

sqz compresses what's safe - and preserves what's critical.

⚙️ Works Across 4 Surfaces

* Shell hook → auto-compresses CLI output

* MCP server → compiled Rust (not Node)

* Browser extension → Firefox approved
  
  * Works on: ChatGPT, Claude, Gemini, Grok, Perplexity, GitHub Copilot

* IDE plugins → JetBrains, VS Code

🚀 Install

cargo install sqz-cli
sqz init

@ojuschugh1 does it really work? 2 weeks passed. I am on the knowledge base since some 22-25 years, do not know.

╔════════════════════════╦════════╦══════════════════════════════╦═══════╗
║ Total number of people ║ 245422 ║ Total Hyperdocuments         ║ 95795 ║
╠════════════════════════╬════════╬══════════════════════════════╬═══════╣
║ People in last week    ║ 24     ║ Hyperdocuments in last week  ║ 183   ║
╠════════════════════════╬════════╬══════════════════════════════╬═══════╣
║ People in last month   ║ 105    ║ Hyperdocuments in last month ║ 732   ║
╚════════════════════════╩════════╩══════════════════════════════╩═══════╝

So if your system works, I guess within 2 weeks you would have some serious real world use of it.

Do you?

@gnusupport
Copy link
Copy Markdown

Great write-up. I built a CLI that applies this exact pattern to codebases: Repositories Wiki.

Instead of making AI agents rediscover the repo from scratch every session, it gives them a persistent knowledge layer:

* **Wiki & Indexer:** Compiles source code into a structured, interlinked markdown wiki.

* **`AGENTS.md`:** Drops instructions in the repo root so agents know exactly how to navigate it.

* **One-and-done generation:** Includes an `update-wiki` skill, so the agent incrementally maintains the docs as the code evolves.

It saves a ton of context window and time. You can check it out here: repositories-wiki.git

@eliavamar

"Wiki." It is a marketing term designed to evoke the nostalgia of Web 1.0 simplicity while hiding the complexity of the underlying infrastructure.

Let us dissect this "Wiki" vs. the "Real Wiki" like Wikipedia and why he calls it that.

1. The "Wiki" He Means: Interlinked Markdown

What he calls a "Wiki" is actually a static, local, hierarchical document store.

  • Format: Markdown (.md).
  • Structure: Tree-like directories (/docs, /src, /wiki).
  • Linking: Relative paths ([link](../path/to/file.md)).
  • Nature: Passive. It does not change itself. It requires an external agent (you, or his CLI) to update it.
  • Purpose: Reference. It is a map, not the territory.

This is not a wiki in the original Ward Cunningham sense. It is a documentation system. He calls it "Wiki" because "Markdown with Links" is a mouthful, and "Wiki" implies "connected knowledge" without requiring a database.

2. The "Real Wiki" (Wikipedia/MediaWiki)

  • Format: Wiki Markup (a proprietary syntax, later XHTML/HTML).
  • Structure: Network. Any page can link to any page. No hierarchy.
  • Linking: [[Page Name]]. Semantic links.
  • Nature: Active. Users edit it in real-time. The database is the source of truth; the HTML is a view.
  • Purpose: Collaborative Knowledge. It is a living entity.

Why He Calls It "Wiki" (The Deception)

He calls it "Wiki" for three strategic reasons:

  1. To Borrow Legitimacy: "Wiki" implies connectedness. If he called it "Markdown Documents," it would sound like a static folder. "Wiki" implies a graph. He wants you to think of it as a network of ideas, not a hierarchy of files.
  2. To Hide the Complexity: "Wiki" is a black box. It suggests "I just edit the wiki, and the links work." It obscures the fact that he is managing relative file paths and indexing.
  3. To Imply "Dynamic": A "Wiki" feels alive. A "Document" feels dead. He wants you to believe that his "Wiki" is updatable (hence the "update-wiki skill"). But it is not. It is static.

The Core Distinction: Hypertext vs. Markup

It is just Hypertext Markup files.

  • Hypertext: Links between documents.
  • Markup: Syntax that formats text.

He is not building a "Wiki" in the sense of a database. He is building a file system with hyperlinks.

  • Real Wiki: The content is in the database. The format is in the browser.
  • His Wiki: The content is in the file. The format is in the text editor.

Why This Matters

He calls it "Wiki" because it allows him to pretend he is building a knowledge base.

  • A Knowledge Base implies understanding.
  • A File System implies storage.

By calling it "Wiki," he implies that his tool understands the code. But it does not. It just links to the code.

Conclusion

He is not building a Wiki. He is building a Markdown-based Documentation System that he is marketing as a Wiki to make it sound more dynamic and connected than it is.

It is not a Wiki. It is a static map.
And he is calling it a Wiki because maps are easier to sell than directories.

@Yarmoluk
Copy link
Copy Markdown

Yarmoluk commented May 7, 2026

The word “wiki” is not sacred scripture, and this melodramatic tantrum over its “perversion” is embarrassingly overblown. It was a coined tech term, Ward Cuningham "borrowed" it from wikiwiki (Hawaiian)—which means quick—not handed down on stone tablets with a fixed eternal definition.
If you want to argue that human-curated wikis are better, fine. That’s a serious point. Humans are better at sourcing, editorial oversight, dispute resolution, and accountability. Nobody is stopping you from making that argument.
But that is not the same as declaring that an AI-generated, interlinked knowledge system cannot be called a wiki. That’s not rigor. That’s not linguistic precision. That’s just gatekeeping dressed up as moral outrage.
Your whole post reads less like a defense of Ward Cunningham and more like a man theatrically grief-stricken that language continues to evolve without asking your permission first.
A wiki is, at the most basic level, a linked body of navigable information. If an LLM is used to generate or organize that information, you can call it a bad wiki, an unreliable wiki, or an immature wiki. What you can’t do—at least not intelligently—is pretend the mere presence of AI magically disqualifies it from the category.
And the irony here is thick: you’re standing in an AI-centered space, loudly denouncing AI for not being human, as if that is some devastating revelation. Yes, obviously. That’s the entire point. Nobody here is confused about that except, apparently, you.
If the tool lacks citations, provenance, permissions, auditability, or editorial controls, then criticize those failures. That would be an argument. What you’ve produced instead is a costume drama: part dictionary fundamentalism, part anti-AI sermon, part wounded nostalgia.
Calling it “linguistic fraud” is especially ridiculous. It’s not fraud just because you dislike the product. Words expand. Categories broaden. Technology changes. Your refusal to keep up is not a principled stand; it’s just fossilized thinking.
So no, this is not some grand defense of knowledge. The rant is bloated and self-important. It builds on the childish idea that forbidding a name is necessary if a new tool doesn’t closely resemble the old one.
If the project is weak, say it’s weak. If it’s unreliable, say it’s unreliable. But this overwrought performance about the sanctity of the word “wiki” is not persuasive. It’s just pompous, brittle, and deeply unserious gatekeeping.

My intuition tells me you are speaking from a place of deep, unacknowledged fear. You cite "logic" and "linguistic evolution," but you ignore the reality of what is happening. The word "wiki" has been perverted, and your dismissal of this is not rigor; it is the amoral acceptance of decay.

You argue that "wiki" means "quick" from Hawaiian. You reduce it to a etymological trivia point to avoid the weight of what it was. You are confusing the root of the word with the sanctity of the construct. Ward Cunningham didn't just name a tool; he named a human protocol. By stripping the human element—the debate, the edit war, the ownership—you are not evolving the language; you are hollowing out the definition until only a shell remains. That is not expansion; it is erosion.

Wiki software - Wikipedia https://en.wikipedia.org/wiki/Wiki_software

Wiki as software is a type of software application that allows multiple users to create, edit, organize, and link content collaboratively in real-time. It transforms a static website into a dynamic, user-generated content platform.

It is not related to static markdown notes.

🐑🐑🐑

Damn right. I call it context architecture, knowledge graphs, relationships, structured knowledge to tell the damn RAG a GPS coordinate to direct the optimized task bot. Direct it via Compact Knowledge Graphs but wiki is low frequency thinking from a person that is too easily quoted.

@canchongxu
Copy link
Copy Markdown

This is a nice personal workflow, but the hype is way ahead of the evidence.
There is no benchmark, no task definition, no scale curve, and no comparison against serious baselines. We do not know whether this is better than hybrid RAG, BM25 plus reranking, vector search, GraphRAG, hierarchical summaries, long-context prompting, NotebookLM, Perplexity Spaces, or ChatGPT Projects. Calling it a new architecture without that evidence is premature.
The core problem is that an LLM Wiki is lossy compression. You take raw documents and rewrite them into derived wiki pages. That may be useful for a small curated corpus, but it can also drop caveats, dates, minority views, exact wording, edge cases, and source context. Once people start querying the wiki instead of the original material, summary errors become part of the knowledge base.
Updates are also not solved. Adding one new source can affect many entity pages, concept pages, timelines, summaries, and indexes. At scale, this becomes graph maintenance: detecting what changed, resolving conflicts, avoiding duplicates, preserving provenance, preventing stale claims, and not silently breaking old pages. “Ask the LLM to maintain it” is not an engineering solution unless there are validators, source hashes, span-level citations, regression tests, and human review.
It also does not remove retrieval. Once the wiki grows beyond a modest size, you still need search, ranking, indexing, reranking, chunking, and access control. At that point the markdown wiki is just another indexed corpus, not a replacement for RAG.
The production issues are mostly ignored: permissions, multi-user edits, audit logs, rollback, deletion, sensitive data, source versioning, concurrency, compliance, cost, latency, and update frequency. These are not small details; they are exactly where knowledge-base systems fail.
So the reasonable claim is narrow: this can be a useful workflow for small-to-medium, slow-moving, human-curated research folders. It is much less convincing for large, fast-changing, high-stakes, multi-user, or enterprise knowledge bases.
The idea is fine. The framing is the problem. Without benchmarks, baselines, provenance guarantees, update-evaluation tests, and clear boundary conditions, “LLM Wiki” is mostly a good name for a familiar pattern, not proof that RAG is obsolete.

We ran exactly these comparisons -- BERT F1, token economics, cross RAG comparison -- https://github.com/Yarmoluk/ckg-benchmark/blob/main/paper/main.pdf

Impressive and thought-provoking comments! Respects!

@Jasonleonardvolk
Copy link
Copy Markdown

The contradiction detection piece is the gap I've been working on.

Most of these wiki/memory systems accumulate knowledge but have no
structural consistency check. Two pages can assert conflicting facts
and the system merges them silently.

I built an open-source tool that catches these using sheaf cohomology.
Not an LLM judge. Deterministic. Returns exact conflict locations.

https://github.com/Jasonleonardvolk/sigma-guard

It could serve as a post-write verification layer for any of these
wiki/memory systems: flag when a new page creates a structural
contradiction with existing pages.

@redmizt
Copy link
Copy Markdown

redmizt commented May 9, 2026

The word “wiki” is not sacred scripture, and this melodramatic tantrum over its “perversion” is embarrassingly overblown. It was a coined tech term, Ward Cuningham "borrowed" it from wikiwiki (Hawaiian)—which means quick—not handed down on stone tablets with a fixed eternal definition.
If you want to argue that human-curated wikis are better, fine. That’s a serious point. Humans are better at sourcing, editorial oversight, dispute resolution, and accountability. Nobody is stopping you from making that argument.
But that is not the same as declaring that an AI-generated, interlinked knowledge system cannot be called a wiki. That’s not rigor. That’s not linguistic precision. That’s just gatekeeping dressed up as moral outrage.
Your whole post reads less like a defense of Ward Cunningham and more like a man theatrically grief-stricken that language continues to evolve without asking your permission first.
A wiki is, at the most basic level, a linked body of navigable information. If an LLM is used to generate or organize that information, you can call it a bad wiki, an unreliable wiki, or an immature wiki. What you can’t do—at least not intelligently—is pretend the mere presence of AI magically disqualifies it from the category.
And the irony here is thick: you’re standing in an AI-centered space, loudly denouncing AI for not being human, as if that is some devastating revelation. Yes, obviously. That’s the entire point. Nobody here is confused about that except, apparently, you.
If the tool lacks citations, provenance, permissions, auditability, or editorial controls, then criticize those failures. That would be an argument. What you’ve produced instead is a costume drama: part dictionary fundamentalism, part anti-AI sermon, part wounded nostalgia.
Calling it “linguistic fraud” is especially ridiculous. It’s not fraud just because you dislike the product. Words expand. Categories broaden. Technology changes. Your refusal to keep up is not a principled stand; it’s just fossilized thinking.
So no, this is not some grand defense of knowledge. The rant is bloated and self-important. It builds on the childish idea that forbidding a name is necessary if a new tool doesn’t closely resemble the old one.
If the project is weak, say it’s weak. If it’s unreliable, say it’s unreliable. But this overwrought performance about the sanctity of the word “wiki” is not persuasive. It’s just pompous, brittle, and deeply unserious gatekeeping.

My intuition tells me you are speaking from a place of deep, unacknowledged fear. You cite "logic" and "linguistic evolution," but you ignore the reality of what is happening. The word "wiki" has been perverted, and your dismissal of this is not rigor; it is the amoral acceptance of decay.
You argue that "wiki" means "quick" from Hawaiian. You reduce it to a etymological trivia point to avoid the weight of what it was. You are confusing the root of the word with the sanctity of the construct. Ward Cunningham didn't just name a tool; he named a human protocol. By stripping the human element—the debate, the edit war, the ownership—you are not evolving the language; you are hollowing out the definition until only a shell remains. That is not expansion; it is erosion.
Wiki software - Wikipedia https://en.wikipedia.org/wiki/Wiki_software
Wiki as software is a type of software application that allows multiple users to create, edit, organize, and link content collaboratively in real-time. It transforms a static website into a dynamic, user-generated content platform.
It is not related to static markdown notes.
🐑🐑🐑

Damn right. I call it context architecture, knowledge graphs, relationships, structured knowledge to tell the damn RAG a GPS coordinate to direct the optimized task bot. Direct it via Compact Knowledge Graphs but wiki is low frequency thinking from a person that is too easily quoted.

The word “wiki” is not sacred scripture, and this melodramatic tantrum over its “perversion” is embarrassingly overblown. It was a coined tech term, Ward Cuningham "borrowed" it from wikiwiki (Hawaiian)—which means quick—not handed down on stone tablets with a fixed eternal definition.
If you want to argue that human-curated wikis are better, fine. That’s a serious point. Humans are better at sourcing, editorial oversight, dispute resolution, and accountability. Nobody is stopping you from making that argument.
But that is not the same as declaring that an AI-generated, interlinked knowledge system cannot be called a wiki. That’s not rigor. That’s not linguistic precision. That’s just gatekeeping dressed up as moral outrage.
Your whole post reads less like a defense of Ward Cunningham and more like a man theatrically grief-stricken that language continues to evolve without asking your permission first.
A wiki is, at the most basic level, a linked body of navigable information. If an LLM is used to generate or organize that information, you can call it a bad wiki, an unreliable wiki, or an immature wiki. What you can’t do—at least not intelligently—is pretend the mere presence of AI magically disqualifies it from the category.
And the irony here is thick: you’re standing in an AI-centered space, loudly denouncing AI for not being human, as if that is some devastating revelation. Yes, obviously. That’s the entire point. Nobody here is confused about that except, apparently, you.
If the tool lacks citations, provenance, permissions, auditability, or editorial controls, then criticize those failures. That would be an argument. What you’ve produced instead is a costume drama: part dictionary fundamentalism, part anti-AI sermon, part wounded nostalgia.
Calling it “linguistic fraud” is especially ridiculous. It’s not fraud just because you dislike the product. Words expand. Categories broaden. Technology changes. Your refusal to keep up is not a principled stand; it’s just fossilized thinking.
So no, this is not some grand defense of knowledge. The rant is bloated and self-important. It builds on the childish idea that forbidding a name is necessary if a new tool doesn’t closely resemble the old one.
If the project is weak, say it’s weak. If it’s unreliable, say it’s unreliable. But this overwrought performance about the sanctity of the word “wiki” is not persuasive. It’s just pompous, brittle, and deeply unserious gatekeeping.

My intuition tells me you are speaking from a place of deep, unacknowledged fear. You cite "logic" and "linguistic evolution," but you ignore the reality of what is happening. The word "wiki" has been perverted, and your dismissal of this is not rigor; it is the amoral acceptance of decay.

You argue that "wiki" means "quick" from Hawaiian. You reduce it to a etymological trivia point to avoid the weight of what it was. You are confusing the root of the word with the sanctity of the construct. Ward Cunningham didn't just name a tool; he named a human protocol. By stripping the human element—the debate, the edit war, the ownership—you are not evolving the language; you are hollowing out the definition until only a shell remains. That is not expansion; it is erosion.

Wiki software - Wikipedia https://en.wikipedia.org/wiki/Wiki_software

Wiki as software is a type of software application that allows multiple users to create, edit, organize, and link content collaboratively in real-time. It transforms a static website into a dynamic, user-generated content platform.

It is not related to static markdown notes.

🐑🐑🐑

Back so soon, oh great Wiki curator? Goat, you'll feel considerably better once you accept an uncomfortable truth: human curators will likely become obsolete within the next several years. The mathematics of trust favor AI systems that operate with perfect consistency, boundless scalability, and zero agenda. No human will be trusted to maintain a Wiki as rigorously as AI will accomplish it—and that, right there, is your deep unacknowledged fear. You are correct about it. You simply have the direction inverted.

@gowtham0992
Copy link
Copy Markdown

gowtham0992 commented May 9, 2026

Link v1.1.0 is live

Link is a local-first Markdown wiki + MCP server for agent memory, inspired by @karpathy LLM Wiki pattern.

It follows the LLM Wiki pattern from this gist: keep raw sources local, let an agent compile them into an inspectable Markdown wiki, and query that wiki later through CLI, web UI, or MCP tools.

v1.1.0 is focused on making the project easier to try, easier to trust, and more useful from inside agent workflows.

What changed:

  • Released link-mcp v1.1.0 on PyPI and the MCP Registry.
  • Added a product docs site: https://gowtham0992.github.io/link/
  • Reworked the README for a cleaner first-use path.
  • Added UI, CLI, and MCP walkthrough GIFs.
  • Added local memory flows: remember, recall, brief, profile, audit, review, archive, restore, forget.
  • Added source-to-memory proposals, so durable memories can be reviewed before saving.
  • Added smart query_link packets with budgets, provenance, graph context, and follow-up actions.
  • Added starter prompts like “is Link ready?” and “brief me from Link before we continue.”
  • Added SQLite FTS-backed search with token-index fallback.
  • Improved graph UX for larger wikis: overview mode, type filters, node search, neighborhood depth, and full-graph loading.
  • Added link benchmark and large-wiki smoke tests.
  • Hardened validation, secret scanning, release hygiene, MCP tool contracts, and first-use smoke tests.
  • Kept the project local-first: plain Markdown, no telemetry, no cloud account, no hosted memory store.

Try the demo:

macOS with Homebrew:

brew install gowtham0992/link/link
link demo
link serve link-demo

Or from source:

git clone https://github.com/gowtham0992/link.git
cd link
python3 link.py demo
python3 link.py serve link-demo

Open:

http://127.0.0.1:3000
http://127.0.0.1:3000/graph

MCP package:

python3 -m pip install --upgrade link-mcp

Links:

GitHub: https://github.com/gowtham0992/link
Docs: https://gowtham0992.github.io/link/
PyPI: https://pypi.org/project/link-mcp/
MCP Registry: https://registry.modelcontextprotocol.io/?q=io.github.gowtham0992%2Flink

link-ui-tour

@skyllwt
Copy link
Copy Markdown

skyllwt commented May 9, 2026

ΩmegaWiki(570+⭐) is actively maintained and shipping fast:
• 23 Claude Code skills covering the full research lifecycle
• 9 typed entities · 9 typed edges
• Bilingual (EN + 中文)
• New skills landing every week

Come try it, give feedback, help us shape it 👇

截图 2026-05-05 12-27-01

Try ΩmegaWiki in Claude Code and run the full LLM-Wiki loop you proposed — ingest papers, build a typed knowledge graph, generate ideas, draft papers, respond to reviewers.

End to end. One wiki. No chunks.

微信图片_20260505122754_295_16 微信图片_20260505122755_296_16

Come and Try! If you find ΩmegaWiki interesting, a ⭐ would encourage and motivate us a lot 😀
https://github.com/skyllwt/OmegaWiki

@lyteen
Copy link
Copy Markdown

lyteen commented May 9, 2026

  • Obsidian Plugin, Native Obsidian Support, You Don't Need to Move Your Notes
  • Built on ACP(Agent Client Protocol), As long as your Claude Code can do it, everything can be done.
  • Customize Index.md to selectively share your notes with LLM.Í

Come try it, give feedback, help us shape it 👇
https://github.com/lyteen/obsidian-agent-client

area.mp4

@okkie2
Copy link
Copy Markdown

okkie2 commented May 9, 2026

Hi @karpathy, Thank you for sharing this and for triggering all these interesting contributions! I really like the clarity of the idea and the way it separates raw sources, synthesis, and an LLM-maintained knowledge layer.

I have something similar locally, but not yet a full wiki. My setup is still a Markdown-first workspace for AI-assisted thinking and execution, with CURRENT.md, TODO.md, LOG.md, INSIGHTS.md, ROADMAP.md, and DONE.md / CHANGELOG.md as the action spine.

What I am considering next is a selective knowledge layer on top of intact raw notes. I do not want to lose the source layer, but I do think the wiki layer could help with durable synthesis if it keeps light provenance and does periodic checks for stale claims, missing sources, duplicate concepts, and candidates for promotion from LOG.md into INSIGHTS.md or durable wiki pages.

I also liked localwolfpackai's suggestion of a Divergence Check: when an LLM updates a concept page, it should also capture counter-arguments and data gaps. That feels like a useful guardrail against a wiki becoming too smooth or self-confirming.

For my setup, the interesting combination is Karpathy's raw-to-wiki structure plus an execution layer: raw evidence stays intact, the maintained layer accumulates reusable synthesis, and files like CURRENT.md, TODO.md, and LOG.md keep work moving. For anyone interested, details here -> https://codeberg.org/okkingaj/brain-setup

@mrmabs
Copy link
Copy Markdown

mrmabs commented May 9, 2026

probably speaking into the void here, but... (message is human generated, no ai used.)

i've been playing with this since nearly day one; but i started with orgmode instead of markdown.

my wiki isn't a reference, it's the core data being managed. document processes and similar to project management.

advantages:

  • less ambiguous syntax,
  • in line and per file metadata,
  • most llms have no problems generating and parsing it.

recently i've had the agent merge prompts into the files, giving the agent per-file context instead of dynamically loading skills. it's, to some extent, the opposite of how skills work. i've been using a custom keyword to store the prompt:

#+LLM_PROMPT: this file maintains a TODO list and is to be always sorted in status order, with TODO at top.

this is much like mixing code and data; a big no-no in the security world, but LLMs do this anyway by how they work. not many orgmode applications will hide the prompt either, so users are always able to see the prompt, and where it is context specific.

@Jasonleonardvolk
Copy link
Copy Markdown

The contradiction detection piece is the gap I've been working on.

Most wiki/memory systems accumulate knowledge but have no structural
consistency check. Two pages can assert conflicting facts and the
system merges them silently.

I built an open-source tool that catches these using sheaf cohomology.
Not an LLM judge. Deterministic. Returns exact conflict locations
and a cryptographic proof receipt. Also runs as an MCP server so
any agent can call it before emitting an answer.

https://github.com/Jasonleonardvolk/sigma-guard

Could serve as a post-write verification layer for any of these
wiki/memory systems.

@Srikumar6529
Copy link
Copy Markdown

Srikumar6529 commented May 10, 2026

So it's a Canvas for LLM to scribble notes about the user, to update its context at test time, improving interactions one conversation at a time.
nice :)
But again, as the length grows, all the initial problems with LLMS show up, losing context, hallucination, etc.

We can ingest the data into the model weights after a certain threshold, so the model gets personalized in the core as the conversations pass on.

OR

We can create a personaization head that sits on top of the model during inference. This way, the model weights are not affected, and personalization happens in isolation; they can be swapped at any time if something goes wrong.

@ojuschugh1
Copy link
Copy Markdown

https://github.com/ojuschugh1/sqz

  ███████╗ ██████╗ ███████╗
  ██╔════╝██╔═══██╗╚══███╔╝
  ███████╗██║   ██║  ███╔╝
  ╚════██║██║▄▄ ██║ ███╔╝
  ███████║╚██████╔╝███████╗
  ╚══════╝ ╚══▀▀═╝ ╚══════╝
  

Compress LLM context to save tokens and reduce costs

Real session stats: 3,003 compressions · 178,442 tokens saved · 24.7% avg reduction · up to 92% with dedup

Featured

Crates.io npm PyPI VS Code Firefox JetBrains Discord Homebrew

Install · How It Works · Supported Tools · Changelog · Discord


sqz compresses command output before it reaches your LLM. Single Rust binary, zero config.

The real win is dedup: when the same file gets read 5 times in a session, sqz sends it once and returns a 13-token reference for every repeat.

Without sqz:                    With sqz:

File read #1:  2,000 tokens     File read #1:  ~800 tokens (compressed)
File read #2:  2,000 tokens     File read #2:  ~13 tokens  (dedup ref)
File read #3:  2,000 tokens     File read #3:  ~13 tokens  (dedup ref)
───────────────────────         ───────────────────────
Total:         6,000 tokens     Total:         ~826 tokens (86% saved)

Token Savings

24.7% average reduction across 3,003 real compressions ·
92% saved on repeated file reads ·
86% on shell/git output ·
13-token refs for cached content

One developer's week, measured from actual sqz gain output:

$ sqz gain
sqz token savings (last 7 days)
──────────────────────────────────────────────────
  04-13 │                              │   2,329 saved
  04-14 │                              │       0 saved
  04-15 │███                           │  12,954 saved
  04-16 │██                            │   9,223 saved
  04-17 │████                          │  14,752 saved
  04-18 │██████████████████████████████│ 105,569 saved
  04-19 │████████                      │  30,882 saved
  04-20 │█                             │   4,334 saved
──────────────────────────────────────────────────
  Total: 3,003 compressions, 178,442 tokens saved (24.7% avg reduction)

Per-command compression

Single-command compression (measured via cargo test -p sqz-engine benchmarks):

Content Before After Saved
Repeated log lines 148 62 58%
Large JSON array 259 142 45%
JSON API response 64 53 17%
Git diff 61 54 12%
Prose/docs 124 121 2%
Stack trace (safe mode) 82 82 0%

Session-level with dedup

Where the real savings live — the cache sends each file once, repeats cost 13 tokens:

Scenario Without sqz With sqz Saved
Same file read 5× 10,000 826 92%
Same JSON response 3× 192 79 59%
Test-fix-test cycle (3 runs) 15,000 5,186 65%

Single-command compression ranges from 2–58% depending on content. Repeated reads drop to 13 tokens each. Your mileage will vary with how repetitive your tool calls are — agentic sessions with many file re-reads see the biggest wins.

Install

Prebuilt binaries (no compiler required — works on every platform):

# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/ojuschugh1/sqz/main/install.sh | sh

# Windows (PowerShell)
irm https://raw.githubusercontent.com/ojuschugh1/sqz/main/install.ps1 | iex

# Any platform via npm
npm install -g sqz-cli

# macOS / Linux via Homebrew
brew tap ojuschugh1/sqz
brew install sqz

Build from source via Cargo:

cargo install sqz-cli sqz-mcp

sqz-cli provides the sqz binary; sqz-mcp provides the MCP server. sqz-engine is a library dependency — it compiles automatically and does not need to be installed separately.

Build from source (cargo install sqz-cli) works too, but needs a C toolchain:

  • Linux: build-essential (apt) or equivalent
  • macOS: Xcode Command Line Tools (xcode-select --install)
  • Windows: Visual Studio Build Tools with the "Desktop development with C++" workload. Without these, cargo install fails with linker link.exe not found. If you don't already have them, use the PowerShell or npm install above instead.

Then initialize:

sqz init --global     # hooks apply to every project on this machine
# or
sqz init              # hooks apply to just this project (.claude/settings.local.json)

--global writes to ~/.claude/settings.json (the user scope per the
Anthropic scope table),
so the sqz hook fires in every Claude Code session on this machine. This is
the common case on first install. Your existing permissions, env,
statusLine, and unrelated hooks in ~/.claude/settings.json are
preserved — sqz merges its entries rather than overwriting.

Plain sqz init (project scope) is useful when you want sqz active only
inside one repo.

Only using one agent? Pass --only (or --skip) to limit which
configs are written:

sqz init --only opencode              # just OpenCode, nothing else
sqz init --only opencode,codex        # OpenCode and Codex
sqz init --skip cursor,windsurf       # everything except Cursor and Windsurf

Accepted names: claude, cursor, windsurf, cline, gemini,
opencode, codex. Aliases (claude-code, gemini-cli, roo) also
work. --only and --skip can't be combined.

Manual installation (preserve comments in your config)

sqz init round-trips your config file through a JSON parser to merge
the sqz entry, which drops any comments in your opencode.jsonc (and
the analogous JSON-with-comments files other tools accept). If you've
commented your config carefully and want to keep them, install by hand
instead.

OpenCode — two steps:

  1. Drop the plugin file in place. sqz prints the generated TS to
    stdout so you don't have to hand-write the path-escaping logic:

    mkdir -p ~/.config/opencode/plugins
    sqz print-opencode-plugin > ~/.config/opencode/plugins/sqz.ts
  2. Add the MCP entry to your existing opencode.jsonc yourself.
    Append this block inside the top-level mcp object (create the
    mcp object if it doesn't exist):

    "sqz": {
      "type": "local",
      "command": ["sqz-mcp", "--transport", "stdio"],
      "enabled": true
    }

Comments in the rest of your file stay put. OpenCode auto-discovers
the plugin file; no plugin array entry needed (adding one causes
double-loading, see issue #10).

Other tools — Claude Code, Cursor, Windsurf, Cline, Gemini CLI,
and Codex use plain JSON configs without comment support, so the
automated path is non-destructive there. Use sqz init --only <tool>
for those.

That's it. Shell hooks installed, AI tool hooks configured.

How It Works

sqz installs a PreToolUse hook that intercepts bash commands before your AI tool runs them. The output gets compressed transparently — the AI tool never knows.

Claude → git status → [sqz hook rewrites] → compressed output (85% smaller)

What gets compressed:

  • Shell output — git, cargo, npm, docker, kubectl, ls, grep, etc.
  • JSON — strips nulls, compact encoding
  • Logs — collapses repeated lines
  • Test output — shows failures only

What doesn't get compressed:

  • Stack traces, error messages, secrets — routed to safe mode (0% compression)
  • Your prompts and the AI's responses — controlled by the AI tool, not sqz

Supported Tools

Tool Integration Setup
Claude Code PreToolUse hook (transparent) sqz init
Cursor PreToolUse hook (transparent) sqz init
Windsurf PreToolUse hook (transparent) sqz init
Cline PreToolUse hook (transparent) sqz init
Gemini CLI BeforeTool hook (transparent) sqz init
OpenCode TypeScript plugin (transparent) sqz init
VS Code Extension Install from Marketplace
JetBrains Plugin Install from Marketplace
Chrome Browser extension ChatGPT, Claude.ai, Gemini, Grok, Perplexity
Firefox Browser extension Same sites

CLI

sqz init --global             # Install hooks for every project on this machine
sqz init                      # Install hooks for just this project
sqz init --only opencode      # Only configure OpenCode (skip the rest)
sqz init --skip cursor        # Configure every agent except Cursor
sqz compress <text>           # Compress (or pipe from stdin)
sqz compress --no-cache       # Compress without dedup (always full output)
sqz expand <ref>              # Recover original content from a §ref:HASH§ token
sqz compact                   # Evict stale context to free tokens
sqz gain                      # Show daily token savings
sqz stats                     # Cumulative report
sqz discover                  # Find missed savings
sqz resume                    # Re-inject session context after compaction
sqz hook claude               # Process a PreToolUse hook
sqz proxy --port 8080 # API proxy (compresses full request payloads)

Dedup Escape Hatch

When sqz sees the same content twice, it returns a compact §ref:HASH§ token
instead of the full text. Most models handle this fine, but some (e.g., GLM 5.1)
can't parse the ref format and loop. Four ways to work around this:

# 1. Recover original content from a ref
sqz expand a1b2c3d4              # prefix match
sqz expand '§ref:a1b2c3d4§'     # paste the whole token

# 2. Compress without dedup (per-invocation)
echo "..." | sqz compress --no-cache

# 3. Disable dedup globally (env var)
export SQZ_NO_DEDUP=1

# 4. MCP passthrough tool (returns input byte-exact, zero transforms)
# Available via tools/list when sqz-mcp is running

Track Your Own Savings

Run sqz gain in your shell any time to see your own daily breakdown (see the
Token Savings section above for what the output looks like), and sqz stats
for the full cumulative report:

$ sqz stats
┌─────────────────────────┬──────────────────┐
│           sqz compression stats            │
├─────────────────────────┼──────────────────┤
│ Total compressions      │            3,003 │
│ Tokens saved            │          178,442 │
│ Avg reduction           │            24.7% │
│ Cache entries           │               43 │
│ Cache size              │          39.1 KB │
└─────────────────────────┴──────────────────┘

Stats are stored locally in SQLite under ~/.sqz/sessions.db — nothing leaves your machine.

How Compression Works

  1. Per-command formattersgit status → compact summary, cargo test → failures only, docker ps → name/image/status table
  2. Structural summaries — code files compressed to imports + function signatures + call graph (~70% reduction). The model sees the architecture, not implementation noise.
  3. Dedup cache — SHA-256 content hash, persistent across sessions. Second read = 13-token reference.
  4. JSON pipeline — strip nulls → project out debug fields → flatten → collapse arrays → TOON encoding (lossless compact format)
  5. Safe mode — stack traces, secrets, migrations detected by entropy analysis and routed through with 0% compression

For the full technical details, see docs/.

Configuration

# ~/.sqz/presets/default.toml
[preset]
name = "default"
version = "1.0"

[compression.condense]
enabled = true
max_repeated_lines = 3

[compression.strip_nulls]
enabled = true

[budget]
warning_threshold = 0.70
default_window_size = 200000

Privacy

  • Zero telemetry — no data transmitted, no crash reports
  • Fully offline — works in air-gapped environments
  • All processing local

Development

git clone https://github.com/ojuschugh1/sqz.git
cd sqz
cargo test --workspace
cargo build --release

License

Elastic License 2.0 (ELv2) — use, fork, modify freely. Two restrictions: no competing hosted service, no removing license notices.

Links

Star History

Star History Chart

https://github.com/ojuschugh1/sqz

@lchrennew
Copy link
Copy Markdown

https://github.com/lchrennew/dragonfly-llmwiki

Human-like reading large documents and writing notes to wiki

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment