Skip to content

Releases: ddsyasas/llm-wiki

v1.2.3 — free OpenRouter models + first-run nudge

Choose a tag to compare

@ddsyasas ddsyasas released this 26 May 22:09

Patch release. Lowers the cost-to-first-ingest from "spend a few cents per source" to "$0", with a first-run wizard step that helps new users find the option without hunting through Settings.

Install

npm install -g @syasas/llm-wiki@latest
# or pin: npm install -g @syasas/llm-wiki@1.2.3

If npm is unavailable: npm install -g https://github.com/ddsyasas/llm-wiki/releases/download/v1.2.3/syasas-llm-wiki-1.2.3.tgz.

What's new

Free OpenRouter models in the dropdown. Settings → Models now lists four curated :free routes alongside the paid options:

  • meta-llama/llama-3.3-70b-instruct:free — proven JSON, 131K ctx. Best for ingest and lint.
  • nvidia/nemotron-3-super-120b-a12b:free — 1M ctx. Best for query and chat.
  • deepseek/deepseek-v4-flash:free — fast reasoning, 1M ctx. Alternative for query/chat.
  • google/gemma-4-31b-it:free — vision-capable, 262K ctx. The only credible free vision pick.

All four are tagged with FREE in the dropdown notes. Pricing is set to $0/M tokens, so cost previews and the usage tracker show real numbers.

Settings → Models banner. When any slot uses a :free route, an amber banner surfaces the three things users need to know:

  1. Rate limits — ~20 req/min, ~50/day on a fresh account; ~1000/day after $10 of OpenRouter credit is added (deposit raises the cap even for free routes).
  2. Data retention — some free routes pass through providers that retain prompts for training. Paid Anthropic/OpenAI routes don't.
  3. JSON reliability — if you hit a "schema validation failed" error, switch the offending slot to a paid model.

Same amber palette as the existing Ollama banner since both are "you made a non-default choice with caveats".

First-run wizard nudge. Step 2 of 3 ("OpenRouter API key") gained a small block under the keychain note: "Prefer zero per-call cost? Use free OpenRouter models." One toggle button sets sensible free-tier defaults across all five operation slots. Users still enter their key (OpenRouter accounts are free; what changes is the per-call cost, not whether you need to sign up). Two-click setup for a fully working zero-cost wiki.

Why not just point at the existing Ollama path?

Ollama is the truly key-less path and works great, but it needs local compute (10–30 GB RAM for the larger models). Free OpenRouter fills a different gap: cloud-quality models with zero per-call cost for users whose laptops can't run a 70B locally. The two paths coexist — pick whichever matches your machine.

Upgrading

npm install -g @syasas/llm-wiki@latest

Existing settings (whichever paid model you chose) are preserved. To switch to free models post-upgrade: Settings → Models → pick a (free) entry per slot, Save.

Patch-fix bundled in this release: stale assertion in the vision-ingest test that was missed during the v1.2.1 PDF fix. Tests are green again on a clean checkout.

v1.2.2 — CLI update notifier

Choose a tag to compare

@ddsyasas ddsyasas released this 26 May 19:54

Patch release. Adds a small but high-leverage UX feature: the CLI now tells users when a newer version is available.

Install

npm install -g @syasas/llm-wiki@latest
# or pin: npm install -g @syasas/llm-wiki@1.2.2

If npm is unavailable: npm install -g https://github.com/ddsyasas/llm-wiki/releases/download/v1.2.2/syasas-llm-wiki-1.2.2.tgz.

What's new

Update-available banner on llm-wiki start — when a newer version is on npm, a yellow banner prints above the server logs:

╭───────────────────────────────────────────────────╮
│  Update available: 1.2.2 → 1.2.3                  │
│  Run: npm install -g @syasas/llm-wiki@latest      │
╰───────────────────────────────────────────────────╯

Solves the discovery problem that bit v1.2.0 users hit with the bugs fixed in v1.2.1 — they had no way to know there was a fix unless they checked the repo manually.

How it works:

  • Cached on disk in ~/.llm-wiki/update-check.json. No network call on the hot path, so startup isn't slowed.
  • Background-refreshes the cache when it's >24h stale (3s timeout, all errors silent — offline or slow registry = no banner, no warning).
  • First start after a release lands is silent; the banner shows on the next start. Matches the update-notifier library's behavior.
  • Silenced by NO_UPDATE_NOTIFIER=1 (the convention) or --quiet.
  • Skips prerelease tags so stable users aren't nagged about betas.

