Help us shape the future of Go! Take the 2026 Go Developer Survey

ether

module
v0.2.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 20, 2026 License: GPL-3.0

README

Ether

The whole movie and TV catalogue, inside the Plex app your family already uses.

Press Play on any title. Ether finds a good release on your Usenet provider or your debrid account
and streams it straight to the TV. Nothing to download first, nothing to request, nothing to clean up later.

Latest release Platforms GPL-3.0 No telemetry

Install · How it works · What it replaces · FAQ · Status


Ether is a self-hosted server that the official Plex apps see as a normal Plex Media Server. There's no library folder behind it. Instead it shows the full TMDB catalogue, and when someone presses Play it searches your indexers and streams a release from your Usenet provider or debrid account (Real-Debrid, TorBox, AllDebrid, Premiumize), or from both. Seeking works too.

It runs as one process, set up in a web page. Native installers for macOS, Windows and Linux, plus a Docker image. No YAML, no FUSE, no rclone mounts, no 50 TB array.

What your family sees What you stop doing
The same Plex app on the same TV, with every title already there Running Sonarr, Radarr, Prowlarr, SABnzbd and a mount, and keeping them all in sync
A Home screen that learns what each of them likes Answering "can you add…?" texts and approving requests
Skip Intro and Skip Credits, subtitles in their language Buying drives, then running cleanup tools to free space
A link from you, a Plex sign-in, and they're watching Being tech support for a separate request portal

How it works

  Plex app (TV, phone, web)
        │  browse · search · Play
        ▼
  ┌──────────── Ether ─────────────────────────────────────────┐
  │ catalogue    TMDB mirror, artwork, collections, your rows   │
  │ resolver     searches your indexers, ranks by your profile  │
  │ health       checks articles / debrid cache before Play     │
  │ stream       byte ranges on demand: NNTP or HTTPS           │
  │ transcode    direct play, remux, or HW transcode (FFmpeg)   │
  └─────────────────────────────────────────────────────────────┘
        │                                   │
   your Usenet providers             your debrid accounts
   + Newznab indexers                + Torznab / built-in sites
  1. Browse. Ether serves TMDB metadata, artwork, cast, collections and franchises in the shapes the Plex apps expect, so detail pages, posters and backdrops look like any other Plex library.
  2. Press Play. Ether searches your indexers, ranks the results against your quality profile (4K, 1080p, 720p, custom formats), and checks that the release is really there. For Usenet it samples articles across providers. For debrid it uses only torrents your service already has cached.
  3. Watch. Ether reads only the bytes the player asks for. Usenet posts are mapped straight to article ranges, including store-mode RAR4, RAR5 and 7z sets, with no extraction step. Debrid files stream over HTTPS range requests. Seeking jumps to the right keyframe and fetches just those bytes.
  4. If something breaks mid-movie, Ether tries your other providers first. If that fails, it switches to the next good release at the same timestamp and carries on.

Already-watched and in-progress titles sit in a self-trimming disk cache (50 GiB by default). Resuming or rewatching doesn't fetch the same bytes again, and the next episode warms up while the credits roll.


What you can stop running

Ether isn't a frontend over your existing stack. It replaces most of it with one process. Credit where it's due: these tools showed what people want, and several are why Ether exists.

You run this today In Ether
Sonarr / Radarr Nothing to grab ahead of time. Quality profiles and custom formats apply the moment someone presses Play.
Prowlarr Newznab and Torznab indexers built in, plus Cardigann-format site definitions you install yourself. Imports your Prowlarr indexers in one click.
SABnzbd / NZBGet + rclone, NzbDAV, AltMount Usenet streaming built in. No download folder, no mount.
zurg + rclone, Decypharr, Riven, plex_debrid Debrid streaming built in. No WebDAV mount, no symlink farm.
Overseerr / Jellyseerr No request queue. Everything is already browsable. Optionally reads viewers' Plex and Trakt watchlists and tells them when a title is ready.
Kometa Collections, franchises, rotating rows and poster overlays (4K, HDR, DV, Atmos, IMDb, RT, Letterboxd), all built in the web UI.
Tautulli + Notifiarr Now playing, history, stats, provider usage. Alerts to Discord, Slack, Telegram, email, ntfy, Gotify and webhooks.
Bazarr Missing subtitles fetched from OpenSubtitles and auto-synced to the release that's playing.
Maintainerr / storage cleanup Nothing to delete. The cache evicts itself.
ErsatzTV / Tunarr / Threadfin 24/7 virtual channels from your collections, plus M3U/XMLTV and Xtream sources, in Plex's own Live TV guide.

