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.
- 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
Clone and launch:
git clone https://github.com/Ansub/wiki-os.git wiki-os && cd wiki-os && npm run first-runWikiOS will open in your browser and guide you through choosing a vault. You can also use the bundled demo vault on first run.
- 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
You can run WikiOS with Docker if you want a simple container setup.
This starts WikiOS with the bundled demo vault:
docker compose up --buildThe 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:
- Open
docker-compose.yml - Find this line:
- ./sample-vault:/vault:ro- Replace
./sample-vaultwith the path to your own vault
Example:
- /Users/your-name/Documents/MyVault:/vault:roLeave 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-osFor normal users, use:
npm startFor contributors working on WikiOS itself, use:
npm run devdev runs a split frontend/backend setup for faster iteration.
src/client/contains the React app, routes, and UI componentssrc/server/contains the Fastify server, setup flow, runtime config, and platform helperssrc/lib/contains the wiki coresample-vault/contains the bundled demo contentscripts/contains launch, deploy, and smoke-test helpers
npm run first-runinstalls dependencies and starts the guided first-run flownpm startstarts the app in user modenpm run devstarts the contributor split client/server setupnpm run buildbuilds the client and servernpm run serveruns the already-built servernpm run deployruns the deployment helpernpm run smoke-testruns the smoke test helperdocker compose up --buildruns the app in Docker with the bundled demo vault
WIKI_ROOTbootstraps the app with a vault pathWIKIOS_FORCE_WIKI_ROOTforces a temporary per-process vault overridePORTsets the server portWIKIOS_INDEX_DBoverrides the SQLite index pathWIKIOS_ADMIN_TOKENprotects the manual reindex endpointWIKIOS_DISABLE_WATCH=1disables filesystem watching
By default, WikiOS saves the selected vault in ~/.wiki-os/config.json and stores hashed SQLite indexes under ~/.wiki-os/indexes/.
WikiOS treats People as an explicit, user-controlled concept first. By default it recognizes people from:
- frontmatter keys like
person,people,type,kind, andentity - tags like
person,people,biography, andbiographies - folders like
people/,person/,biographies/, andbiography/
You can customize this in wiki-os.config.ts with people.mode:
explicitis the safest defaulthybridallows broader inference after explicit metadataoffhides People entirely
Local person overrides are saved in ~/.wiki-os/config.json and do not rewrite your notes.
MIT