Letworks · trust center
Trust & Security Center
Every Letworks app is built offline-first on purpose: your books, shows and files stay on your device (or your own server) unless you explicitly turn on something that leaves it. This page is the full, plain-language account of what that means for each app, one policy per product, kept in one place.
Effective & last updated: July 24, 2026
Letworks is one person building small, focused apps, not a company with a data business to run. Leaflet and Wavelet are designed to work fully offline; Hamlet is designed to run on hardware you own. Where a feature does need to talk to a server — a podcast's RSS feed, an optional Google Drive folder, a self-hosted sync server — it's between your device and that specific destination. Letworks itself doesn't operate servers that collect, store, or process your library, your listening habits, or your reading history. There's nothing to sell because there's almost nothing here to begin with.
Each app below has its own full policy, adapted from the policy shipped with that app's own source, because each one handles data a little differently. If you only read one section, read the one for the app you actually use.
A quick summary of each app. Full detail is in each app's own section further down.
A side-by-side view. "Not collected" means Letworks never receives this data at all, not that it's merely hidden from you.
| Data category | Leaflet | Wavelet | Hamlet |
|---|---|---|---|
| Account / profile info | Not collected | Not collected | Lives on your own server |
| Library contents (books, audio) | On-device by default | On-device by default | Stays on your server |
| Reading / listening position | On-device by default | On-device by default | Stays on your server |
| Advertising / analytics identifiers | Not collected | Not collected | Not collected |
| Precise location | Not collected | Not collected | Not collected |
| Contacts, camera, microphone | Not accessed | Not accessed | Not accessed |
| Google Drive (drive.file scope) | Opt-in | Opt-in | N/A |
| Self-hosted server sync | Opt-in | Opt-in | This is the server |
Leaflet is an e-book and audiobook reader app. This section explains what data Leaflet accesses and what it does with it, adapted from the policy shipped with the app itself. Last updated 2026-07-20.
Leaflet does not run analytics, does not show ads, does not use any third-party tracking SDKs, and does not sell or share your data with anyone. Your library — books, bookmarks, and highlights — is stored locally on your device unless you explicitly turn on one of the optional sync features below.
When you add a book to your library (EPUB, MOBI/AZW3, PDF, and more), Leaflet reads that file from wherever you picked it on your device to extract its text, cover image, and metadata. This processing happens entirely on your device — files are never uploaded anywhere unless you turn on Google Drive or self-hosted sync, below.
If you choose to connect Google Drive, Leaflet requests the drive.file OAuth scope — the most restrictive scope Google offers. This means Leaflet can only see files and folders you explicitly pick through Google's own file picker; it cannot browse, read, or modify anything else in your Drive. This access is used solely to let you store your book files in a Drive folder of your choosing and open them from Leaflet.
Google's handling of that folder is governed by Google's Privacy Policy. You can disconnect Leaflet or revoke its access at any time from your Google Account permissions.
Leaflet supports syncing your library metadata, bookmarks, and highlights to a self-hosted server that you configure yourself — a Hamlet instance, for example, or any compatible server. If you enable this feature, that data is sent only to the server address you provide, a server you control, not one operated by the developer of Leaflet. The developer of Leaflet has no access to that server or the data on it.
Your reading progress, bookmarks, and highlights are stored locally in the app's private storage on your device. Uninstalling the app removes this data.
Wavelet is an audiobook and podcast player. This section explains what data Wavelet accesses and what it does with it, adapted from the policy shipped with the app itself. Last updated 2026-07-20.
Wavelet does not run analytics, does not show ads, does not use any third-party tracking SDKs, and does not sell or share your data with anyone. Your library — audiobooks, podcasts, playback progress, and bookmarks — is stored locally on your device unless you explicitly turn on one of the optional sync features below.
When you add audiobooks to your library, Wavelet reads those files from wherever you picked them on your device (or from a connected cloud folder, below) to extract chapters, cover art, and metadata for playback. This processing happens entirely on your device.
If you subscribe to a podcast, Wavelet fetches that podcast's public RSS feed URL directly from the podcast host — not from any Wavelet-operated server, because there isn't one — to list and download episodes.
If you choose to connect Google Drive, Wavelet requests the drive.file OAuth scope — the most restrictive scope Google offers. This means Wavelet can only see files and folders you explicitly pick through Google's own file picker; it cannot browse, read, or modify anything else in your Drive. This access is used solely to let you store and stream audiobook files from a Drive folder of your choosing.
Wavelet supports syncing your library and playback progress to a self-hosted server that you configure yourself — a Hamlet instance, for example, or any compatible server. If you enable this feature, that data is sent only to the server address you provide, a server you control, not one operated by the developer of Wavelet. The developer of Wavelet has no access to that server or the data on it.
Dropbox, OneDrive, Nextcloud, and ProtonDrive integrations are shown in the app as "coming soon" and are not yet functional — no data is sent to these services today.
If you use Wavelet with CarPlay, playback controls and now-playing information are shown on your vehicle's display via Apple's CarPlay framework. No additional data leaves your device for this.
Your listening progress, bookmarks, and library metadata are stored locally in the app's private storage on your device. Uninstalling the app removes this data.
Hamlet is a self-hosted audiobook, podcast and ebook server: software you run yourself on hardware you control.
When you self-host Hamlet, you are the data controller for whatever your instance stores: your media library, the accounts you create, and the playback state of anyone you give access to. Letworks does not operate, access, host, or receive any data from your Hamlet server. This section describes what the Hamlet software itself does — not your own responsibilities as an operator. If you share your instance with other people, you're the one who should tell them how you handle their data.
Hamlet stores your library index, chapters, covers and playback positions in a local SQLite database on the machine you run it on. Account passwords are hashed with argon2, and sessions use short-lived JWT bearer tokens. The application has no cloud dependency, contacts no third-party analytics or telemetry service, and has no "phone home" behavior of any kind — everything lives on the machine you point it at, and nothing leaves it unless you configure it to.
Each account on your instance has its own login and its own playback and library progress. The underlying media files are shared across the accounts you create; the per-user state is not.
Hamlet's code is intended to be open for anyone running it to inspect. See the GitHub link on the Hamlet page for the current repository.
Letworks doesn't use ad networks, analytics vendors, or data brokers in any app. The only outside parties involved are the ones a given feature necessarily talks to, and only when you use that feature.
| Party | Involved with | Why |
|---|---|---|
| Apple App Store / Google Play Store | All apps | Distribution, purchase and install data handled per Apple's and Google's own privacy policies — Letworks doesn't choose what these platforms collect. |
| Google Drive API | Leaflet & Wavelet (optional) | Only if you connect Drive; scoped to drive.file and authorized directly by you via Google sign-in. |
| Podcast publishers & their CDNs | Wavelet | Feeds and episodes are fetched directly from whatever URL you subscribe to. |
| A self-hosted server you configure | Leaflet & Wavelet (optional), Hamlet | Only if you run or connect to one — a server you or its operator control, not Letworks. A Hamlet instance is the obvious example, but any compatible server works. |
| Dropbox, OneDrive, Nextcloud, ProtonDrive | Wavelet (planned) | Listed in-app as "coming soon." Not yet functional — no data is sent to these services today. |
Small surface area is itself a security posture, but here's the concrete detail.
Leaflet and Wavelet do not knowingly collect personal information from children, and have no account system or data collection mechanism that would do so. Letworks apps generally aren't directed at children under 13 (or under 16 where a stricter local threshold applies, such as parts of the EU).
If a parent or guardian believes a child has provided information through an optional Google Drive connection or a self-hosted sync server, contact support@letworks.dev and we'll help however falls within Letworks' control — though note that Drive access lives in the user's own Google account, and self-hosted sync data lives on the operator's own server, both outside what Letworks can directly access or delete.
If you're in the EEA or UK, you have the right to access, correct, delete, restrict, object to, and port your personal data. In practice, because almost everything described on this page lives on your own device, your own Google account, or a server you control, most of these rights are already in your hands: deleting the app removes its local data, managing your Google Account removes Drive access, and administering your own self-hosted server gives you direct control over everything on it.
Letworks does not sell personal information, and does not share personal information for cross-context behavioral advertising — and hasn't done either in the past 12 months. California residents can ask for more detail about the limited data described in this policy by contacting us below.
Email support@letworks.dev with your request and which app it concerns. We'll respond within 30 days.
Letworks doesn't hold a copy of any of this on its own infrastructure, so beyond correspondence you send us directly, there's nothing on our end to retain or delete on your behalf.
The Leaflet and Wavelet sections above are adapted from the policies shipped with those apps, each last updated 2026-07-20; the rest of this page was last updated July 24, 2026. If anything material changes — a new feature that touches data differently, a new third party — we'll update the relevant section and revise the date. Worth a re-read before you turn on an optional feature like Google Drive or self-hosted sync.
Questions about any of this, a data request, or a security report — one inbox handles it all.
Mention which app your question is about so it gets to the right place quickly.
Email support@letworks.dev