Keep your Plex Media Server for media you own on disk. Ether doesn't index local files. Both servers sit side by side in the same Plex app.


What's inside

Sources: Usenet, debrid, or both
  • Usenet: multiple providers with priorities and backfill/block accounts used only for missing articles. Warm connection pools, a circuit breaker per provider, and health checks that read real article bodies mid-file, not just STAT. PAR2 is used to name obfuscated posts and verify them, never for slow repair.
  • Debrid: Real-Debrid, TorBox, AllDebrid and Premiumize. Cached torrents only (uncached ones are removed again), and only the episode's file from a season pack. Read-ahead adapts to your connection.
  • Both: set a preference, or leave it on auto. Ether never trades quality for speed. Within the best quality tier, whichever source has measurably started faster for you goes first, and the other stays ready as a failover.
  • Indexers: Newznab, Torznab, and built-in sites from Cardigann YAML definitions you supply (FlareSolverr optional). Search results are cached, and per-indexer daily API and grab caps are respected.
  • Release control: pick, pin or block a release per title, see why each candidate won or lost, and choose from versions (4K HDR, 1080p high compatibility, Extended Cut) in Plex's own Play Version menu.
Playback that behaves like a real Plex server
  • Direct play, copy-only remux, or transcode to HLS / DASH, with hardware encoding on NVIDIA (NVENC), Intel (Quick Sync), VAAPI and Apple VideoToolbox. Each encoder is test-run first, with automatic fallback to CPU. FFmpeg is bundled.
  • Skip Intro and Skip Credits from chapter marks and TheIntroDB, aligned to the exact release being played. Credits markers stop before mid- and post-credits scenes.
  • Scrubbing thumbnails, Dolby Vision handling for Apple TV, per-viewer audio and subtitle language preferences, and offline downloads through the Plex app's own Download button.
  • Remote streaming over *.plex.direct certificates, UPnP/NAT-PMP, or your own reverse proxy and domain.
A Home screen that's different for each person
  • Each viewer gets a taste profile learned from what they finish, rewatch, abandon and rate, not just what they clicked.
  • Rows such as Because you watched, Hidden gems, Finish the franchise, Short on time and Top 10, re-ranked per viewer, device and time of day. Weeknight phone sessions get shorter picks; weekend TV evenings get the epics. No single franchise floods a row.
  • Home Designer: pin, hide, schedule or limit rows for everyone or one person, with a live preview.
  • Search the way people talk: "90s thrillers under 100 minutes" or "cozy rainy-day sci-fi" in the normal Plex search bar. This runs locally with no AI. An LLM (Ollama, LM Studio or any OpenAI-compatible endpoint) is optional and off by default.
Sharing without the tech-support calls
  • Invite links: send a link. They sign in with Plex and land on the libraries, limits and rules you chose ahead of time.
  • Per-person rules: stream limits, max content rating, blocked genres or keywords, bitrate caps, allowed hours, remote access on or off. One-click kids presets by age. Rules apply to every request, including artwork and search.
  • Plex Home users and PINs work as normal. Revoking a share in Plex removes that person from Ether.
  • Moving over: import watch state, history, ratings, collections and playlists from an existing Plex Media Server (read-only on the old server), plus Letterboxd and Trakt CSVs.
For the homelab crowd
  • Pure Go, no CGO. Data lives in SQLite with scheduled integrity-checked backups (daily, keep 7).
  • Optional high availability: two or more nodes on your own PostgreSQL show up in Plex as one server, with leader election and rolling updates.
  • Signed (ed25519) updates on stable and beta channels. Auto-update is off by default.
  • Community templates for Unraid, TrueNAS SCALE, Proxmox and Synology in packaging/community.