Implemented as ~100 lines inline in the CLI bin file rather than as an external dep, keeping the global-install dep graph clean.

Upgrading

If you're on v1.2.1 already: npm install -g @syasas/llm-wiki@latest, then restart llm-wiki start. You won't see anything different now — the next time a v1.2.3 (or higher) ships, you will.

If you're still on v1.2.0: please upgrade — v1.2.1 fixed the typing crash on Sources/Query and PDF ingest. See #3 for details.

v1.2.1 — fix typing crash on Sources/Query + PDF ingest

Choose a tag to compare

@ddsyasas ddsyasas released this 26 May 19:25

Patch release. Two regressions surfaced after v1.2.0 hit the wild — both triggered by the model-slot refactor that v1.2.0 introduced for Ollama support.

Install

npm install -g @syasas/llm-wiki@latest
# or pin: npm install -g @syasas/llm-wiki@1.2.1

If npm is unavailable: npm install -g https://github.com/ddsyasas/llm-wiki/releases/download/v1.2.1/syasas-llm-wiki-1.2.1.tgz.

What's fixed

Sources & Query pages crashed on type/paste — the moment the textarea became non-empty, the page died with "Application error: a client-side exception has occurred." Root cause: useWikiSettings typed defaultModels.<slot> as a plain string (the pre-1.2.0 shape), but 1.2.0 changed it to {provider, model}. TypeScript silently approved; at runtime CostPreview tried to render the object as a React child → unhandled exception. The hook's types now match reality and both callers extract .model before passing to CostPreview.

PDF ingest failed with "Cannot read properties of undefined (reading '0')" — PDFs were sent to OpenRouter as image_url data URLs. OpenRouter's actual PDF contract is type: "file" with file_data; the upstream Anthropic provider rejected the payload, OpenRouter returned 200 OK with {error} and no choices, and response.choices[0] then threw the cryptic message. PDFs now ride as file content parts (images still use image_url). As a defense in depth, the response-shape guard now surfaces the real provider error (including provider name + raw upstream message) instead of an unguarded array access.

Upgrading

If you installed v1.2.0 and hit either bug: npm install -g @syasas/llm-wiki@latest, then restart llm-wiki start. No data migration needed — both fixes are code-only.

v1.2.0 — Local models (Ollama) support

Choose a tag to compare

@ddsyasas ddsyasas released this 26 May 08:20

First minor release since the v1.x line began — adds first-class local-model support via Ollama plus the UX scaffolding that makes it self-explanatory to use.

