apps
Side projects. Small, native, privacy-first. Tap cat PRIVACY.md on any of them for the full policy.
-
BuildWatch — Firefox CI on your phone
iOS
DESCRIPTION
Native iOS app for Mozilla engineers — sheriffs, on-call, and devs — to monitor Firefox CI build status without opening a laptop. Live push lists, per-platform results, retrigger actions, and grouped failure summaries pulled from TreeHerder, TreeStatus, Taskcluster, and Bugzilla.
LINKS
▸ cat PRIVACY.md
last updated: May 8, 2026
BuildWatch is a thin client over Mozilla's public CI APIs. It does not run a backend, does not collect telemetry, and does not transmit data anywhere except to the Mozilla services it queries on your behalf.
Information Stored On Your Device
- Your Mozilla / LDAP email address (optional — used only to filter the "My Pushes" tab)
- Your app preferences (default repository, tier visibility, notification opt-in)
- The set of pushes you've marked as watched
All of the above is stored locally on your device using
UserDefaults. None of it is transmitted to any server operated by the developer, because the developer does not operate any servers.Network Requests
BuildWatch communicates only with public Mozilla services:
- TreeHerder — push list, job results, retrigger actions, text log errors
- TreeStatus — open/closed/restricted state of Mozilla trees
- Taskcluster — deep links to individual tasks
- Bugzilla — opening bug links found in commit messages
These services have their own privacy and data-handling policies, governed by Mozilla. See mozilla.org/privacy.
What BuildWatch Does Not Do
- No analytics, crash reporting, or behavior tracking
- No advertising or third-party SDKs
- No accounts created or managed by the developer
- No data sold or shared with third parties
Children's Privacy
BuildWatch is a developer tool for adult engineers working on Firefox. It is not directed at children under 13 and does not knowingly collect data from anyone, regardless of age — see "Information Stored On Your Device" above.
Source Code
BuildWatch is open source under the MPL-2.0 license. Source: github.com/mozilla-platform-ops/BuildWatch. You are encouraged to read it and verify these claims.
Contact
Questions or issues: contact me.
-
Crumb — Don't give a crumb
Firefox
DESCRIPTION
Firefox extension that blocks cookie-consent banners. Declarative-only, zero telemetry, ~25 lines of runtime. MIT-licensed and reproducible from source.
LINKS
▸ cat PRIVACY.md
last updated: 2026-05-05
Crumb is a content-blocking extension for Firefox. It does not collect, store, transmit, or share any data about you, your browsing, or your device.
What Crumb does
When you visit a web page, Crumb inserts a stylesheet that hides cookie-consent banners, and the browser's built-in
declarativeNetRequestengine blocks a fixed list of consent-management scripts at the network layer. Both the stylesheet contents and the network rules are bundled with the extension and do not change at runtime.What Crumb does not do
- No telemetry, analytics, crash reporting, or usage metrics.
- No remote configuration or rule fetching after install.
- No reading or transmission of page content, form data, cookies, or browsing history.
- No background script and no persistent storage.
- No advertising or third-party SDKs.
Permissions
Crumb requests two permissions, both used solely for the local blocking described above:
declarativeNetRequest— to install the static block list.<all_urls>host access — to inject the stylesheet on every page.
Neither permission is used for data collection.
Source code
Crumb is open source under the MIT license. The full source — including every filter list and the build pipeline that produces the extension — lives at github.com/rcurranmoz/crumb.
Contact
Issues or questions: github.com/rcurranmoz/crumb/issues.
-
Latent — On This Day
iOS
DESCRIPTION
Privacy-first iOS app that surfaces photos taken on this date in past years from your Apple Photos library, dealt out each morning by a small companion. No accounts. No analytics. Everything runs on-device. Formerly Timefold — renamed in v2.0.
LINKS
▸ cat PRIVACY.md
last updated: August 2026
Latent is designed with privacy as a core principle. The app does not require accounts, does not use analytics or advertising, and does not send your data to external servers.
Information We Do Not Collect
Latent does not collect, store, transmit, or sell any personal data. Specifically:
- No user accounts are created
- No analytics or tracking frameworks are used
- No advertising or marketing SDKs are included
- No data is transmitted to external servers
Photos Access
Latent accesses your Apple Photos library locally on your device using Apple's Photos framework.
- Photos are processed entirely on-device
- Photos are never uploaded, synced, or backed up to any servers operated by the developer
- Any sharing actions are initiated explicitly by you using Apple's system share sheet
Latent works only with Apple Photos at this time. No third-party photo services (such as Google Photos, Facebook, or cloud storage providers) are accessed.
Optional Actions
If you choose to:
- Share a photo, it is shared using Apple's built-in sharing tools
- Delete a photo, the deletion is performed directly within your Photos library using Apple's APIs
These actions are always user-initiated.
Data Storage
Latent does not maintain user databases or cloud storage. Any app preferences are stored locally on your device using standard iOS storage mechanisms.
Children's Privacy
Latent does not knowingly collect any data from children. Since no data is collected, stored, or transmitted, there is no personal information to manage or disclose.
Changes to This Policy
If Latent's functionality changes in a way that affects privacy, this policy will be updated accordingly.
Contact
If you have questions about this privacy policy or Latent, contact me.