KOS2 is a Knowledge Operating System for Obsidian. Open, local-first, built for excellence in boring work.
It helps you move from note entropy to useful work:
- organise messy intake into stabilised draft artifacts with traceability
- extract real next steps from projects and areas
- draft decisions from evidence
- review outcomes and close loops
If you want the mental model behind the product, read KOS Philosophy.
Most AI note tools are good at answering questions and bad at helping you run an operating system for your own work.
KOS2 keeps the loop simple:
Ollama-firstfor local chat and local embeddingsfully localif you want your note work, embeddings, and decisions to stay on your machinePrivacy (local) Modewhen you want the valuable parts to stay on the local path by default- workflow paths for
Organise,Next steps,Decision, andReview - semantic search for your vault when you choose to enable it
- optional
Ollama Cloudonly for web search and web fetch flows
- Install KOS2 from source and enable it in Obsidian.
- Start local Ollama.
- Pull one chat model and one embedding model.
- Open
Settings -> KOS2 -> Setup. - Turn on
Privacy (local) Modeif you want the default path to stay local. - Open
Knowledge, sync models, and choose a local embedding model. - Use the
KOS starterpaths:Organise,Next steps,Decision,Review.
- local Ollama model discovery and sync
- local chat with verified Ollama models
- local embedding path for vault search
- KOS starter surface in the chat UI
- first-pass workflow commands for
organise,next-steps,decision, andreview - stronger intake:
organiseextracts intake signals, ranks stable routes, and previews a stabilised draft artifact before any write - optional cloud web tooling through
Ollama Cloud - transcript setup guidance for Supadata and local tooling preparation
Right now the supported install path is from source.
git clone https://github.com/pdurlej/KOS2.git
cd KOS2npm install
npm run buildReplace /path/to/YourVault with your vault path:
mkdir -p "/path/to/YourVault/.obsidian/plugins/kos2"
cp main.js manifest.json styles.css "/path/to/YourVault/.obsidian/plugins/kos2/"- Open
Settings -> Community plugins - Turn off
Restricted modeif needed - Reload plugins or restart Obsidian
- Enable
KOS2
KOS2 is best when you start with local Ollama.
See ollama.com for the official installer.
If you use Homebrew on macOS:
brew install --cask ollama
open -a OllamaPick one to start:
ollama pull qwen3:8bor:
ollama pull gemma3:12bollama pull bge-m3- Open
Settings -> KOS2 -> Setup - Confirm local Ollama is reachable
- Turn on
Privacy (local) Modeif you want KOS2 to stay on the local path by default - Use
KOS2 Local Agentor pick a specific local chat model - Open
Knowledgeand sync models - Choose a local embedding model if you want semantic search
These are practical starting points, not hard requirements:
Fast: smaller Qwen or Gemma modelsBalanced:qwen3:8bBest local quality: larger Gemma or Qwen models if your machine can handle themEmbeddings:bge-m3
KOS2 also surfaces recommendations inside the plugin based on what is actually installed locally and what your machine looks capable of running.
KOS2 separates two paths clearly:
Ollama Local: chat, embeddings, and vault work that can stay on your machineOllama Cloud: optional helper path for web search and web fetch
If you care about keeping your most valuable context local, use:
Privacy (local) ModeKOS2 Local Agent- local embeddings in
Knowledge
If you want, KOS2 can run fully local:
- local Ollama for chat
- local Ollama for embeddings
- no Ollama Cloud key configured
- no transcript API configured
KOS2 is most useful when you use it as an operator for a note workflow instead of a generic chat box.
Current paths:
Organise: inspect intake, rank stable routes, and preview a cleaner artifact draftNext steps: extract pending work from a project, area, or noteDecision: draft a decision from evidence and analysisReview: capture what happened, what changed, and what should happen next
KOS2 now does more than safe routing.
Today Organise can:
- inspect tasks, bullets, and selected excerpts from the current note
- recognize inbox, project, area, resource, analysis, decision, review, and outcome material
- rank candidate routes for raw intake
- preview a stabilised draft artifact with traceability
- avoid silent writes while still giving you something concrete to promote
What it does not claim yet is full parity with the stronger intake contract from the separate kos repo, where the north star is:
drop material -> organise -> stable work artifact
KOS2 is moving in that direction, but the current plugin is still intentionally more conservative.
KOS2 can use Ollama Cloud for web search and web fetch. This is optional.
For YouTube transcripts, the current setup path is:
Supadatafor transcript API access- or local preparation with
yt-dlpandwhisper
Transcript UX is present in the plugin, but this is still an evolving capability rather than a fully finished media pipeline.
npm run smoke:ollamaThis checks:
- local Ollama model discovery
- local chat inference
- local embeddings
- Ollama Cloud web search
The cloud key is read in this order:
- plugin setting
OLLAMA_API_KEY- macOS Keychain item
cos2-ollama-cloud
- PRD
- Architecture
- Epics and stories
- Test strategy
- Workflow contracts
- Release QA checklist
- BMAD archive
KOS2 remains licensed under AGPL-3.0.
This project starts from logancyang/obsidian-copilot and keeps its AGPL obligations. KOS2 is a soft fork with a different product direction, not a claim that the upstream project authored this roadmap.