Headline contribution by @savindugeethma — first external PR merged into the project. 4-round review process (PR #1PR #2) before landing as squash commit 35149a3. Thanks for the patient iteration.

Install

npm install -g @syasas/llm-wiki@latest
# or pin: npm install -g @syasas/llm-wiki@1.2.0

If npm is unavailable: npm install -g https://github.com/ddsyasas/llm-wiki/releases/download/v1.2.0/syasas-llm-wiki-1.2.0.tgz.

What's new

Local models (Ollama) as a first-class provider

Run any operation (ingest / query / chat / lint / vision) against a model on your own machine instead of OpenRouter. Free per query after the one-time model download. Fully private — your sources never leave your laptop.

  • Settings → Models: each slot now has a Provider dropdown — choose OpenRouter (cloud) or Ollama (Local). Mix and match per slot.
  • 10 suggested Ollama models in the dropdown (llama3, mistral, phi3, llava, etc.) with sensible vision-only filtering on the vision slot.
  • Backward compatible: existing wiki configs with the old string model shape are auto-migrated to the new { provider, model } shape on next read. No manual edits needed.
  • If you only use Ollama: no OpenRouter API key required. The first-run wizard skips the key step entirely when at least one operation is set to Ollama.

Settings banner — heads-up when Ollama is selected

Amber banner appears at the top of Settings → Models if any slot uses Ollama, listing which slots and linking to the setup guide. Removes the "I selected Ollama, why am I getting Connection error?" failure mode that bit users who selected Ollama without realizing Ollama itself has to be installed locally first.

/local-models setup guide

New in-app page with everything needed to actually use Ollama:

  • Install commands for macOS / Linux / Windows
  • How to pull a model + verify Ollama is running
  • Hardware requirements table covering 9 common models (phi3 / llama3 / mistral / mixtral / llama3:70b / gemma2 / llava / moondream / phi3:medium) with disk size, RAM minimum + recommended, tokens-per-sec on Apple Silicon vs CPU-only, and what each model is best for
  • "Quick picker" mapping 5 common hardware profiles ("old 8 GB laptop" / "modern 16 GB" / "Apple Silicon 64 GB unified" / etc.) to recommended models
  • Custom OLLAMA_BASE_URL env var for tunneled or networked Ollama
  • Troubleshooting for the 6 errors users actually hit

Cross-linked from /help (new section + TOC entry) and /developers (Swapping LLM providers section).

Other fixes

  • All v1.1.x improvements still in (cross-platform install, npm publish, case-insensitive CLI commands, welcome banner, etc.)
  • Test suite up to 195 passing (1 new test for the legacy-string-shape WikiSettings migration)

Upgrading from v1.1.x

Wiki on-disk format is unchanged within v1.x. The settings shape change is handled transparently by the parser. Just install the new version:

npm install -g @syasas/llm-wiki@latest

Then optionally open Settings → Models to try the new Provider dropdown.

Platform notes

  • macOS: verified
  • Linux (incl. WSL): verified
  • Windows: verified

Same as v1.1.0/v1.1.1 — better-sqlite3 and keytar install per-platform via npm.

Full changelog

See dev-log.md sections P through V for the full sequence from V1.x sprint through this release.

v1.1.1 — case-insensitive commands + banner alignment

Choose a tag to compare

@ddsyasas ddsyasas released this 24 May 18:50

Patch release. Two small fixes triggered by the first real-user report on Windows after v1.1.0 went live.

Install

npm install -g @syasas/llm-wiki@latest
# or if you already have an older version:
npm install -g @syasas/llm-wiki@1.1.1

If npm is unavailable: npm install -g https://github.com/ddsyasas/llm-wiki/releases/download/v1.1.1/syasas-llm-wiki-1.1.1.tgz.

What's fixed

Case-insensitive command dispatchllm-wiki Doctor (capital D) was treated as an unknown command in 1.1.0. Common typing pattern on Windows since the filesystem itself is case-insensitive. Now Doctor, DOCTOR, doctor, and dOcToR all dispatch to the same doctor command. Same for Start, Init, Help, etc.

Banner alignment — the welcome box's right edge drifted by 2 characters because padding was hand-counted vs. a target that included ANSI escape codes. Replaced with dynamic padding computed from visible text width. Now stays square at any version string length.

Upgrading

Wiki on-disk format is unchanged from 1.1.0 — your existing wiki folder, schema, pages, chats, and history all carry over intact. npm install -g @syasas/llm-wiki@latest is all that's needed.

Full changelog since 1.0.0

See dev-log.md sections P, Q, R, S, T for the full sequence (V1.x feature sprint → production build → publish pipeline → npm release → this patch).

v1.1.0 — cross-platform npm installable

Choose a tag to compare

@ddsyasas ddsyasas released this 24 May 11:44

First release with a real install path: download the tarball, run npm install -g, and you have the llm-wiki CLI on your PATH.

Verified end-to-end on macOS / Linux (incl. WSL) / Windows.

Install

# From the npm registry (once published)
npm install -g @syasas/llm-wiki

# Or directly from this release:
npm install -g https://github.com/ddsyasas/llm-wiki/releases/download/v1.1.0/syasas-llm-wiki-1.1.0.tgz

llm-wiki start

That's it — no git clone, no pnpm, no monorepo navigation. The CLI auto-initializes your wiki folder, picks a free port (3737 by default), and opens the browser. First run shows a welcome banner with the three commands you'll use most.

What's new since 1.0.0

The V1.x sprint shipped 10 features in section P + 5 in section Q + the cross-platform release in section R (see dev-log.md):

  • Wiki health dashboard at /dashboard — per-wiki page/source/chat counts + cumulative LLM spend, sortable by recency
  • Mobile sidebar — off-canvas drawer on /wiki and /chats
  • Per-page diff view/wiki/<slug>/history shows backups with line-by-line unified diffs
  • Approval gate for ingest — preview LLM changes before applying (Settings toggle)
  • Export wiki to zipSettings → Wikis → ↓ Export active wiki (now actually works, was broken in 1.0.0)
  • Wiki templates — pick a starting CLAUDE.md template when creating a new wiki
  • Cross-wiki page search⌘K searches every wiki, not just the active one
  • Setup gate on every route — direct bookmarks to /sources, /query, /lint, /schema now redirect to onboarding instead of failing loud
  • Replay welcome tour in Settings → About — now actually shows the wizard (was navigating to home instead)
  • LLM spend calculationSettings → Models and /dashboard now compute and show cost in dollars (was always $0.00 in 1.0.0)
  • Cross-platform tarball — native deps install per-platform at npm install time, no per-OS build needed
  • Friendly install + first-run UX — post-install banner + first-run welcome in the CLI

CLI commands

llm-wiki start [folder]    Start the wiki server (auto-init if needed)
llm-wiki init [folder]     Initialize a folder without starting
llm-wiki doctor            Probe install + OpenRouter connectivity
llm-wiki version
llm-wiki help

Requirements

Platform notes

  • macOS: verified
  • Linux (incl. WSL): verified — if llm-wiki: command not found after install, run echo 'export PATH="$(npm prefix -g)/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc
  • Windows: verified

Native deps (better-sqlite3, keytar) are installed at npm install time with the right prebuilt binary for your platform. No per-OS tarball needed.

Upgrading from 1.0.0

Wiki on-disk format is unchanged. Just install the new version — your existing wiki folder, schema, pages, chats, and history all carry over intact.

v1.0.0 — first stable release

Choose a tag to compare

@ddsyasas ddsyasas released this 24 May 02:35

First stable release of LLM Wiki — a from-scratch implementation of Andrej Karpathy's LLM Wiki pattern. Open source, local-first, bring-your-own-key, MIT.

What v1.0 ships

The three operations (Karpathy's pattern, wired end-to-end with cost previews and error recovery):

  • Ingest — paste / file / URL / PDF / image → LLM compiles into cross-linked pages, refreshes the index, logs the change. Each ingest is a refactor pass, not an append.
  • Query — one-shot Q&A against the wiki with cited pages. "Save as wiki page" promotes useful answers.
  • Lint — local scan (broken links / orphans) + LLM pass (contradictions / gaps / stale claims / missing pages) with one-click fixes including LLM-powered ones that write the page edit for you.

Workflow surfaces:

  • /sources — add via paste / drag-drop / URL, with source-detail pages showing the raw bytes + which wiki pages they contributed to
  • /wiki — card grid grouped by page type, search/filter sidebar, per-page view with backlinks + source lineage + inline split-pane editor
  • /graphnew in v1.0 — 3D force-directed graph of every page and every [[wikilink]]. Same engine as Obsidian's 3D Graph plugin, but colored by page type (concept / entity / comparison / overview / source) so the structure of your knowledge is visible at a glance. Click-to-focus, URL-state, bidirectional walking
  • /chats — multi-turn threads saved as .md files in folders. Per-message Save-as-wiki-page + whole-chat Ingest→wiki
  • /schema — split-pane editor for the CLAUDE.md contract the LLM reads on every operation
  • /log — chronological timeline of every ingest / edit / lint / schema-save with clickable wikilinks
  • /about /help /developers — in-app documentation reachable from the footer

Quality / safety:

  • First-run wizard collects wiki topic + OpenRouter key (no silent failures on first ingest)
  • Page-history backups on every edit
  • Cost transparency before every LLM call, cumulative tally in Settings
  • Source lineage — bidirectional traversal between wiki pages and raw inputs
  • Index auto-refreshes on page edits + manual Rebuild Index button

Settings: five model slots per-operation (ingest / query / chat / lint / vision), curated dropdowns + custom-slug field, light/dark/auto theme, OpenRouter key in OS keychain when available.

Stack

TypeScript strict · Next.js 14 (App Router) · Tailwind + shadcn-style primitives · better-sqlite3 + FTS5 · OpenRouter via openai SDK · zod for LLM contracts · gray-matter · chokidar · keytar · react-force-graph-3d + three.js for the graph · vitest · pnpm workspaces

Test suite: ~140 core + 17 llm + 11 ingestion = ~168 passing tests.

Install + run

git clone https://github.com/ddsyasas/llm-wiki.git
cd llm-wiki
pnpm install
pnpm --filter @llm-wiki/web dev

Open http://localhost:3000 → the first-run wizard walks you through the rest. Full README at https://github.com/ddsyasas/llm-wiki.

Deferred to V1.x / V2

Honest about what's not in this release (tracked in docs/dev-log.md open questions):

  • Per-page diff view when LLM updates a page
  • Approval gate for ingest (preview changes before applying)
  • Export wiki to zip
  • Per-source re-ingest / delete + extracted-markdown view for binary formats
  • Production build (next build) — v1.0 currently ships via pnpm dev
  • CLI npm publish — pnpm pack workspace:* deps blocker
  • Tauri desktop installer (V2)
  • MCP server mode (V3)
  • 2D toggle / search overlay / persistent camera state for the graph

Credits

Built by @ddsyasas. Pattern by Andrej Karpathy. MIT.