Install in five minutes

Platform Get it Notes
macOS 13+ Ether-<version>.dmg Menu-bar app, Apple Silicon and Intel. Not notarised yet: right-click → Open the first time.
Windows (x64) EtherSetup-<version>.exe Runs as a Windows service with a tray icon. Unsigned for now, so SmartScreen will ask.
Linux .deb / .rpm (amd64, arm64) systemd service, runs as its own ether user.
Docker ghcr.io/braedonsaunders/ether (amd64, arm64) See below. Unraid/TrueNAS/Proxmox templates in packaging/community.
services:
  ether:
    image: ghcr.io/braedonsaunders/ether:latest
    container_name: ether
    restart: unless-stopped
    network_mode: host            # needed for Plex apps to discover it on your LAN
    environment:
      TZ: Etc/UTC
    volumes:
      - ./config:/config
      - ./cache:/cache            # choose /cache as the cache folder during setup
    # devices: ["/dev/dri:/dev/dri"]   # Intel/AMD hardware transcoding

Then open http://localhost:32400/ether/ and follow the setup wizard:

  1. Sign in with Plex and claim the server. It shows up in your Plex apps right away.
  2. Add a source: a Usenet provider plus a Newznab indexer, or skip those steps and add a debrid account under Sources › Debrid afterwards.
  3. Pick a cache folder and size. An SSD is best; 50 GiB is plenty to start.
  4. Paste a free TMDB API key, plus any optional extras (Trakt, OpenSubtitles, a local LLM).
  5. Share it from Plex as usual, or send an invite link from Ether.

You'll need: a Plex account, a TMDB API key (free), and at least one Usenet provider + indexer or one debrid account + torrent indexer. Ether ships with none of these. For hardware, 2 CPU cores and 2 GB RAM is a reasonable start if your clients direct-play.

Full guides: Installation · User guide · How it's built (spec)


Questions you're about to ask

Do I need Plex Pass?

At home, no. To stream outside your home, yes. Ether follows Plex's rules exactly as a real Plex Media Server does. Remote playback needs Plex Pass on the server owner's account or a Remote Watch Pass on the viewer's account, and there's no remote streaming without one.

Ether doesn't emulate, unlock or work around Plex Pass or any other paid Plex feature. Every viewer signs in with their own Plex account, sharing goes through plex.tv, and each account gets exactly the entitlements Plex has given it. Ether doesn't sell or provide Plex Pass. If you use the Plex apps, support Plex.

Which Plex apps work?

All of the native Plex apps: Apple TV, iPhone and iPad, Android and Android TV, Fire TV, Roku, smart TVs, consoles, and Plex Web in the browser. To the app, Ether is just another Plex server on your account, so there's nothing to install on the TV and nothing new for anyone to learn.

Does it download whole movies? How much disk does it use?

No. It fetches the byte ranges being watched, plus a bit of read-ahead, into a bounded cache that you size (50 GiB by default; a 20 Mbit/s stream uses about 150 MB a minute). Old data is evicted on its own. Nothing is ever offered as a file for keeping.

Won't this hammer my indexers and Usenet provider?

It's built not to. Indexers are searched when someone opens or plays a title, or when the next episode is coming up. If you turn on watchlist checks, watchlisted titles are re-checked every few hours (every 6 by default). Ether never crawls the catalogue. Results are cached, and per-indexer daily API and grab caps are respected. Health checks sample about a dozen articles, not the whole file. Resumes and rewatches come from the local cache. Connection counts are capped per provider, and backfill accounts are used only for articles your main provider is missing.

Some indexers forbid streaming use in their rules. Read your indexer's terms. Ether doesn't override them for you.

Will my debrid account get flagged for multiple IPs?

Every stream is fetched by your Ether server and relayed to the viewer. Your debrid service sees one IP, the server's, no matter where your family is watching from. If you run an HA cluster, keep the nodes behind one public IP.

