Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

298 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Conduit

Conduit is an open-source, self-hosted media application built around Stremio-compatible add-ons. The server synchronizes households, profiles, installed add-ons, libraries, and watch progress; clients contact add-ons and media sources directly.

The project is under active development. The web and desktop clients are available today, and the shared Android/iOS mobile client is in release preparation. Treat current deployments and mobile builds as pre-release installations and keep profile exports and database backups.

What Conduit does

  • Shared household profiles with independent libraries and watch history
  • Stremio-compatible catalogs, metadata, streams, and subtitles
  • Web and Electron desktop clients backed by one shared interface
  • Android and iOS clients with shared Compose UI and native playback
  • Portable profile import/export
  • Local password accounts without an email-delivery dependency
  • Google OAuth or administrator-configured OpenID Connect
  • Recovery codes and machine-local administrator recovery

Quick development setup

Prerequisites are provided by the Nix flake:

direnv allow
cp .env.example .env
docker compose -f compose.source.yaml -f compose.dev.yaml up -d postgres
pnpm install
pnpm core:build
pnpm db:migrate
pnpm dev

The web client runs at http://localhost:5173 and the API server at http://localhost:3000.

See Development for repository structure, individual commands, tests, database migrations, and desktop requirements.

Install the desktop app on Linux

Install the signed Flatpak repository and Conduit for the current user:

flatpak remote-add --user --if-not-exists conduit \
  https://davidvanderklay.github.io/conduit/conduit.flatpakrepo
flatpak install --user conduit media.conduit.desktop

Later releases are delivered through the normal flatpak update flow. See Desktop releases for update, removal, and troubleshooting instructions. A standalone .flatpak bundle remains available on each GitHub release as a fallback.

Self-hosting with Docker

Download the deployment files into any empty directory. No source checkout or local image build is required:

mkdir conduit && cd conduit
release=v0.1.2-alpha.12
curl -fsSLO "https://github.com/davidvanderklay/conduit/releases/download/${release}/compose.yaml"
curl -fsSLO "https://github.com/davidvanderklay/conduit/releases/download/${release}/.env.docker.example"
cp .env.docker.example .env
# Edit .env, replace every replace-with-* value, and pin CONDUIT_VERSION to the
# downloaded release without the leading v (for example 0.1.2-alpha.12).
docker compose up -d

Open http://localhost:8321. The default first-owner flow requires the private CONDUIT_BOOTSTRAP_TOKEN from .env. The default port binds to localhost; set CONDUIT_BIND_ADDRESS=0.0.0.0 only when deliberate LAN or router exposure is wanted. See Deployment and operations for reverse proxies, backups, bootstrap modes, and upgrades.

Documentation

Authentication summary

The first account becomes the instance owner. Local registration closes by default after that account is created. The owner can configure Google directly or connect a custom OpenID Connect provider from /admin.

Users may link OAuth and disable their local password. Before doing that they should save recovery codes and verify the OAuth login in a separate browser. An operator with shell access can restore local login without enumerating users:

pnpm admin:recover

The command prompts for one account email and prints a single-use recovery link that expires after ten minutes. See Authentication for the complete security and recovery model.

Data and privacy model

Account identities are separate from household profile names. Conduit does not request a personal name during local registration. Google login requests only OpenID and email identity scopes.

Configured add-on URLs are encrypted in PostgreSQL. OAuth client secrets are also encrypted and OAuth tokens are encrypted by Better Auth. Clients fetch add-on catalogs, metadata, streams, and subtitles directly; the sync server does not proxy add-on or media traffic.

Profile exports protect portable user data, while recovery codes protect account access. They solve different problems, and users should keep both.

Current direction

The mobile clients now cover server selection, local and OAuth sign-in, households and profiles, add-on catalogs, search, libraries, watch history, continue watching, native stream playback, subtitles, and synchronized watch progress. They also retain an encrypted profile snapshot for limited offline access to library and history state; media is not downloaded for offline playback. See Mobile development and release for the current support boundary and packaging path.

The next major product targets are mobile release hardening and TV-oriented experiences including tvOS. Longer-term work includes first-class Jellyfin/Plex integration for unified progress and library workflows. See the detailed Roadmap.

Conduit is intentionally not becoming a general reader or media inbox. YouTube, RSS, audiobooks, and podcast aggregation are outside the current product scope; the focus remains a cohesive film and television experience.

License

Conduit is licensed under the MIT License. See LICENSE and THIRD_PARTY_NOTICES.md.

About

Self-hosted film and television client with web and desktop apps.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages