Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

Ghostwriter

Amulya JainAmulya Jain44 downloads

Local Inline Completion

Add to Obsidian
  • Overview
  • Scorecard
  • Updates4

Inline completion and AI edits for Obsidian, backed by any LLM server you choose.

- A page fault occurs when▏a process accesses memory not in physical RAM
                          └─ Tab accepts · Ctrl+→ one word · Esc dismisses

It also does inline edits: put the cursor somewhere or select text, run Inline edit at cursor, and type an instruction like "turn this into inline latex".

Setup

Needs a server exposing an OpenAI-compatible /v1/completions, plus /v1/chat/completions for inline edit. With llama.cpp:

llama-server -m model.gguf --host 127.0.0.1 --port 8080 --cache-reuse 256 -ngl 99

--cache-reuse is worth setting. Consecutive keystrokes share a prompt prefix, so llama.cpp can skip reprocessing the note — measured 700 ms → 180 ms to first token on a 27B model.

Then copy main.js, manifest.json, and styles.css from a release into <vault>/.obsidian/plugins/ghostwriter/, enable it under Community plugins, and set Server URL.

Point it at an IP, not localhost — on Windows that resolves to IPv6 first and burns a failed connection on every request. The server can live on another machine; a Tailscale IP works fine.

Keybindings

Action Default
Accept whole line Tab
Accept next word Ctrl+→
Dismiss suggestion Esc
Inline edit at cursor unassigned
Toggle inline completion unassigned

Tab and Ctrl+→ only bind while a suggestion is on screen; otherwise they indent and jump by word as usual. Rebind anything in Settings → Hotkeys.

Ctrl+I is left to Obsidian's italics. Enable Override Ctrl+I in editor to claim it inside the editor instead — note the Hotkeys tab will still show italics as bound.

Settings

Setting Default
Server URL http://127.0.0.1:8080
Model local-model — ignored by llama.cpp, used by backends that route on it
Subject empty — one line on what you take notes about, sent with every completion. The note title goes too, so a new note is not completed blind
API key empty — sent as Authorization: Bearer only when set
Trigger delay 300 ms
Max tokens 48
Context characters 2000

Troubleshooting

  • Steady lag before every suggestion — Server URL is probably localhost.
  • First suggestion in a note is slow, then fast — expected; the cache warms after one request.
  • Nothing appears — check the server is reachable, then the console (Ctrl+Shift+I). Failures are silent by design so a dead server never interrupts typing.

Development

npm install
npm run dev      # watch build
npm run deploy   # build + copy into test-vault/

To release: npm version patch, push, then tag with the same number and push tags. CI builds, attests, and publishes.

License

MIT

HealthExcellent
ReviewSatisfactory
About
Inline completion and AI edits for Obsidian, backed by any LLM server you choose
AIAutocompleteEditing
Details
Current version
1.0.3
Last updated
2 weeks ago
Created
3 weeks ago
Updates
4 releases
Downloads
44
Compatible with
Obsidian 1.13.0+
Platforms
Desktop, Mobile
License
MIT
Report bugRequest featureReport plugin
Author
Amulya JainAmulya Jainamuhak
GitHubamuhak
  1. Community
  2. Plugins
  3. AI
  4. Ghostwriter

Related plugins

Various Complements

Complete words similar to auto-completion in an IDE.

Gemini Scribe

Allows you to interact with Gemini and use your notes as context.

AI Agent

Lend your vault to an AI agent. It can read, write, and search your notes.

LanguageTool Integration

Advanced grammar and spell checking, powered by LanguageTool.

Claudian

Embeds Claude Code/Codex and other local Agents as AI collaborators in your vault.

Smart Connections

Find related notes and excerpts while writing. Your AI link building copilot displays relevant content in graph + list view. A local embedding model powers semantic search. Zero setup. No API key.

Meta Bind

Make your notes interactive with inline input fields, metadata displays, and buttons.

Fast Note Sync

Real-time sync of your vaults across server, mobile, and web; shareable with anyone; supports REST and MCP integrations to build your personal AI knowledge base.

Advanced Tables

Improved table navigation, formatting, and manipulation.

Thino

Quickly capture memos and display them in the sidebar with a heatmap. (Closed source)