Skip to content

LLukas22/Jellyswarrm

Repository files navigation

Jellyswarrm

Many servers. Single experience.

Logo Banner

MIT License Current Release

Jellyswarrm is a reverse proxy that lets you combine multiple Jellyfin servers into one place. If you’ve got libraries spread across different locations or just want everything together, Jellyswarrm makes it easy to access all your media from a single interface.


Library

Server Selection User Mappings

Features

Warning

Jellyswarrm is still in early development. It works, but some features are incomplete or missing. If you run into issues, please report them on the GitHub Issues page.

✅ Working

  • Unified Library Access – Browse media from multiple Jellyfin servers in one place.
  • Direct Playback – Play content straight from the original server without extra overhead.
  • User Mapping – Link accounts across servers for a consistent user experience.
  • API Compatibility – Appears as a normal Jellyfin server, so existing apps and tools still work.

⚠️ In Progress

  • QuickConnect – This feature isn’t available yet. Please log in using your username & password for now.
  • Websocket Support – Needed for real-time features like SyncPlay (not fully reliable yet).
  • Audio Streaming – May not function correctly (still untested in many cases).
  • Automatic Bitrate Adjustment – Stream quality based on network conditions isn’t supported yet.

🚫 Not Planned

  • Admin Functions – Server administration (user management, settings, etc.) won’t be supported through Jellyswarrm.

Deployment

The easiest way to run Jellyswarrm is with the prebuilt Docker images. Here’s a minimal docker-compose.yml example to get started:

services:
  jellyswarrm:
    image: ghcr.io/llukas22/jellyswarrm:latest
    container_name: jellyswarrm
    restart: unless-stopped
    ports:
      - 3000:3000
    volumes:
      - ./data:/app/data
    environment:
      - JELLYSWARRM_USERNAME=admin
      - JELLYSWARRM_PASSWORD=jellyswarrm # ⚠️ Change this in production!

Once the container is running, open:

  • Web UI (setup & management): http://[JELLYSWARRM_HOST]:[JELLYSWARRM_PORT]/ui – Log in with the username and password you set in the environment variables. – From here, you can add your Jellyfin servers and configure user mappings.

  • Bundled Jellyfin Web Client: http://[JELLYSWARRM_HOST]:[JELLYSWARRM_PORT]

For advanced configuration options, check out the ui and configuration documentation.


Local Development

Getting Started

To get started with development, you'll need to clone the repository along with its submodules. This ensures you have all the necessary components for a complete build:

git clone --recurse-submodules https://github.com/LLukas22/Jellyswarrm.git

If you've already cloned the repository, you can initialize the submodules separately:

git submodule init
git submodule update
Docker

The quickest way to get Jellyswarrm up and running is with Docker. Simply use the provided docker-compose configuration:

docker compose up -d

This will build and start the application with all necessary dependencies, perfect for both development and production deployments.

Native Build

For a native development setup, ensure you have both Rust and Node.js installed on your system.

First, install the UI dependencies. You can use the convenient VS Code task Install UI Dependencies from the tasks.json file, or run it manually:

cd ui
npm install
cd ..

Once the dependencies are installed, build the entire project with:

cargo build --release

The build process is streamlined thanks to the included build.rs script, which automatically compiles the web UI and embeds it into the final binary for a truly self-contained application.

FAQ

  1. Why not just add multiple servers directly in the Jellyfin app?
    Some Jellyfin apps do support multiple servers, but switching between them can be inconvenient. Jellyswarrm brings everything together in one place and also merges features like Next Up and Recently Added across all servers. This way, you can easily see what’s new in your own libraries or what your friends have added.

  2. Will Jellyswarrm work with my existing Jellyfin apps?
    Most likely! Jellyswarrm presents itself as a standard Jellyfin server, so most clients should work out of the box. That said, not every Jellyfin client has been tested, so a few may have issues.

  3. Why use Jellyswarrm instead of mounting a remote library via e.g. SMB?
    Jellyswarrm is built to connect your servers with your friends’ servers across different networks. Setting up SMB in these cases can be complicated, and performance is often worse. With Jellyswarrm, content is streamed directly from the original server, so all the heavy lifting (like transcoding) happens where the media actually lives.