Can I run it next to my existing Plex server?

Yes, and that's the intended setup if you have media on disk. Run them on different machines, or give Ether a different port (both default to 32400). Each shows up as its own server in the Plex app.

What does it phone home to?

There's no telemetry or analytics. Ether only talks to plex.tv (sign-in, claiming, sharing), TMDB, the providers, indexers and accounts you configure, any optional services you turn on, and GitHub's release feed when checking for updates. Viewer sign-in goes through plex.tv, the same as with a real Plex server.

Was this written with AI?

Yes, and here's how. Ether has one maintainer, who writes the spec (docs/design.md) and directs AI coding agents (mostly Claude) that write much of the code, and the commits say so. What keeps it honest: about 1,600 unit tests that run offline against fake providers, indexers and debrid APIs. Protocol responses are diffed against recordings from a real Plex Media Server, and playback is checked on real Plex clients. You can judge it yourself: the whole repo is GPL-3.0.


Where it stands today

Ether is early (v0.2). It works, and it hasn't yet been battle-tested on thousands of servers.

Area Status
Catalogue, browse, search, Home rows, collections Working
Usenet streaming, health checks, failover Working
Native Plex apps (TV, mobile, web) Working
Debrid (Real-Debrid, TorBox, AllDebrid, Premiumize) Experimental. Built from the public API docs and tested against simulated services, not yet against live accounts
Live TV, virtual channels Working, less mileage
HA cluster on PostgreSQL Advanced, for people who already run PostgreSQL

Known limits:

  • Usenet archives must be store-mode; compressed or encrypted RARs are skipped.
  • Torrents with the video inside RARs are skipped.
  • No Plex Relay, so remote viewers need a direct connection (UPnP, a port forward or a reverse proxy).
  • No local-file libraries; use Plex Media Server for those.
  • No DVR.
  • Cardigann sites that need a captcha to sign in aren't supported.

Found a bug? Open an issue with your Ether version, OS, the Plex app and version, what you did, and what happened. Remove credentials from logs first.


Ether is an independent, clean-room implementation of the protocol the Plex apps use to talk to a media server. It contains no Plex code. It ships no media, no Usenet providers, no indexers, no site definitions, no debrid accounts and no API keys. You bring your own, and you're responsible for what you connect it to and for following the law where you live and the terms of the services you use. See LEGAL.md.

"Plex" is a trademark of Plex, Inc. Ether is not affiliated with, sponsored by or endorsed by Plex, Inc. This product uses the TMDB API but is not endorsed or certified by TMDB.

GPL-3.0 · Third-party notices

Directories

