Find a file
2025-09-21 10:15:13 -04:00
future Future changes: Unambiguous timestamps; identity counter; sign the topic 2025-01-04 13:41:52 -05:00
howto S3 guide: Create access key as last step so it isn't hanging around 2023-08-02 21:19:01 -04:00
spec ADR 8 is actually 9 (fix title) 2025-09-21 10:15:13 -04:00
README.md - Point to just the protocol doc in the README, rather than to the more 2025-08-31 11:59:03 -04:00

Cavern, the underground social network

Cavern is a social media protocol that takes a local-first approach: Your laptop or phone always holds your entire journal, and publishes it as an encrypted collection of files to a quasi-trusted server; your friends' computers check it for updates. Apps use servers for coordination and communication, but the servers can't snoop on your journal.

Why it's interesting

Cavern embraces the following principles:

  • Local-first design
    • Use a desktop or phone app (not a website) to read and write journal entries.
    • No service that can go out of business and lose all your posts. If you're backing up your computer, your journal is automatically included.
  • Low-tech
    • Can use any kind of web server!
      • Apache or nginx on a junker computer in the basement
      • Amazon S3 bucket
      • Davros grain on Sandstorm
      • ...anything else you can publish to via SSH, FTP, etc.
    • It doesn't need to be your server; a tech-savvy friend could easily host one for 20 to 100 people
    • You can talk to anyone, not just other users of your server
    • No requirement for a high-quality or always-on internet connection
    • Identity is nomadic; you can always move to a different server
  • Privacy
    • Total control of who sees your posts
      • Even the owner of the web server can't read your journal
    • Not encouraged to expose yourself to the entire world
      • Allows creative ways of sharing posts with a limited set of people in your broader social circles who you don't even know
    • Your journal is your space; you are the moderator for your own comment threads
    • Balanced metadata exposure: Strangers can't see who you interact with, but those you connect with can (optionally) see who else you know

See the goals doc for high-level philosophy, goals, and strategies. I've also blogged about some of these topics and haven't yet collected the relevant bits into this repo, but there's some motivating background there.

How does it work?

The best place to start is the overview section of the protocol doc.

Can I use it?

Sort of! The spelunk repository contains an experimental app that can publish and read at a basic level, but doesn't fully implement the protocol yet. (The protocol also isn't finalized yet; see the future/ directory for work that still needs to be done, and ideas to be considered.)

See https://www.brainonfire.net/cavern/ for details about getting in touch with other Cavern users or developers.