For your phone
Real launcher icon, real foreground service, system folder picker. No Termux. The Faveat Trove app for Android.
Get the APK →
Trove makes a folder on your phone or computer easily browsable as a website on your local Wi-Fi. Friends scan the QR code or tap the URL, browse, pick and choose which files to download from your folder, all available from any web browser.
No accounts. No Cloud. No Telemetry.
Why this exists
Your friend has a phone full of vacation photos. You want to keep a few. An unlocked phone passing around a table...what could go wrong?! Their messages, notifications, every other photo they have...the path between you and those snapshots has somehow become an absurdity.
The alternatives don't help. Upload everything to someone else's server, then download — two devices ten feet apart, and every photo takes a tour of a data center: electricity burned, water evaporated to cool the racks, CO2 vented for bytes that never needed to leave the room. Plug in a cable, hope the OS cooperates, dig through DCIM/Camera. Run a third-party "file manager" that wants permission to read every byte on the device, then asks to share more than was meant to be shared.
Trove is the missing tool. They pick the folder to share. Trove turns it into a small read-only website on the Wi-Fi. You tap the link on your phone, see the folder in your browser, pick what you want. Their phone stays in their pocket. Stop the share, the URL goes dark. No accounts were created. No data left the network — no roundtrip, no data center, minimal carbon cost.
It's the way file sharing should have always been.
v0.1.0 — Browse a folder on someone else's device from your own. Phone or desktop, both directions, both speaking Faveat Trove Protocol v1.0. Small, auditable, GPLv3+. No accounts. No Cloud. No Telemetry. Minimal carbon cost.
— state of the project, May 2026
How it works
There's nothing to configure. The folder you point Trove at is the folder you share. That's the whole mental model.
AndroidOpen the app, tap Pick a folder, choose one in the system picker.
DesktopDrop faveat_trove.py into the folder you want to share.
AndroidTap Start sharing.
DesktopRun one command in that folder.python3 faveat_trove.py
Trove shows a URL with an auth token, plus a QR code for phones. Copy the link or hold up the QR.
Friend opens the link in any browser. Browses, previews, downloads. Done.
Why it matters
Features
Trove does one thing — let your friends browse a folder over the network — and tries to do every part of that thing well.
Grid, list, and details (with sortable columns). Choose what fits.
Full-text with prefix-match boost, accent-insensitive, copper highlights.
Preview images, audio, video, PDFs, text. Sidebar shows dimensions, duration, bitrate, embedded album art, line counts.
Pick the files you want. Trove zips and streams them. Metadata extracts in parallel, so 200-video folders populate in seconds.
Pass --cert + --key. mkcert workflow documented.
192-bit CSPRNG. Constant-time compare. HttpOnly + SameSite=Strict cookie after first hit. Byte-identical 401s — no path enumeration.
Pure-Python encoder on the reference; ZXing on Android. Scan from a phone — no typing tokens.
RFC 7233 single-range requests. Drop a connection mid-download, the browser reconnects from where it left off.
Strict CSP with per-request nonce.
X-Content-Type-Options, X-Frame-Options, Permissions-Policy on every response.
POST size + field caps. HEAD disabled.
Dark, light, full keyboard navigation, in-browser help modal.
File formats
Files in the categories below get the right preview, the right MIME type, and the right thumbnail icon. Anything not in the list still serves and downloads cleanly — it just gets a generic "other" icon.
jpgjpegpnggifwebpbmpsvgicoheicheifavif
preview, dimensions in sidebar
mp3wavflacoggogam4aaacopus
preview, duration & bitrate, embedded album art
mp4webmmovm4vmkvavi3gpogvmpgmpeg
preview, duration & bitrate (codec support depends on browser)
pdf
inline preview where the browser supports it; download otherwise
ziptargztgzbz2tbzxztxz7zrarzstjarapkwar
entry count for zips
docdocxxlsxlsxpptpptxodtodsodprtfepub
typed icon, direct download
txtmdrstjsoncsvtsvxmlyamlymltomlinicfgconfpropertiesloghtmlhtmcssscsssasslessjsjsxtstsxktktsjavascalapyrbgorsccppcchhppswiftdartluaplphprsqlshbashzshfishps1batcmdmakemkm3um3u8plscuesrtvttassssarssatomopmlgpxkmlnfodesktopicsvcf
inline lightbox preview, line count & encoding in sidebar (capped at 200 KB)
The list above is the canonical set as of v0.1.0; both the Python reference and the Android app use it. Both implementations also send the right Content-Type for these extensions even when the OS reports application/octet-stream, which is why files like .mkv play in browsers that should be able to play them.
Privacy commitment
Trove can't leak data because the architecture doesn't allow for it. There is no telemetry, because there is no network code that calls home. There is no cloud, because there is no server but yours.
--bind 127.0.0.1 to restrict to this machine only.Hostile networks
Trove needs a Wi-Fi where two devices on the same network can actually see each other. That's most home Wi-Fi. It's not most guest Wi-Fi.
Get Trove
Install the Android app, run the Python file on a desktop, or clone the source for both. All three speak the same protocol — pick whatever fits the device in your hand.
Real launcher icon, real foreground service, system folder picker. No Termux. The Faveat Trove app for Android.
Get the APK →One Python script. Drop it in the folder you want to share. Run it. Linux, macOS, Windows.
Download faveat_trove.pySource for both implementations, protocol spec, 150+ test security suite, brand assets, build guides.
Open on Codeberg →Stand on the shoulders
This site collects nothing. The HTML is static, fully self-contained, and makes zero external network requests. No analytics, no tracking pixels, no cookies, no fingerprinting scripts, no third-party fonts. Brand assets, fonts, and styles are all served inline from this same file.
Trove the application collects nothing either. The desktop reference (Python) and the Android app both bind to your local network, serve files you point them at, and shut down when you stop them. Neither phones home, neither writes user data to disk, neither has any update-check or telemetry endpoint — because none was ever built. The Android app additionally declares only three permissions: INTERNET, ACCESS_NETWORK_STATE, ACCESS_WIFI_STATE. No location, no contacts, no media library access. Folder access goes through Android's Storage Access Framework — the app can read only the one folder you pick.
If you find evidence that contradicts any of the above, please file an issue against the relevant repository at codeberg.org/faveat.
Trove is licensed under the GNU General Public License version 3 or later. In addition, Faveat Software publishes the following directives — voluntary commitments we ask of users and forks:
These directives are not legally binding — the GPL is what governs your rights. They are an invitation to build software the way it should be built: for the people who use it.