Path Synopsis
cmd
ether command
Command ether runs the Ether server: a Plex Media Server-compatible front end over a TMDB catalogue, streaming from Usenet on demand.
Command ether runs the Ether server: a Plex Media Server-compatible front end over a TMDB catalogue, streaming from Usenet on demand.
ether-livebench command
Command ether-livebench measures time-to-playable against real services: it resolves a title over the owner's indexers and Usenet providers, opens it, reads the first bytes, seeks, and probes it.
Command ether-livebench measures time-to-playable against real services: it resolves a title over the owner's indexers and Usenet providers, opens it, reads the first bytes, seeks, and probes it.
ether-release-sign command
Command ether-release-sign manages Ether's release-signing keys and signs update manifests.
Command ether-release-sign manages Ether's release-signing keys and signs update manifests.
ether-tray command
Command ether-tray is Ether's tray / menu-bar companion: it shows server status, opens the web UI, starts/stops the service, checks the signed update feed (notify only: the server installs updates itself) and can launch at login.
Command ether-tray is Ether's tray / menu-bar companion: it shows server status, opens the web UI, starts/stops the service, checks the signed update feed (notify only: the server installs updates itself) and can launch at login.
pmsdiff command
pmsdiff records and compares Plex Media Server HTTP responses.
pmsdiff records and compares Plex Media Server HTTP responses.
internal
admin
Package admin is Ether's owner-facing HTTP surface: the JSON API under /ether/api/ and the embedded React SPA (setup wizard, dashboard, settings, logs, resolver traces) served under /ether/.
Package admin is Ether's owner-facing HTTP surface: the JSON API under /ether/api/ and the embedded React SPA (setup wizard, dashboard, settings, logs, resolver traces) served under /ether/.
app
Package app wires Ether's components into one running server: the Plex front end and the owner UI on one port, and the background services (catalogue sync, plex.tv registration, prefetch, LAN discovery) behind it.
Package app wires Ether's components into one running server: the Plex front end and the owner UI on one port, and the background services (catalogue sync, plex.tv registration, prefetch, LAN discovery) behind it.
archive
Package archive reads the headers of RAR (4.x and 5.x) and 7z archives and maps each inner file onto byte ranges (extents) of the archive volumes, so that store-mode (uncompressed, unencrypted) members can be streamed straight out of the volumes without extracting anything.
Package archive reads the headers of RAR (4.x and 5.x) and 7z archives and maps each inner file onto byte ranges (extents) of the archive volumes, so that store-mode (uncompressed, unencrypted) members can be streamed straight out of the volumes without extracting anything.
archive/archivetest
Package archivetest builds small RAR 4.x / RAR 5.0 archives (and Copy-mode 7z archives) for tests.
Package archivetest builds small RAR 4.x / RAR 5.0 archives (and Copy-mode 7z archives) for tests.
artwork
Package artwork serves and makes Ether's artwork: a caching proxy for TMDB images (memory LRU over a disk cache) and a pure-Go poster generator for collections (collage and backdrop treatments with the title set in the Go fonts).
Package artwork serves and makes Ether's artwork: a caching proxy for TMDB images (memory LRU over a disk cache) and a pure-Go poster generator for collections (collage and backdrop treatments with the title set in the Go fonts).
auth
Package auth implements core.Auth: it maps the X-Plex-Token a Plex app presents to an Ether user, and keeps the users table with per-user settings (stream limit, content rating cap, languages, sections).
Package auth implements core.Auth: it maps the X-Plex-Token a Plex app presents to an Ether user, and keeps the users table with per-user settings (stream limit, content rating cap, languages, sections).
backup
Package backup creates integrity-checked, portable snapshots without copying live WAL files.
Package backup creates integrity-checked, portable snapshots without copying live WAL files.
cardigann
Package cardigann runs owner-supplied indexer definitions written in the Cardigann YAML format (the format Prowlarr and Jackett use for their built-in sites).
Package cardigann runs owner-supplied indexer definitions written in the Cardigann YAML format (the format Prowlarr and Jackett use for their built-in sites).
catalog
Package catalog implements core.Catalog: a SQLite mirror of a filtered TMDB slice plus on-demand fetches for anything else.
Package catalog implements core.Catalog: a SQLite mirror of a filtered TMDB slice plus on-demand fetches for anything else.
cluster
Package cluster is Ether's multi-node runtime: node identity, liveness heartbeats, leader election and a small cross-node event bus.
Package cluster is Ether's multi-node runtime: node identity, liveness heartbeats, leader election and a small cross-node event bus.
clusterbus
Package clusterbus is the small surface components use to take part in a cluster: publishing and receiving events on the cluster bus, knowing their own node ID and which nodes are alive, and dropping in-memory caches when another node writes the shared database (Invalidator).
Package clusterbus is the small surface components use to take part in a cluster: publishing and receiving events on the cluster bus, knowing their own node ID and which nodes are alive, and dropping in-memory caches when another node writes the shared database (Invalidator).
clusterconfig
Package clusterconfig keeps the settings and identity material that the nodes of an Ether cluster share in the owner's PostgreSQL database:
Package clusterconfig keeps the settings and identity material that the nodes of an Ether cluster share in the owner's PostgreSQL database:
collections
Package collections is Ether's collection engine.
Package collections is Ether's collection engine.
config
Package config is Ether's owner-editable settings, stored as JSON in the data directory.
Package config is Ether's owner-editable settings, stored as JSON in the data directory.
core
Package core holds the domain types and the interfaces between Ether's components.
Package core holds the domain types and the interfaces between Ether's components.
debrid
Package debrid streams torrent releases through owner-configured debrid services (Real-Debrid, TorBox, AllDebrid, Premiumize).
Package debrid streams torrent releases through owner-configured debrid services (Real-Debrid, TorBox, AllDebrid, Premiumize).
episodeorder
Package episodeorder provides presentation-only TV ordering.
Package episodeorder provides presentation-only TV ordering.
extras
Package extras lists and resolves trailers and other clips attached to catalogue titles (Plex "Extras" and Cinema Trailers).
Package extras lists and resolves trailers and other clips attached to catalogue titles (Plex "Extras" and Cinema Trailers).
faillog
Package faillog logs a repeating background failure (a heartbeat or sync loop that cannot reach the database) without flooding the log: the first failure is logged at WARN, later ones are summarised at most once per interval, and the recovery is logged once at INFO.
Package faillog logs a repeating background failure (a heartbeat or sync loop that cannot reach the database) without flooding the log: the first failure is logged at WARN, later ones are summarised at most once per interval, and the recovery is logged once at INFO.
invites
Package invites implements expiring invitations with account-bound redemption.
Package invites implements expiring invitations with account-bound redemption.
livetv
Package livetv implements owner-defined virtual channels and IPTV playout.
Package livetv implements owner-defined virtual channels and IPTV playout.
llm
Package llm is an optional multi-provider chat client (OpenAI, Anthropic, Gemini, OpenRouter, Ollama, LM Studio, any OpenAI-compatible server, …) used for natural-language recommendation rows: "more like this" for a title and themed rows from a user's history ("Slow-burn sci-fi with a twist").
Package llm is an optional multi-provider chat client (OpenAI, Anthropic, Gemini, OpenRouter, Ollama, LM Studio, any OpenAI-compatible server, …) used for natural-language recommendation rows: "more like this" for a title and themed rows from a user's history ("Slow-burn sci-fi with a twist").
logfile
Package logfile provides Ether's on-disk logs: a size-rotated log file (stderr is discarded under a Windows service and unrotated under launchd) and the crash log that receives fatal runtime traces.
Package logfile provides Ether's on-disk logs: a size-rotated log file (stderr is discarded under a Windows service and unrotated under launchd) and the crash log that receives fatal runtime traces.
markers
Package markers supplies release-duration-specific skip ranges.
Package markers supplies release-duration-specific skip ranges.
migrate
Package migrate performs read-only PMS discovery and reviewed, idempotent local imports.
Package migrate performs read-only PMS discovery and reviewed, idempotent local imports.
newznab
Package newznab implements core.Indexer against Newznab-compatible Usenet indexers, with per-indexer daily budgets and a result cache.
Package newznab implements core.Indexer against Newznab-compatible Usenet indexers, with per-indexer daily budgets and a result cache.
notify
Package notify provides durable, rule-filtered owner notifications.
Package notify provides durable, rule-filtered owner notifications.
nzb
Package nzb parses NZB documents: the XML index of a Usenet post that lists every file, its newsgroups and the message IDs of its segments (articles).
Package nzb parses NZB documents: the XML index of a Usenet post that lists every file, its newsgroups and the message IDs of its segments (articles).
overlays
Package overlays creates truthful, versioned poster variants in pure Go.
Package overlays creates truthful, versioned poster variants in pure Go.
par2
Package par2 parses the metadata packets of PAR2 2.0 files.
Package par2 parses the metadata packets of PAR2 2.0 files.
par2/par2test
Package par2test builds PAR2 2.0 metadata packets and index files for tests.
Package par2test builds PAR2 2.0 metadata packets and index files for tests.
personalize
Package personalize is Ether's Netflix-style personalization engine.
Package personalize is Ether's Netflix-style personalization engine.
playback
Package playback implements core.Playback: it binds a user, a client and a title to a resolved, open release, enforces stream limits, serves the source to clients (direct play) and to ffmpeg (a loopback HTTP server), fails over to another release mid-stream when articles go missing, and protects the releases of live and in-progress titles in the segment cache.
Package playback implements core.Playback: it binds a user, a client and a title to a resolved, open release, enforces stream limits, serves the source to clients (direct play) and to ffmpeg (a loopback HTTP server), fails over to another release mid-stream when articles go missing, and protects the releases of live and in-progress titles in the segment cache.
plex
Package plex is Ether's Plex Media Server front end: the HTTP API that official Plex apps (Web, iOS, Apple TV, Android, TVs) talk to.
Package plex is Ether's Plex Media Server front end: the HTTP API that official Plex apps (Web, iOS, Apple TV, Android, TVs) talk to.
plex/model
Package model holds the Plex Media Server response models and the encoder that renders one model as either PMS-style XML or PMS-style JSON.
Package model holds the Plex Media Server response models and the encoder that renders one model as either PMS-style XML or PMS-style JSON.
plexguid
Package plexguid maps verified external identities through Plex's metadata provider.
Package plexguid maps verified external identities through Plex's metadata provider.
plextv
Package plextv is Ether's plex.tv client: PIN sign-in, server claim, connection publishing, resources, shared users and their server access tokens, and plex.direct certificates.
Package plextv is Ether's plex.tv client: PIN sign-in, server claim, connection publishing, resources, shared users and their server access tokens, and plex.direct certificates.
pmsconform
Package pmsconform captures and compares the HTTP surface exposed by Plex Media Servers.
Package pmsconform captures and compares the HTTP surface exposed by Plex Media Servers.
prefetch
Package prefetch warms the segment cache in the background so the next episode and the resume point of in-progress titles start instantly.
Package prefetch warms the segment cache in the background so the next episode and the resume point of in-progress titles start instantly.
ratings
Package ratings caches licensed, owner-keyed rating data.
Package ratings caches licensed, owner-keyed rating data.
recommend
Package recommend supplies detail-page related rows.
Package recommend supplies detail-page related rows.
releaseparse
Package releaseparse parses scene and P2P release names into core.ReleaseInfo.
Package releaseparse parses scene and P2P release names into core.ReleaseInfo.
remote
Package remote handles Ether's network presence: LAN address enumeration, WAN IP detection, Plex connection URIs (plain IP and *.plex.direct), UPnP IGD and NAT-PMP port mapping, GDM LAN discovery and reachability probes.
Package remote handles Ether's network presence: LAN address enumeration, WAN IP detection, Plex connection URIs (plain IP and *.plex.direct), UPnP IGD and NAT-PMP port mapping, GDM LAN discovery and reachability probes.
resolver
Package resolver implements core.Resolver: it turns a catalogue title plus client capabilities into a health-checked release.
Package resolver implements core.Resolver: it turns a catalogue title plus client capabilities into a health-checked release.
safety
Package safety persists owner policy and enforces it at Plex request boundaries.
Package safety persists owner policy and enforces it at Plex request boundaries.
segcache
Package segcache is Ether's on-disk cache of decoded Usenet segments.
Package segcache is Ether's on-disk cache of decoded Usenet segments.
service
Package service runs Ether as an operating-system service: systemd on Linux, launchd on macOS and the Service Control Manager on Windows, via github.com/kardianos/service.
Package service runs Ether as an operating-system service: systemd on Linux, launchd on macOS and the Service Control Manager on Windows, via github.com/kardianos/service.
spike
Package spike serves a handful of local video files as a Plex library so the Plex front end (internal/plex) can be tested against official Plex apps before the Usenet engine exists.
Package spike serves a handful of local video files as a Plex library so the Plex front end (internal/plex) can be tested against official Plex apps before the Usenet engine exists.
spike/cmd/ether-spike command
Command ether-spike serves local video files through Ether's Plex front end, for testing official Plex apps (and pmsdiff) before the Usenet engine is wired in.
Command ether-spike serves local video files through Ether's Plex front end, for testing official Plex apps (and pmsdiff) before the Usenet engine is wired in.
state
Package state implements per-user watch state and playlists over SQLite: core.State and core.Playlists.
Package state implements per-user watch state and playlists over SQLite: core.State and core.Playlists.
stats
Package stats records owner analytics from observed playback and provider data.
Package stats records owner analytics from observed playback and provider data.
store
Package store opens Ether's database and applies each component's migrations.
Package store opens Ether's database and applies each component's migrations.
stream
Package stream is Ether's stream engine: it turns an NZB into a seekable core.MediaSource without writing the full file anywhere.
Package stream is Ether's stream engine: it turns an NZB into a seekable core.MediaSource without writing the full file anywhere.
subtitles
Package subtitles fetches missing subtitle languages from OpenSubtitles and serves them as external (sidecar) tracks.
Package subtitles fetches missing subtitle languages from OpenSubtitles and serves them as external (sidecar) tracks.
sysload
Package sysload samples this machine's load for the owner Overview: CPU, memory, network throughput, GPU (when the platform reports it) and Ether's own CPU and memory.
Package sysload samples this machine's load for the owner Overview: CPU, memory, network throughput, GPU (when the platform reports it) and Ether's own CPU and memory.
tmdb
Package tmdb is a TMDB API v3 client with rate limiting, retries, request coalescing and an ETag/TTL response cache.
Package tmdb is a TMDB API v3 client with rate limiting, retries, request coalescing and an ETag/TTL response cache.
trackprefs
Package trackprefs persists viewer stream policy and show-specific choices.
Package trackprefs persists viewer stream policy and show-specific choices.
trakt
Package trakt is the optional per-user Trakt integration: OAuth device flow sign-in, scrobbling Ether watch events to Trakt, and pulling Trakt history / recommendations / watchlist back in as recommendation sources.
Package trakt is the optional per-user Trakt integration: OAuth device flow sign-in, scrobbling Ether watch events to Trakt, and pulling Trakt history / recommendations / watchlist back in as recommendation sources.
transcode
Package transcode wraps Ether's bundled ffmpeg: discovery, hardware encoder detection, probing, the direct play / remux / transcode decision and HLS and MPEG-DASH sessions.
Package transcode wraps Ether's bundled ffmpeg: discovery, hardware encoder detection, probing, the direct play / remux / transcode decision and HLS and MPEG-DASH sessions.
updater
Package updater implements Ether's signed self-update feed.
Package updater implements Ether's signed self-update feed.
usenet
Package usenet is Ether's Usenet layer: an NNTP client, per-provider connection pools with priority scheduling and circuit breakers, and a multi-provider fetcher that implements core.ArticleFetcher with primary-first ordering and backfill from block accounts.
Package usenet is Ether's Usenet layer: an NNTP client, per-provider connection pools with priority scheduling and circuit breakers, and a multi-provider fetcher that implements core.ArticleFetcher with primary-first ordering and backfill from block accounts.
usenet/nntptest
Package nntptest provides an in-memory NNTP server for tests across Ether: articles keyed by message-id (yEnc-encoded on the way in), optional AUTHINFO, TLS, missing articles, latency, a connection limit and fault injection, plus Post, which uploads files as multipart yEnc segments and returns a matching NZB document.
Package nntptest provides an in-memory NNTP server for tests across Ether: articles keyed by message-id (yEnc-encoded on the way in), optional AUTHINFO, TLS, missing articles, latency, a connection limit and fault injection, plus Post, which uploads files as multipart yEnc segments and returns a matching NZB document.
watchlist
Package watchlist ingests authorized viewers' watchlists and lazily checks their release availability.
Package watchlist ingests authorized viewers' watchlists and lazily checks their release availability.
yenc
Package yenc implements the yEnc binary encoding used for Usenet binary posts (http://www.yenc.org/yenc-draft.1.3.txt): a fast streaming decoder with =ybegin/=ypart/=yend parsing and CRC32 verification, and an encoder used by tests and the fake NNTP server.
Package yenc implements the yEnc binary encoding used for Usenet binary posts (http://www.yenc.org/yenc-draft.1.3.txt): a fast streaming decoder with =ybegin/=ypart/=yend parsing and CRC32 verification, and an encoder used by tests and the fake NNTP server.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL