Summary
Moldavite does not operate a service that receives your data. There is no sign-up, no hosted sync operated by the developer, no analytics, and no telemetry. The developer has no access to your notes, your calendar, or any credential you give the app. Everything below is detail on that one fact.
Because your notes and connected-account data never reach a server operated by Moldavite, the developer never becomes a processor or controller of that content. Google, WordPress.com, and hosts you connect handle data under their own policies.
What Moldavite collects
Moldavite does not send the following to the developer or to an analytics or advertising service:
- the contents, titles, tags, or file names of your notes
- usage analytics, event tracking, crash reports, or feature telemetry
- your IP address, device identifiers, or an advertising profile
- your calendar events, or the account they came from
- any password, token, or application password you enter
Moldavite has no account system, so there is nothing to sign up for and no profile to delete.
Your notes and where they live
Notes are plain Markdown files with optional YAML frontmatter, written inside a Forge
directory you choose. On desktop, the default root is ~/Documents/Moldavite/. You can open,
move, back up, or delete them with any other tool, with or without Moldavite installed.
- Note locking encrypts individual notes on disk with AES-256-GCM and Argon2 key derivation. The passphrase is never stored and never leaves your machine; if you lose it, the note cannot be recovered by anyone, including the developer.
-
Local semantic search is opt-in and runs on Apple Silicon Macs, Windows
and Linux (Intel Macs and the iPhone and iPad app do not ship the runtime). After a
one-time model download it runs entirely offline: note text is embedded on your own
machine and the index stays inside the Forge, at
.index/embeddings.v1.bin. The downloaded model files are cached outside the Forge, in~/Library/Application Support/Moldavite/models/on macOS,%APPDATA%\Moldavite\models\on Windows and~/.local/share/Moldavite/models/on Linux. The download happens once, when you turn the feature on. If that cache is later deleted while the feature is still on, the next launch fetches the model again without asking a second time; turning semantic search off stops that. -
Keyword search keeps an SQLite index of your note text in Moldavite's own
application-data folder on your computer, outside the Forge so a synced folder never
carries it:
Moldavite/index/<forge>/search.sqliteunder the same application-data directory as the models. Locked notes are never in it, it never leaves your machine, and it is deleted with its Forge. -
Agent write markers are left in
Moldavite/agent-writes/in the configuration folder whenever an MCP client writes a note, so the app can tell an agent's write from your own and name the agent when it asks you which version to keep. A marker holds the Forge path, the note's path, a hash of the content and the client name the MCP client reported. It never holds note text. -
Settings live in
config.jsonin Moldavite's configuration folder (~/Library/Application Support/Moldavite/on macOS,%APPDATA%\Moldavite\on Windows,~/.config/Moldavite/on Linux). It holds preferences and the paths of your Forges, never note text and never a credential. - Trash retains deleted notes locally for 7 days before permanent removal.
- Exports and backups are written where you point them. Encrypted exports use a passphrase only you hold.
If you place a Forge inside a folder synchronised by iCloud Drive, Dropbox, or a similar service, that service receives your files under its own privacy policy. That is your choice to make; the developer does not receive a copy.
On a Mac, Settings → General → Synced Forge offers the same thing without moving anything: turning it on opens a Forge inside Moldavite's own iCloud Drive container, which Apple then syncs to your other Apple devices under Apple's privacy policy. It is off by default, your local Forges stay where they are, and neither the search index nor the semantic model cache is stored there.
iPhone and iPad
A local Forge is stored inside Moldavite's application container. If you choose an iCloud Forge, the app uses Apple's iCloud Drive service to store and synchronize its files. Apple handles that storage under Apple's privacy policy. The developer does not operate the sync service or have access to your iCloud account.
Files and images you select are used in your notes or exports. When you save an export through the system Files picker, your chosen storage provider handles the exported file under its own policy. When you share a note through the system share sheet, the note's Markdown file goes only to the app or person you pick, which handles it under its own policy. Images are stored in the Forge; the app's content security policy does not allow the editor to load an image from a remote host, so a note never quietly contacts one. Links you open in Safari are handled by the destination website under its own policy.
The iPhone and iPad app does not run desktop executable plugins, download semantic search models, connect to desktop calendar integrations, or check GitHub for app updates. App updates are distributed through Apple's App Store. The home-screen widget opens today's note and does not send note content to the developer.
Every network connection
The table lists desktop integrations. On iPhone and iPad, the storage and external-content connections are described above. Each desktop connection is either triggered by an action you take or, in the case of update checks, disclosed here and limited to version information.
| Connection | When | What is sent |
|---|---|---|
Update check (github.com) |
15 seconds after launch and every 24 hours while the app stays open | A request for the signed release manifest. No note data, no identifier. |
Update download (objects.githubusercontent.com) |
Only after you accept an update | A request for the release asset the manifest names. Its signature is verified before anything is installed. |
Plugin registry (raw.githubusercontent.com) |
Only when you press Browse in the plugin settings | A request for the registry file and the plugin you choose to install. |
Semantic model download (huggingface.co) |
Once, after you opt in to semantic search | A request for the model files. No note data. |
Google Calendar (accounts.google.com and
oauth2.googleapis.com to connect,
www.googleapis.com to read)
|
Only while a Google account is connected | An access token and a date range. See below. |
| Plugin requests | When a plugin you installed runs | Only to hosts named in the plugin manifest and approved by you, and only what that plugin sends. |
Publishing to WordPress (public-api.wordpress.com) |
Only when you publish a note, and once when you connect | The note you chose to publish, to the site you chose. Connecting also asks WordPress.com which sites you can publish to, so the picker can list them. |
Two local connections are worth naming, because neither leaves your machine. Connecting a
Google account opens a listener on 127.0.0.1 on a port the operating system
picks, so Google's consent page can hand the authorization code back; it closes as soon as
the code arrives or the attempt times out. And the browser clipper talks to the app over
the browser's native-messaging pipe, not a network port: your browser starts the Moldavite
binary, the page you clip is written into your Forge, and nothing is sent anywhere else.
Release builds write no log file. The logging plugin is only compiled into development builds, so there is no place on disk where note content, tokens or URLs accumulate.
What connecting WordPress.com grants
WordPress.com's consent screen lists nine permissions: your profile, posts, comments, categories and more. That is broader than what Moldavite does, and it is worth explaining rather than hoping you skim it.
Moldavite calls two things: the endpoint that lists the sites you can publish to, and the
one that creates or updates a post. It never reads your profile, never touches comments,
and never writes a category. The breadth comes from WordPress.com's own scopes: the
narrower posts media grant returns a token valid for a single site, which
would leave the site picker with nothing to pick and make changing blogs a matter of
disconnecting and starting over. Account-wide access is the only scope that spans sites.
The token is stored in your operating system's credential store, never in a note or a config file, and never sent anywhere except WordPress.com. Disconnecting deletes it, along with the record of which posts came from which notes. You can also revoke it from WordPress.com at any time, under Security → Connected Applications.
Moldavite's own WordPress.com application credentials are compiled into the app, which means anyone can extract them from a downloaded copy. This is not a way into your account: the credentials identify Moldavite to WordPress.com, not you, and no site can be reached without a token that only your own approval creates.
What someone could do with them is present a different application under Moldavite's name on a WordPress.com consent screen. You would still have to approve it. The reason the credentials cannot simply be kept out of the app is that WordPress.com's OAuth offers no public-client or PKCE flow, and the token exchange requires the secret, so a desktop app either embeds it or routes every sign-in through a server. Moldavite is local-first and runs no server, and adding one so that connecting a blog depends on it would cost more than this is worth. If a consent screen ever names Moldavite when you did not ask for it, decline it.
Calendar access
Moldavite can display events from Apple Calendar and from Google Calendar alongside your notes. Both are read-only. The app never creates, edits, or deletes an event, and it never writes calendar content into your notes on its own.
- Apple Calendar is read through macOS EventKit after you grant permission in the system dialog. Nothing leaves your machine.
-
Google Calendar is read through the Google Calendar API after you
explicitly connect an account. Moldavite requests one scope,
https://www.googleapis.com/auth/calendar.readonly, which is the narrowest scope that allows reading events.
Google calendar data is fetched for the date range you are viewing and held in memory while Moldavite draws the timeline. It stays out of disk storage, search indexes, and exports. Network transport is limited to your computer and Google.
You can disconnect at any time from Settings → Calendar, which deletes the stored token from your system keychain. You can also revoke Moldavite's access from your Google Account permissions page, which invalidates it regardless of what is on your machine.
Google API Limited Use
Moldavite's use of information received from Google APIs adheres to the Google API Services User Data Policy, including the Limited Use requirements. Concretely:
- Google Calendar data is used only to display your events inside the app.
- It is never transferred to anyone, because it never leaves your device.
- It is never used for advertising, and never sold.
- No human reads it. There is no server-side component and the developer has no way to access it.
- It is not used to train any machine learning or AI model.
Credentials and secrets
Tokens and passwords are stored in your operating system's own credential store under the
service name Moldavite: the Keychain on macOS and iOS, Credential Manager on
Windows, and the Secret Service (GNOME Keyring, KWallet) on Linux. Each entry is namespaced
by the feature that owns it, so a plugin cannot read the calendar's token by guessing a
key. They are never written into notes, settings files, or exports.
The Google connection stores a refresh token there and keeps the short-lived access token in memory only. Disconnecting removes the refresh token.
Plugins
Plugins run in a sandboxed worker with no network access and no direct system access by default. A plugin must declare the exact hosts it wants to reach and the capabilities it wants to use, and you approve that list before it runs. Consent is bound to a SHA-256 of the plugin's manifest and code together, so any change to either re-prompts.
A plugin you approve can send data to the hosts you approved. Moldavite enforces the boundary; it does not vet what a third-party plugin does inside it. Install plugins you trust, and read the permission sheet.
Children
Moldavite is a general-purpose notes application and is not directed at children. It collects no personal information from anyone, including children.
Changes to this policy
If the app gains a capability that changes what leaves your device, this page changes in the same release, and the network table above is kept exhaustive. Material changes are also noted in the changelog.
Last updated: 23 September 2026
Contact
Questions about this policy, or about how the app handles something not covered here, can be raised as an issue on GitHub. Moldavite is open source under the MIT License, so every claim on this page can be checked against the source code.