The Headless PKM Server
Supercharge Obsidian, Logseq, Zim or even just a folder with .md notes. Build zero-build web applets, run background automations, and sync anything to your notes — instantly and locally.
1. Core API Backend
Obsidian, Logseq, and Zim have different syntaxes. Moonstone detects the vault format and normalizes them on the fly. The same API request works for all of them.
---
tags: [pkm, api]
aliases: [moon]
---
# Welcome
Check [[Setup Guide]] or #help.
{
"title": "Welcome",
"tags": ["pkm", "api", "help"],
"links": ["Setup Guide"],
"content": "Check [[Setup Guide]] or #help."
}
2. Zero-Build Applets
Forget about Electron, TypeScript, and complex build pipelines. A Moonstone Applet is just a folder with an HTML file. Drop it in, and it's instantly available in your workspace.
Want a custom Pomodoro timer? A Kanban board? A Flashcard app? Just write standard HTML and JavaScript. Use the built-in fetch('/api/pages') to read and write notes directly. Moonstone handles the routing, security, and live SSE updates.
3. Background Services
Applets run in the browser, but Services run as Python daemons on your server. They monitor your vault 24/7, pulling data from APIs, syncing tasks, and generating summaries.
Moonstone comes with powerful, pre-written tools that are ready to use the moment you start the server.
Access and edit your notes from your phone. Full file tree, markdown editor, live collaborative cursors via WebSocket, and tag search. No subscription required.
Forward text, voice messages, and photos to your Telegram bot. The daemon automatically parses them, downloads media, and creates perfectly formatted entries in your vault.
The Workspace
Load multiple Applets side-by-side. The workspace uses a tiling window manager for the web. Save layouts, drag splitters, and build dashboards.
Vibe Coding
Moonstone ships with a dev-bundle containing a full OpenAPI spec. Paste it into ChatGPT or Claude, and let AI write the Applet for you in seconds.
"Read the Moonstone OpenAPI spec. I need a Todo Manager applet. Fetch all pages containing checkboxes. Group them by page title. When I click a checkbox in the UI, use the PATCH endpoint to update the original markdown file."
Honest comparison
Trust & Safety
Your knowledge is your most private asset. Moonstone gives you full control over where it goes.
No telemetry. No clouds. Data never leaves your machine unless you choose to expose it.
Applets are pure HTML/JS running in the browser. You control what services run on your server.
Questions
Yes. Moonstone uses dynamic Profiles to auto-detect the vault format. It normalizes tags, double-bracket links, and metadata on the fly. You can switch from Logseq to Obsidian, and your API scripts will keep working without any changes.
While we support third-party formats, Moonstone also has its own native Plain Text format. It's designed to be the cleanest, most Git-friendly markdown implementation, with explicit frontmatter and strict hierarchical linking. Perfect for purists.
Absolutely. The /api/attachment endpoint serves media files directly. Applets and Services can upload images, voice memos, and PDFs via standard POST requests, and Moonstone places them in the correct asset folder based on your vault profile.
Moonstone binds to your OS's native file watcher (inotify on Linux, FSEvents on macOS, ReadDirectoryChanges on Windows) via Python's watchdog. When a file is saved, it pushes a Server-Sent Event (SSE) to connected clients in milliseconds. Zero polling. Zero CPU overhead.
Yes. Point Moonstone at your existing vault folder. Keep using Obsidian for local editing. Use Moonstone for the API, Applets, Web Editor, and background automations simultaneously. They sync perfectly.
Just one indie hacker building products in public. No corporation, no VC funding. I share the entire development process, architectural decisions, further ideas, and growth metrics in the Maker Log.
Follow the Maker Journey on Telegram (RU) →
Quick Start
pipx install git+https://github.com/moonstone-app/moonstone
moonstone ~/my-notes
Open localhost:8090