Ganymede

GPL-3.0
Platform
Linux Docker
Licence
GPL-3.0 Open source
Ganymede

Overview

Ganymede is a free, self-hosted platform for archiving Twitch VODs and live streams, with a real-time chat experience attached to every recording. It watches channels on its own, pulls down past broadcasts and ongoing streams, and keeps the chat alongside the video: playback inside Ganymede replays the conversation in sync with the stream, and each archive can also carry a rendered chat video so the chat is watchable outside Ganymede entirely.

Everything is stored in a plain, predictable folder structure, which is the point — an archive outlasts the application that built it. The video files, the chat logs and the rendered chats stay usable without Ganymede installed. The project is the successor of Ceres and is built on yt-dlp and TwitchDownloader.

What it does

  • Watched channels — follow channels and let Ganymede archive past broadcasts and live streams automatically, with filtering options that decide what is worth keeping.
  • Live capture and VOD download — record a stream while it is happening or pull a VOD that already exists, from the same queue.
  • Real-time chat playback — chat is stored per archive and replayed in step with the video, so a stream is not stripped of its context.
  • Rendered chat archives — a chat render is produced for each archive as its own file, for viewing outside Ganymede or for long-term keeping.
  • Recoverable queue — video download, video conversion, chat download, chat render and sprite thumbnails run as separate job types, each with its own concurrency cap, and the queue survives a restart instead of losing what was in flight.
  • Custom FFmpeg and render parameters — set the FFmpeg arguments used for post-download conversion and for the chat render, so quality, codec and layout are your decision, not a built-in default.
  • Playlists and progress saving — organise archives into playlists and resume playback where you stopped.
  • Webhook notifications — fire a webhook when a download or render finishes, so archival can be wired into whatever else you run.
  • SSO / OAuth — log in through an OpenID Connect provider instead of local accounts, and optionally require login to view videos at all.
  • Management and polish — VOD, channel and user management, light and dark themes, and a translated interface.

Deployment and requirements

Ganymede runs on Linux with Docker and is two containers: the server and a PostgreSQL database. Images are published on ghcr.io and a docker-compose.yml is provided, so docker compose up -d is the whole install. Before starting you need a Twitch application — a client ID and secret from the Twitch developer console — and at least 50 GB of free storage for the archives, with a network mount the usual home for a real collection. The first login is admin / ganymede, and it should be changed immediately or replaced by a new admin account.

Mount the video, logs, temp and config volumes at paths that match their environment variables; the example keeps temp files on the host so an in-flight archive is recoverable if the container dies. Per-job concurrency is tuned with the MAX_*_EXECUTIONS variables, which matter on a small box: a chat download can take about 1.9 GB of memory each, and a chat render is CPU-heavy. Two operational details from the documentation are worth copying into any deployment — a clean shutdown can take up to about 80 seconds, so the compose file sets stop_grace_period: 90s (on Kubernetes, terminationGracePeriodSeconds: 90), and a fatal process error exits with code 0, so the restart policy should be unless-stopped or always, not on-failure. The API container can run as a non-root user by setting PUID and PGID.

Ganymede is released under the GNU General Public License v3.0, with the full source on GitHub — self-hosting, modifying and redistributing it are all permitted under that licence.

Who it is for

People who want to keep Twitch material they care about — their own streams, a community’s broadcasts, or a record of how a scene developed — without depending on Twitch’s retention window. It fits a home server or NAS with a few hundred gigabytes to spare and someone comfortable editing a compose file and registering a Twitch application. It is a service you run, not a desktop download, and it expects a real PostgreSQL alongside it.

Related tools

  • yt-dlp — the downloader Ganymede credits in its acknowledgements; handy on its own for one-off captures.
  • Owncast — self-hosted live streaming, for when you would rather broadcast on your own server than archive someone else’s.
  • PeerTube — federated video hosting for publishing what you keep.

Explore More Categories

Sign In

Register

Reset Password

Please enter your username or email address, you will receive a link to create a new password via email.