The Headless PKM Server

Your notes folder,
now a powerful API.

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.

One universal API. Any format.

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.

File on Disk
---
tags: [pkm, api]
aliases: [moon]
---
# Welcome
Check [[Setup Guide]] or #help.
GET /api/page/Welcome
Moonstone API Output
{
  "title": "Welcome",
  "tags": ["pkm", "api", "help"],
  "links": ["Setup Guide"],
  "content": "Check [[Setup Guide]] or #help."
}

Make it yours. Instantly.

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.

The simplest way to build tools

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.

  • 📁 Just a folder
  • 🚫 No Node.js / NPM
  • 🌐 Pure HTML/JS/CSS
📁 my-app/
📄 manifest.json
📄 index.html
localhost:8090/apps/my-app

Automate your notes
while you sleep.

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.

  • 🤖 Fully isolated venvs
  • 🔄 Auto-restart on crash
  • 📦 Built-in Moonstone SDK
moonstone service logs github-sync
[2026-03-10 05:01:10] INFO Daemon started. Venv active.
[2026-03-10 05:01:12] SUCCESS Connected to Moonstone API (ws://localhost:8090/events)
[2026-03-10 05:05:00] INFO Cron triggered: Fetching GitHub PRs...
UPDATE Modifying page "Dashboard/Work"...
→ Inserted 3 new pull requests via PATCH API.

Bundled out of the box

Moonstone comes with powerful, pre-written tools that are ready to use the moment you start the server.

Applet

Web Editor PWA

Access and edit your notes from your phone. Full file tree, markdown editor, live collaborative cursors via WebSocket, and tag search. No subscription required.

Send this photo to Inbox
✅ Saved to Inbox as attachment.
Service

Telegram Bridge

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.

Your brain, tiled.

Load multiple Applets side-by-side. The workspace uses a tiling window manager for the web. Save layouts, drag splitters, and build dashboards.

[ Layout: Project Dashboard ]
⊞ Split | ✕ Close
🕸️ Graph Applet
📋 Tasks Applet
  • Review code
  • Write docs
✏️ Editor Applet

Describe the app. AI builds it.

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."

📎 dev-bundle.txt attached
✅ AI Todo Manager index.html
Dashboard.md
Inbox.md

Same notes. Unfair advantage.

Notion
Obsidian
Logseq
Zim Wiki
Moonstone
Open source
✓ GPL v3
100% local data
Vault-agnostic
N/A
.md only
.md only
.txt only
all 3 formats
REST API
limited
D-Bus
60+
Real-time (WS+SSE)
Headless mode
Custom web apps
Electron
ClojureS
Python
HTML + JS
Background services
managed
Vendor lock-in
high
medium
medium
low
zero
Price
$10/mo
$0–16/mo
$0
$0
$0 forever

Secure by default.

Your knowledge is your most private asset. Moonstone gives you full control over where it goes.

100% Localhost

No telemetry. No clouds. Data never leaves your machine unless you choose to expose it.

Applet Environment

Applets are pure HTML/JS running in the browser. You control what services run on your server.

You're thinking it. Let's answer it.

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) →

Install. Browse. Extend.

1

Install

pipx install git+https://github.com/moonstone-app/moonstone

2

Launch

moonstone ~/my-notes

3

Extend

Open localhost:8090