

Ignis for Obsidian
Ignis is a compatibility shim that provides browser-compatible implementations of the Electron APIs used by Obsidian, allowing Obsidian to run in a standard browser while keeping your vault on the server. Obsidian is not included in or distributed with this project.
Cost / License
- Free
- Open Source (AGPL-3.0)
Platforms
- Self-Hosted
- Docker
Features
- Dark Mode
Obsidian Integration
- Browser-based
- Web-Based
Tags
Ignis for Obsidian News & Activities
Recent activities
- POX added Ignis for Obsidian as alternative to Obsidian
- POX added Ignis for Obsidian
Ignis for Obsidian information
What is Ignis for Obsidian?
Ignis is a compatibility shim that provides browser-compatible implementations of the Electron APIs used by Obsidian, allowing Obsidian to run in a standard browser while keeping your vault on the server. Obsidian is not included in or distributed with this project. The Docker container downloads Obsidian directly from its official source on first run.
Why?
While Obsidian's local-first approach works well for most users, options for accessing your own Obsidian installation remotely have been limited to VNC-based solutions with poor user experience. Ignis provides an alternative for users who want to access their own copy of Obsidian from a browser, in a close-to-native format.
What works:
- All core editor features: markdown, canvas, bases, and the command palette.
- Context menus throughout the UI.
- Image rendering, inline image URLs, and image paste from the clipboard.
- Print to PDF, via a hidden popup iframe.
- Mobile UI auto-activates when the window is under 600 px wide.
- Themes and CSS snippets.
- Most community plugins built on Obsidian's plugin API.
- Cross-origin plugin requests via requestUrl and fetch, proxied through the server.
- Obsidian Sync, in self-hosted deployments with a logged-in browser tab open.
What doesn't work:
- Plugins that depend on Node native modules or child_process won't load.
- Streaming zlib classes (createGzip, createDeflate, etc.) aren't implemented. The synchronous and callback variants work via pako.
- The synchronous file picker (dialog.showOpenDialogSync), used by plugins like Importer, has a staged-files workaround: the shim asks you to pick once and serves the result on retry. Usable but rough.
- safeStorage is passthrough by design: isEncryptionAvailable() returns false and encrypt/decrypt are no-ops. Anything plugins store via safeStorage ends up as plaintext on disk. A server-side encrypted option is planned but not yet implemented; until then, treat anything safeStorage produces the same as anything else in the vault.

