Skip to content

barrulus/storitad

Repository files navigation

Storitad

A privacy-first legacy-journaling system. Record voice and video messages on a phone; process them on your laptop into a durable, browsable archive. No cloud, no accounts, no Google services.

Two halves, one repo:

  1. Storitad (phone) — a minimal Android app for GrapheneOS. Records audio/video with structured metadata (recipient, mood, tags, notes, optional GPS). Writes plain files; no network beyond a one-time, user-triggered Whisper model download.
  2. Storitad Ingest (laptop/desktop) — a Python tool that pulls captures over USB, transcribes them with whisper.cpp, writes a Markdown source-of-truth archive, and renders a plain static HTML site you can browse for the next few decades. Optional local server adds in-browser edit/delete.

Why

Voice memos live in a cloud until the cloud forgets them. Photo libraries are hostage to whoever owns the silo. Storitad keeps your recordings on your filesystem, the archive as plain Markdown and HTML, and everything replayable without any vendor staying alive. If the tooling ever dies, your .md files still open in any editor and your HTML still renders in any browser.

Status

  • Phone app: stable on Pixel 9 Pro / GrapheneOS. Voice, video, pause/resume, waveform, configurable recipients, on-demand Whisper, timeline-stats History screen.
  • Ingest: MVP + quota-based phone cleanup + optional local server with in-browser edit/delete. Pulls via adb, transcribes with whisper-small.en server-side.

Quick start

Phone app

Install Obtainium, tap Add App, and paste:

https://github.com/barrulus/storitad

Obtainium picks up the signed APK from the latest GitHub Release and handles updates from then on. No source checkout, no USB debugging.

Desktop ingest

git clone https://github.com/barrulus/storitad.git
cd storitad
git submodule update --init --recursive
nix develop                      # or `direnv allow`
nix run .#                       # pull, transcribe, render, open browser

Then Record on the phone → plug in → nix run .# → browse. That's the loop. (To build the phone app from source instead of Obtainium, run ./gradlew :app:installDebug with the Pixel plugged in.)

Documentation

Detailed guides are in docs/:

  • Installation — Nix, manual pip install, Whisper models, Android SDK, first-run setup
  • Phone app guide — recording, metadata, recipients, permissions, GrapheneOS notes, Pending vs History
  • Ingest pipelinestoritad-pull, archive layout, cleanup modes (quota / remove_all / remove_media), config, aliases
  • Browser experience — static HTML site, search, stats.html, how to share or self-host
  • Server modestoritad-pull serve, in-browser edit/delete, security model (loopback only, no auth)
  • Whisper / transcription — model choice, SHA verification, phone-side tiny.en vs server-side small.en, retranscribe
  • Troubleshooting — common failures and fixes
  • Architecture — components, data flow, sidecar contract
  • Specs — pointers to storitad-spec.org and ingest-spec.org

License

GPL-3.0-or-later. See LICENSE. The vendored whisper.cpp submodule retains its own MIT licence at native/whisper.cpp/LICENSE.

Acknowledgements

  • Whisper and its ggml implementation by Georgi Gerganov and contributors
  • GrapheneOS for shipping a usable privacy-respecting Android base
  • Anyone who reads their voice memos to the people they love before it's too late

About

Privacy-first legacy-journaling for GrapheneOS: record voice/video messages, ingest into a Markdown + static-HTML archive. No cloud, no accounts, GPL-3.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors