Privacy

Privacy Policy

Moldavite is a local-first notes app for desktop, iPhone and iPad. Your notes live in files on your device or in storage you choose. There is no Moldavite account, developer-operated sync server, or analytics service.

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.

No data controller relationship for your content

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:

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.

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.

A limitation worth stating plainly

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.

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:

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.