Ryot is a private diary for your free time. Log the films and shows you watch, the books you read, the games you play and the podcasts you hear, rate them and keep a "to watch" list. It also logs gym workouts and body measurements, with graphs to show your progress. It reminds you when a new episode of a show you follow comes out. It runs on your own computer or server, so your history stays yours.
Films, TV, books, anime, games, podcasts and music in one diary
Imports from Goodreads, Trakt, IMDb, Netflix and more
Workout logging with a large exercise library and progress graphs
Alerts for new episodes and automatic logging from Jellyfin, Plex and Kodi
Great for: People who like to keep a record of what they watch, read and play, and anyone logging gym workouts, without handing that history to a big platform.
Everyday changes (which media types you track, units, dashboard sections, notifications, imports) are settings in the app. Code changes mean a Rust backend (crates/**) plus a React frontend (apps/frontend/), joined by a GraphQL API with generated types, so builds are slow and need Rust, Node 24 and PostgreSQL. The author is rewriting Ryot in TypeScript on a separate branch, so code changes to this version will not carry over to the next major release. Your AI always tries the gentlest step first, so your version stays easy to update.
1
Settings 3 options
No code. Change it in the app or its config.
Hide media types you don't use, choose dashboard sections and their order, units (kg/lb, km/mi), rating scale and more.
Turn on films, TV and games by adding free API keys; dashboard message, sign-up and telemetry switches.
Get told about new episodes, release dates and reminders on Telegram, Discord, ntfy, Gotify, Pushover, Apprise, email and more.
2
Extend 3 options
Themes, plugins, webhooks and the API. Still no fork.
Bring your history in from Goodreads, Trakt, IMDb, Netflix, MyAnimeList, Strong, Hevy, Plex, Jellyfin and others.
Log what you watch automatically from Jellyfin, Plex, Emby or Kodi, or send updates to Radarr and Sonarr.
Write your own scripts, e.g. a yearly reading summary or a printed watchlist.
3
Code 2 options
Your AI edits the source for anything else.
New screens or a different look. Uses Mantine components.
New data or behaviour. Regenerate frontend types afterwards (see AGENTS.md).
Can I trust it?
GPL-3.0-only. Free to use, change and share. If you give copies of the app (changed or not) to other people, you must also give them the source code under the same licence. Running it for yourself, or as a website for others, has no extra obligations. Some extra features ("Ryot Pro") need a paid key from the author; the free version works fully without it.
Your data: stores personal data, on your own device or server. PostgreSQL (the postgres_storage volume). Uploaded images go to S3-compatible storage if configured.
Other services: TMDB (The Movie Database) (optional, free for personal use); Twitch / IGDB (optional, free); Other data providers (Open Library, AniList, MyAnimeList, Audible, iTunes, Spotify, Google Books, Hardcover, ListenNotes and more) (optional, free; some need a free API key); Ryot Pro key (via Unkey) (optional, paid subscription or lifetime licence from ryot.io); S3-compatible file storage (e.g. MinIO) (optional, free if self-hosted); Telegram, Discord, ntfy, Gotify, Pushover, Apprise or email (SMTP) (optional, free)
Pinned version 77190a6. Every handover uses exactly this code, which we've reviewed.
Set a long random SERVER_ADMIN_ACCESS_TOKEN and change the example database password before real use.
USERS_ALLOW_REGISTRATION is true by default. Turn it off once your accounts exist if Ryot is reachable from the internet.
Anonymous usage statistics go to the author's Umami server unless you set DISABLE_TELEMETRY=true.
Integration webhook URLs let anyone who has them add plays to your account. Keep them private.
Looking up a title sends the search words to outside providers such as TMDB or Open Library. Your history stays on your server.