Privacy Policy

Last updated: March 22, 2026

Sofa is a self-hosted application. When you run Sofa, your data lives on your own server and is under your control. This policy describes what data Sofa stores, what it sends externally, and how you can control it.

Data Stored on Your Server

All of the following data is stored locally in a single SQLite database file on the machine running Sofa.

Account Information

Viewing Activity

Media Metadata

Movie, TV show, season, episode, and cast/crew metadata is fetched from The Movie Database (TMDB) and cached locally. This includes titles, descriptions, images, genres, streaming availability, and related recommendations. No personal data is included in this metadata.

Backups

Manual and scheduled backups are full copies of the database stored on your server. They contain all of the data described above. Backup management (creation, download, deletion) requires admin authentication.

External Services

Sofa communicates with the following external services during normal operation.

The Movie Database (TMDB)

Your server makes API requests to TMDB to fetch and refresh movie and TV metadata. These requests include your TMDB API key and the IDs or search queries for titles being looked up. A single API key is used for the entire instance — TMDB cannot identify individual users. No personal data (watch history, ratings, etc.) is ever sent to TMDB.

When the local image cache is enabled (the default), poster and backdrop images are downloaded from the TMDB CDN and served from your server. When disabled, images are loaded directly from TMDB’s CDN by the client.

Sofa Public API

Your server may contact the Sofa public API for two purposes:

PostHog (Mobile App Only)

The native iOS and Android app includes optional, anonymous analytics powered by PostHog. This tracks screen views and app lifecycle events — no personal data, search queries, or watch history is collected. Analytics is disabled by defaultand requires explicit opt-in. You can change your preference at any time in the app’s settings.

Media Server Integrations

If you connect Plex, Jellyfin, or Emby, those services send webhook events to your Sofa server when you finish watching something. This data is processed and stored locally. Sofa does not send data back to your media servers.

Sonarr & Radarr

If you use Sonarr or Radarr integration, those services pull your watchlist from Sofa via authenticated API requests. Sofa does not push data to them.

Cookies

Sofa uses a session cookie to keep you logged in. This cookie is HTTP-only, same-site, and contains only a session token. No third-party cookies are set by the web app.

Data Sharing

Because Sofa is self-hosted, there is no central service that has access to your data. The project maintainers have no access to your database, your watch history, or your account information. The only data that leaves your server is described in the External Services section above.

Data Retention & Deletion

All data is stored in a single SQLite file on your server. You have full control over it:

Children

Sofa is not directed at children under 13. Since the application is self-hosted, account creation is controlled entirely by the server administrator.

Open Source

Sofa is open source under the MIT License. You can audit exactly what data is collected and how it is handled by reviewing the source code.

Changes

This policy may be updated as new features are added. Changes will be reflected in the “Last updated” date above and committed to the repository.

Contact

Questions or concerns about privacy can be raised via GitHub Issues.