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 ads, no tracking, no accounts
No advertising identifier, no third-party analytics, no user accounts. Basalt ships a crash reporter, on by default and detailed below — turn it off any time in Settings.
GitHub, plus crash reports unless you turn them off
The app talks to GitHub to read your repo, push your commits, and check for a new release. It also talks to Google’s Crashlytics service to report crashes, by default — turned off in one tap in Settings, and never with your notes either way.
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 app published by kpndevroot. It is developed privately, so the claims below are commitments about how the app behaves rather than something you can verify by reading the source. Everything they describe is observable from the outside: the app talks to the two hosts named above and to nothing else.
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
By default 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.
Crash reports
Basalt sends crash reports to Google’s Crashlytics service, so problems can be found and fixed. This is on by default, and you can turn it off at any time in Settings → Privacy — the app stops reporting the moment you do.
When it is on, a report contains the app version, the device model and OS version, and where in the code the problem happened. It never contains a note’s content, a file path, a repository or owner name, or a GitHub token — the code that builds each report only accepts a fixed set of non-identifying values, so there is no path by which those could leak into one. Turning the setting back off stops reporting immediately. Reports already sent can be deleted by request; see Contact below.
This is the one exception to “GitHub and nothing else” above. It is on by default so problems are caught without asking anything of you first, and it is one tap to switch off if you would rather it were not.
What Basalt does not do
- No analytics, telemetry, or usage statistics.
- 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.
- No note content, file path, repository or owner name in a crash report, ever \u2014 that holds whether reporting is on or off.
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. The date is the record: a policy that has not moved is one whose behaviour has not moved either.
Contact
Questions about privacy, or a suspected problem with it, can be raised at github.com/kpndevroot/basalt-landing/issues. For a suspected security problem, please report it there without publishing the details, and you will get a way to send them privately.