MCPcopy Index your code
hub / github.com/Ansub/wiki-os

github.com/Ansub/wiki-os @v0.1.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.1.0 ↗ · + Follow
417 symbols 941 edges 57 files 0 documented · 0% updated 2mo agov0.1.0 · 2026-04-17★ 247
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

WikiOS

WikiOS turns an Obsidian vault into a local web app. It lets you browse notes through a homepage, search, article pages, a graph view, and stats.

Built by Ansub, co-founder of Supafast - we build websites for B2B SaaS & AI companies.

CleanShot 2026-04-12 at 21 10 31@2x

What it does

  • Connects to an Obsidian-compatible markdown folder
  • Builds a local searchable index
  • Gives you a clean web interface for exploring your notes
  • Watches the vault for changes and updates the index automatically

How to get started

Clone and launch:

git clone https://github.com/Ansub/wiki-os.git wiki-os && cd wiki-os && npm run first-run

WikiOS will open in your browser and guide you through choosing a vault. You can also use the bundled demo vault on first run.

Features

  • Homepage with featured notes, recent notes, and people highlights
  • Fast local search
  • Clean article pages
  • Graph view
  • Stats view
  • Manual reindex support
  • Automatic file watching
  • Local-first setup with no cloud requirement

Docker

You can run WikiOS with Docker if you want a simple container setup.

This starts WikiOS with the bundled demo vault:

docker compose up --build

The docker-compose.yml file is in the main project folder.

By default, Docker uses the demo notes in sample-vault/.

If you want to use your own Obsidian vault instead:

  1. Open docker-compose.yml
  2. Find this line:
- ./sample-vault:/vault:ro
  1. Replace ./sample-vault with the path to your own vault

Example:

- /Users/your-name/Documents/MyVault:/vault:ro

Leave WIKI_ROOT: /vault as it is.

For a direct build and run:

docker build -t wiki-os .
docker run --rm -p 5211:5211 -e WIKI_ROOT=/vault -v /path/to/your/vault:/vault:ro -v wiki-os-data:/data wiki-os

Contributor mode

For normal users, use:

npm start

For contributors working on WikiOS itself, use:

npm run dev

dev runs a split frontend/backend setup for faster iteration.

Folder structure

  • src/client/ contains the React app, routes, and UI components
  • src/server/ contains the Fastify server, setup flow, runtime config, and platform helpers
  • src/lib/ contains the wiki core
  • sample-vault/ contains the bundled demo content
  • scripts/ contains launch, deploy, and smoke-test helpers

Advanced

Useful commands

  • npm run first-run installs dependencies and starts the guided first-run flow
  • npm start starts the app in user mode
  • npm run dev starts the contributor split client/server setup
  • npm run build builds the client and server
  • npm run serve runs the already-built server
  • npm run deploy runs the deployment helper
  • npm run smoke-test runs the smoke test helper
  • docker compose up --build runs the app in Docker with the bundled demo vault

Environment variables

  • WIKI_ROOT bootstraps the app with a vault path
  • WIKIOS_FORCE_WIKI_ROOT forces a temporary per-process vault override
  • PORT sets the server port
  • WIKIOS_INDEX_DB overrides the SQLite index path
  • WIKIOS_ADMIN_TOKEN protects the manual reindex endpoint
  • WIKIOS_DISABLE_WATCH=1 disables filesystem watching

By default, WikiOS saves the selected vault in ~/.wiki-os/config.json and stores hashed SQLite indexes under ~/.wiki-os/indexes/.

People model

WikiOS treats People as an explicit, user-controlled concept first. By default it recognizes people from:

  • frontmatter keys like person, people, type, kind, and entity
  • tags like person, people, biography, and biographies
  • folders like people/, person/, biographies/, and biography/

You can customize this in wiki-os.config.ts with people.mode:

  • explicit is the safest default
  • hybrid allows broader inference after explicit metadata
  • off hides People entirely

Local person overrides are saved in ~/.wiki-os/config.json and do not rewrite your notes.

License

MIT

Extension points exported contracts — how you extend this code

ParsedLink (Interface)
(no doc)
src/client/routes/wiki-route.tsx
HighlightQuery (Interface)
(no doc)
src/components/highlighted-text.tsx
BacklinkReferenceRecord (Interface)
(no doc)
src/lib/wiki-db.ts
WikiRuntimeConfigError (Interface)
(no doc)
src/server/wiki-runtime.ts
MiniNode (Interface)
(no doc)
src/client/routes/wiki-route.tsx
TopicBrowseState (Interface)
(no doc)
src/components/search-box.tsx
IndexedWikiPageRecord (Interface)
(no doc)
src/lib/wiki-db.ts
StoredWikiRuntimeConfig (Interface)
(no doc)
src/server/wiki-runtime.ts

Core symbols most depended-on inside this repo

log
called by 26
scripts/deploy.mjs
normalizeTopicKey
called by 13
src/lib/wiki-config.ts
getWikiPage
called by 13
src/lib/wiki-queries.ts
getWatcherController
called by 9
src/lib/wiki.ts
getHomepageData
called by 9
src/lib/wiki-queries.ts
run
called by 8
scripts/deploy.mjs
noteFailure
called by 8
scripts/smoke-test.mjs
useWikiConfig
called by 7
src/client/wiki-config.tsx

Shape

Function 299
Interface 78
Method 34
Class 6

Languages

TypeScript100%

Modules by API surface

src/lib/wiki-queries.ts45 symbols
src/lib/wiki-watcher.ts37 symbols
src/lib/wiki.ts30 symbols
src/lib/wiki-state.ts27 symbols
src/lib/wiki-classification.ts25 symbols
src/lib/wiki-indexer.ts23 symbols
src/server/wiki-runtime.ts22 symbols
src/lib/wiki-db.ts18 symbols
src/client/routes/wiki-route.tsx18 symbols
src/lib/wiki-shared.ts17 symbols
src/lib/wiki-config.ts15 symbols
src/client/routes/graph-route.tsx12 symbols

For agents

$ claude mcp add wiki-os \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact