Privacy Policy
Basalt is an offline-first notes app backed by a GitHub repository you own. It keeps no server, so there is no place for your data to go except your device and your repo.
No data is collected
Basalt has no backend. There is no Basalt account, no server that receives your notes, and no operator-side copy of anything you write.
No analytics or tracking
No telemetry SDK, no crash reporter, no advertising identifier, no third-party analytics of any kind is compiled into the app.
One network destination
The app talks to GitHub and nothing else — to read your repo, to push your commits, and to check for a new release.
Your credentials never leave the device
Your GitHub token is held in the Android Keystore-backed secure store and is sent only to GitHub, as the authorization header on your own requests.
Who is responsible
Basalt is a free, open-source project published by kpndevroot. The complete source is at github.com/kpndevroot/basalt, so nothing in this policy has to be taken on trust — it can be read in the code.
What Basalt stores, and where
Everything below is stored locally on your device, in the app’s private storage. None of it is transmitted to the developer or to any third party.
- Your notes. Markdown files and attachments from your repository, unpacked to app-private storage so they can be read and searched with the network off.
- A local index. A SQLite database holding file paths, a full-text search index, the link graph, tags and highlights — the minimum needed to find things quickly offline.
- Queued edits. Notes you write or change while offline, held on the device until they can be pushed to your repository as commits.
- Your settings. Theme, appearance, sync preferences and which vaults you have connected.
- Your GitHub credentials. A personal access token, or an OAuth token and refresh token, held in
expo-secure-store— backed by the Android Keystore — and never in plain preferences. Public repositories store no credential at all.
What Basalt sends, and to whom
The app contacts exactly two hosts, both of them GitHub: api.github.com and github.com. It does so to:
- read the repository you connected, and download it at a specific commit;
- sign you in, if you choose GitHub’s OAuth device flow instead of pasting a token;
- push the commits you have written; and
- check whether a newer release of Basalt exists.
These are your requests to your account, authenticated with your token. Your use of GitHub is governed by GitHub’s Privacy Statement. Like any service you connect to, GitHub can see the requests your device makes to it.
What Basalt does not do
- No analytics, telemetry, or usage statistics.
- No crash or error reporting to any third party.
- No advertising, ad identifiers, or ad networks.
- No selling or sharing of personal data — there is none to sell.
- No location, contacts, camera, microphone, or call-log access. The app never requests them.
- No user accounts, profiles, or sign-up.
Permissions, and why each one exists
INTERNETContact GitHub to download your repo, push commits, and check for updates.USE_BIOMETRIC / USE_FINGERPRINTOptional biometric app lock. Verification is performed by Android; Basalt receives only a pass/fail result and never sees a fingerprint or face.POST_NOTIFICATIONSOptional local notification telling you a background sync finished. Scheduled on the device — there is no push service and no device token.VIBRATEHaptic feedback on gestures and sync events.SYSTEM_ALERT_WINDOWUsed by the React Native development overlay. It is not used to display anything over other apps in normal use.READ_EXTERNAL_STORAGE / WRITE_EXTERNAL_STORAGEDeclared with maxSdkVersion="32" for legacy Android only. On Android 13+ these are not requested; the app writes solely to its own private storage.Sensitive data and device security
Your notes may contain anything you choose to write, so Basalt treats the whole vault as sensitive. Note content is held in app-private storage, which other apps on a non-rooted device cannot read, and your GitHub token is kept in hardware-backed secure storage rather than alongside ordinary settings. You can additionally require a biometric or device-credential unlock before Basalt will open.
No security measure is absolute: a rooted or compromised device, or a device unlocked by someone else, can expose data that the operating system would otherwise protect.
Deleting your data
Because nothing is stored off-device, deletion is entirely in your hands. In Settings you can disconnect a vault — which erases its downloaded files, its index and its stored token — or reset the app completely. Uninstalling Basalt removes all of it.
Data already pushed to your GitHub repository is yours and remains there; delete it through GitHub, and revoke Basalt’s token at any time from your GitHub developer settings.
Children
Basalt is a general-purpose notes tool and is not directed at children. It collects no personal data from anyone, of any age.
This website
This page is a static site with no cookies, no analytics and no third-party scripts. Fonts are self-hosted at build time, so viewing it makes no request to any other company.
Changes to this policy
If the app’s data handling changes, this page changes with it and the date at the top is updated. Because the policy tracks the source, the commit history of the repository is itself a record of what changed and when.
Contact
Questions about privacy, or a suspected problem with it, are best raised as an issue at github.com/kpndevroot/basalt/issues. For security reports, please follow the disclosure process in the repository’s SECURITY.md.