mohammadmaso56 downloadsCompile raw notes and voice transcripts into a structured, interlinked wiki using a local LLM agent.
Local-first LLM knowledge compiler for Obsidian. Drop notes or record voice into raw/; the wiki compiler turns them into a structured, interlinked wiki under wiki/.
Repository: github.com/mohammadmaso/echowiki
Once published, install EchoWiki from any vault:
EchoWiki creates raw/ and wiki/ folders in your vault automatically. You do not need to clone this repo unless you are developing EchoWiki itself.
version in root manifest.json and obsidian-plugin/manifest.json (keep them identical).main.0.1.0). GitHub Actions builds main.js, manifest.json, and styles.css.https://github.com/mohammadmaso/echowiki.EchoWiki is designed so the repo root is your Obsidian vault. Your personal notes (raw/, wiki/) stay local and are not committed to git.
git clone https://github.com/mohammadmaso/echowiki.git
cd echowiki
nvm use # Node.js >= 22.13 (see .nvmrc)
npm install
npm run build:plugin
This builds the Obsidian plugin (obsidian-plugin/main.js), bundling the compiler and Vercel AI SDK in-process — no separate server process.
echowiki folder (the repo root)..obsidian/ locally (gitignored — your settings stay private).On first plugin load, EchoWiki creates empty raw/ and wiki/ folders with the expected subfolders.
Optional: copy the starter compiler instructions into your wiki:
cp templates/wiki/AGENTS.md wiki/AGENTS.md
Symlink or copy the built plugin into Obsidian’s plugin directory:
mkdir -p .obsidian/plugins/echowiki
cp obsidian-plugin/manifest.json obsidian-plugin/styles.css obsidian-plugin/main.js .obsidian/plugins/echowiki/
Then in Obsidian:
The status bar should show EchoWiki: ready.
Settings → EchoWiki:
| Setting | Purpose |
|---|---|
| LLM API key / model / base URL | Text compilation (any OpenAI-compatible endpoint) |
| STT base URL / API key / model | Voice transcription (/audio/transcriptions) |
| Language | Compilation output language (e.g. en, fa) |
| Watch mode | Auto-compile when files change under raw/ |
| Require approval | Queue new raw files until you approve them |
API keys are stored only in .obsidian/plugins/echowiki/data.json on your machine (never committed).
| Action | How |
|---|---|
| Drop a note for compilation | Save a .md or .txt file in raw/, or use EchoWiki: Send active note to raw/ |
| Record a voice note | Ribbon mic icon, or EchoWiki: Record voice note |
| Compile one file | Open a file under raw/, run EchoWiki: Compile active raw file |
| Approve queued files | EchoWiki: Review pending compilations (when require approval is on) |
| Browse results | Open wiki/index.md, graph view on wiki/, follow [[wikilinks]] |
Compilation writes to wiki/summaries/, updates wiki/concepts/ and wiki/entities/, and refreshes wiki/index.md and wiki/log.md.
Open the project root as your Obsidian vault. It must contain sibling folders:
<vault>/
├── raw/ # incoming notes and voice transcripts
└── wiki/ # compiled summaries, concepts, entities, index, log
The plugin runs compilation in-process via the Vercel AI SDK — you do not need Node.js on your PATH or a separate server. It works on Obsidian desktop and mobile (iOS/Android).
From the repo root:
npm install
cd obsidian-plugin
npm install
npm run build
Copy or symlink the plugin folder into your vault:
<vault>/.obsidian/plugins/echowiki/
├── main.js
├── manifest.json
└── styles.css
Enable EchoWiki in Obsidian → Settings → Community plugins.
Configure in Obsidian → Settings → EchoWiki:
| Setting | Purpose |
|---|---|
| LLM API key / model / base URL | OpenAI-compatible chat endpoint for compilation |
| STT base URL / API key / model | Voice transcription (/audio/transcriptions) |
| Watch mode | Auto-detect new/changed files in raw/ |
| Require approval | Hold raw files in a pending queue until approved |
Status appears in the status bar on desktop (EchoWiki: ready or EchoWiki: compiling...). On mobile, use command palette notices during compilation.
raw/<timestamp>.transcript.mdraw/Ribbon: microphone icon opens the voice recorder.
For headless compilation from the terminal (Node.js ≥ 22.13):
export OPENAI_API_KEY=sk-...
npm run compile -- raw/my-note.md
Optional flags: --kb-dir <vault-root> (defaults to current directory).
raw/ → Compile active raw file → wiki/summaries/<name>.md is created..md appears in raw/ with the same pipeline as manual notes.raw/ → compilation triggers (or approval prompt if enabled).wiki/ and confirm new pages link via [[wikilinks]].| Variable | Purpose |
|---|---|
OPENAI_API_KEY |
LLM provider key |
LLM_MODEL |
Model id (default openai/gpt-5-mini; provider prefix is stripped) |
OPENAI_BASE_URL |
Optional OpenAI-compatible base URL |
See .env.example for a minimal CLI setup.
src/
├── llm/ # Vercel AI SDK client
├── wiki/ # Compilation pipeline (summaries, concepts, entities)
└── compiler-api.ts # Public compile entry point
obsidian-plugin/ # Obsidian plugin (desktop + mobile; bundles compiler in-process)
raw/ # Universal ingestion folder
wiki/ # Compiled Obsidian-compatible wiki output
.ai/01-PRD.md, .ai/02-TECH-SPEC.md.ai/03-TASKS.md