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

internal/

directory
v0.2.31 Latest Latest
Warning

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

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

Directories

Path Synopsis
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/.
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.
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 members can be streamed (with native decryption when needed) 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 members can be streamed (with native decryption when needed) out of the volumes without extracting anything.
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.
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).
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).
Package availability discovers releases incrementally and spends a bounded background allowance validating useful candidates.
Package availability discovers releases incrementally and spends a bounded background allowance validating useful candidates.
Package backup creates integrity-checked, portable snapshots without copying live WAL files.
Package backup creates integrity-checked, portable snapshots without copying live WAL files.
Package cachefill maintains an opt-in, bounded local shelf of complete media sources.
Package cachefill maintains an opt-in, bounded local shelf of complete media sources.
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).
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.
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.
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).
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:
Package collections is Ether's collection engine.
Package collections is Ether's collection engine.
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.
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.
Package debrid streams torrent releases through owner-configured debrid services (Real-Debrid, TorBox, AllDebrid, Premiumize, Debrid-Link, Offcloud).
Package debrid streams torrent releases through owner-configured debrid services (Real-Debrid, TorBox, AllDebrid, Premiumize, Debrid-Link, Offcloud).
Package episodeorder provides presentation-only TV ordering.
Package episodeorder provides presentation-only TV ordering.
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).
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.
Package flight collapses concurrent calls for the same key into one execution whose result every caller shares.
Package flight collapses concurrent calls for the same key into one execution whose result every caller shares.
Package libraryfilter evaluates owner catalogue exclusions without network access.
Package libraryfilter evaluates owner catalogue exclusions without network access.
Package livetv implements owner-defined virtual channels and IPTV playout.
Package livetv implements owner-defined virtual channels and IPTV playout.
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").
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.
Package lru provides a least-recently-used cache bounded by entry count and total cost.
Package lru provides a least-recently-used cache bounded by entry count and total cost.
Package markers supplies release-duration-specific skip ranges.
Package markers supplies release-duration-specific skip ranges.
Package migrate performs read-only PMS discovery and reviewed, idempotent local imports.
Package migrate performs read-only PMS discovery and reviewed, idempotent local imports.
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.
Package notify provides durable, rule-filtered owner notifications.
Package notify provides durable, rule-filtered owner notifications.
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).
Package overlays creates truthful, versioned poster variants in pure Go.
Package overlays creates truthful, versioned poster variants in pure Go.
Package par2 parses PAR2 2.0 metadata and performs bounded GF16 recovery.
Package par2 parses PAR2 2.0 metadata and performs bounded GF16 recovery.
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.
Package personalize is Ether's Netflix-style personalization engine.
Package personalize is Ether's Netflix-style personalization engine.
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.
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.
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.
Package plexguid maps verified external identities through Plex's metadata provider.
Package plexguid maps verified external identities through Plex's metadata provider.
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.
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.
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.
Package ratings caches licensed, owner-keyed rating data.
Package ratings caches licensed, owner-keyed rating data.
Package recommend supplies detail-page related rows.
Package recommend supplies detail-page related rows.
Package releaseparse parses scene and P2P release names into core.ReleaseInfo.
Package releaseparse parses scene and P2P release names into core.ReleaseInfo.
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.
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.
Package retryafter parses HTTP Retry-After values.
Package retryafter parses HTTP Retry-After values.
Package safety persists owner policy and enforces it at Plex request boundaries.
Package safety persists owner policy and enforces it at Plex request boundaries.
Package schedule provides wall-clock deadlines for periodic background work.
Package schedule provides wall-clock deadlines for periodic background work.
Package segcache is Ether's on-disk cache of decoded Usenet segments.
Package segcache is Ether's on-disk cache of decoded Usenet segments.
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.
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.
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.
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.
Package stats records owner analytics from observed playback and provider data.
Package stats records owner analytics from observed playback and provider data.
Package store opens Ether's database and applies each component's migrations.
Package store opens Ether's database and applies each component's migrations.
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.
Package stremio searches Stremio stream addons for torrent releases.
Package stremio searches Stremio stream addons for torrent releases.
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.
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.
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.
Package trackprefs persists viewer stream policy and show-specific choices.
Package trackprefs persists viewer stream policy and show-specific choices.
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.
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.
Package transcodebench implements a reproducible benchmark harness that drives the real transcode.Manager (probe, decision, HLS sessions and ServeSegment) against a loopback range-capable HTTP source serving a local fixture file.
Package transcodebench implements a reproducible benchmark harness that drives the real transcode.Manager (probe, decision, HLS sessions and ServeSegment) against a loopback range-capable HTTP source serving a local fixture file.
Package updater implements Ether's signed self-update feed.
Package updater implements Ether's signed self-update feed.
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.
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.
Package watchlist ingests authorized viewers' watchlists and lazily checks their release availability.
Package watchlist ingests authorized viewers' watchlists and lazily checks their release availability.
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