Ryot is a free, open source bookmark & content management project written in TypeScript and released under GPL-3.0. It has 3,597 GitHub stars, 129 forks and 71 open issues, and was last pushed 9 hours ago. On this registry it ranks #5 of 14 tracked projects in Bookmark & Content Management, with 5 head-to-head comparisons available. It gained 9 stars over the last 6 tracked days.

What is Ryot?

Ryot (Roll Your Own Tracker) is a self-hosted platform for tracking media consumption and fitness activity, aimed at people who want their tracking data kept on their own hardware instead of in someone else's account.

What it is

Ryot is an open-source, self-hosted tracker that covers two broad areas in one application: the media you consume and the exercise you do. On the media side it tracks movies, TV shows, anime, manga, books, audiobooks, podcasts, music and video games. On the fitness side it logs workouts against a comprehensive exercise database, records body measurements over time, and charts progress in detailed graphs. It ships as a Docker image with a companion PostgreSQL database, exposes a GraphQL API, and is distributed under the GPL-3.0 licence.

The concrete problem it solves is fragmentation. Tracking normally spreads across a shelf of single-purpose services and apps, and the resulting history belongs to whichever company runs each one. Ryot pulls those streams into a single self-hosted instance, imports existing history from services such as Goodreads, Trakt, MyAnimeList and Audiobookshelf, and then keeps that history in a database the operator controls. It is a direct successor in spirit to MediaTracker, which the project credits as its inspiration.

Key capabilities

  • Tracks nine media categories, including movies, TV shows, anime, manga, books, audiobooks, podcasts, music and video games, alongside fitness activity in the same instance.
  • Imports existing libraries from Goodreads, Trakt, MyAnimeList, Audiobookshelf and other supported sources.
  • Automatically records plays and progress through Jellyfin, Plex, Kodi and Emby integrations.
  • Logs workouts against a comprehensive exercise database sourced from the Free Exercise DB project.
  • Authenticates users through OpenID Connect.
  • Sends notifications through Discord, Ntfy and Apprise.
  • Exposes a GraphQL API at app.ryot.io/backend/graphql and supports installation as a PWA for mobile use.

Who uses it and how

  • Self-hosters running the published docker-compose.yml, which pairs the ignisda/ryot:v10 image with a postgres:18-alpine database and exposes the application on port 8000.
  • Households with a media server: once Jellyfin, Plex, Kodi or Emby is connected, watch history is captured automatically rather than entered by hand.
  • People migrating off hosted trackers, who run the importers for Goodreads, Trakt, MyAnimeList or Audiobookshelf and then keep the resulting history locally.
  • Fitness-focused users logging workouts and body measurements over time and reading progress from the built-in graphs.
  • Teams or individuals wanting programmatic access, who build against the GraphQL API rather than the web interface.

Getting started

Create a docker-compose.yml containing the postgres:18-alpine database service and the ignisda/ryot:v10 application service, set SERVER_ADMIN_ACCESS_TOKEN and DATABASE_URL, then run docker compose up -d and visit http://localhost:8000. Production setups should follow the installation guide at docs.ryot.io, and a live demo is available at demo.ryot.io with data that resets every 24 hours.

How it compares

The facts name one comparable tool: MediaTracker, which Ryot credits as its inspiration and which occupies the same niche of self-hosted media tracking. Ryot widens that scope to include fitness tracking, workout logging and body measurements in the same instance, and adds integrations with Jellyfin, Plex, Kodi and Emby plus a GraphQL API. No list of paid products that this project replaces was provided, so no broader licence or cost comparison is made here.

When to use it — and when not to

A self-hoster must operate a PostgreSQL database alongside the application and supply a long random value for SERVER_ADMIN_ACCESS_TOKEN; notifications and automatic media tracking only work once the relevant external services are configured. Anyone unwilling to run and maintain that stack, or who needs a fully hosted service, should look elsewhere. Two limitations are worth noting honestly: the README states the project is written in Rust while this registry records TypeScript, and some features — profile sharing, personalized recommendations and supercharged collections — sit behind the paid Ryot Pro version rather than the open-source licence. The project is actively maintained, with a recent push and 71 open issues.

project readme (upstream, from github) — read inline

Ryot

A self hosted platform for tracking various facets of your life - media, fitness and more.


GitHub Repo stars GitHub release License Docker pulls Discord

DocumentationLive DemoDiscordPro Features


Quick Start

Create a docker-compose.yml file:

services:
  ryot-db:
    restart: unless-stopped
    image: postgres:18-alpine
    environment:
      - POSTGRES_PASSWORD=postgres
    volumes:
      - postgres_storage:/var/lib/postgresql

  ryot:
    image: ignisda/ryot:v10
    restart: unless-stopped
    ports:
      - "8000:8000"
    environment:
      - SERVER_ADMIN_ACCESS_TOKEN=CHANGE_ME_TO_A_LONG_RANDOM_STRING
      - DATABASE_URL=postgres://postgres:postgres@ryot-db:5432/postgres

volumes:
  postgres_storage:

Then run docker compose up -d and visit http://localhost:8000. For production setups, see the installation guide.

What is Ryot?

Ryot (Roll Your Own Tracker), pronounced "riot", is a self-hosted tracker for your media consumption and fitness activities. Track the books you read, shows you watch, games you play, and workouts you complete - all in one place with a clean interface and insightful statistics.

Demo

Try the live demo to explore the interface. Demo data resets every 24 hours.

Media Tracking

  • Track movies, TV shows, anime, manga, books, audiobooks, podcasts, music and video games
  • Import from Goodreads, Trakt, MyAnimeList, Audiobookshelf and more
  • Automatic tracking via Jellyfin, Plex, Kodi, Emby integrations

Fitness

  • Log workouts with a comprehensive exercise database
  • Track body measurements over time
  • Monitor progress with detailed graphs

Technical

  • Self-hosted with full data ownership
  • OpenID Connect authentication
  • Notifications via Discord, Ntfy, Apprise
  • GraphQL API for custom integrations
  • PWA support for mobile use
  • Written in Rust for performance

Pro Version

Ryot Pro adds profile sharing, personalized recommendations, supercharged collections and more. Learn more about the pro version.

Community

Questions or feedback? Join the Discord server or open a GitHub issue.

Acknowledgements

Migrating from v9?

If you were using v9.* of Ryot, please read the migration guide for instructions to upgrade to v10.

Frequently asked questions

Is Ryot free to use?

Ryot is open source under the GPL-3.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Ryot do?

Track your life, your way

What is Ryot written in?

Ryot is primarily written in TypeScript. Its source is publicly available at https://github.com/ignisda/ryot, and it has 3,597 GitHub stars.