xta/keepsake

organize media in your own private buckets

0

stars

44

commits

Python

primary language

Sep 3, 2026

updated

README

keepsake

A convention for organizing your media files in buckets you own, with metadata that lives alongside the files.

No database. No server required. The bucket is the entire system.

Your originals are kept exactly as uploaded, and every file sits beside a plain JSON file describing it — readable by anything, long after this tool is gone. A bucket full of IMG_4471.mp4 is not an archive. These are the rules that make it one.

The convention

SPEC.md is the authority.

Implementations

cli/Python command line and terminal UI. Survey a bucket, adopt existing videos, upload new ones, fill in titles.
web/Ruby on Rails multi-user viewer. Sign in, connect your own buckets, browse and stream.

These are sample implementations. Where an implementation and the spec disagree, defer to the spec.

License

MIT

Contributors

xta

44 commits

xta/keepsake

organize media in your own private buckets

0

stars

44

commits

Python

primary language

Sep 3, 2026

updated

README

keepsake

A convention for organizing your media files in buckets you own, with metadata that lives alongside the files.

No database. No server required. The bucket is the entire system.

Your originals are kept exactly as uploaded, and every file sits beside a plain JSON file describing it — readable by anything, long after this tool is gone. A bucket full of IMG_4471.mp4 is not an archive. These are the rules that make it one.

The convention

SPEC.md is the authority.

Implementations

cli/Python command line and terminal UI. Survey a bucket, adopt existing videos, upload new ones, fill in titles.
web/Ruby on Rails multi-user viewer. Sign in, connect your own buckets, browse and stream.

These are sample implementations. Where an implementation and the spec disagree, defer to the spec.

License

MIT

Contributors

xta

44 commits

Languages

Python

51.0%

Ruby

33.0%

HTML

6.7%

Vue

6.2%