Castor collects no telemetry.
Use git-ignored config.local.yaml (overlays config.yaml):
tmdb:
api_key: "<key>"Environment variables such as CASTOR_TMDB__API_KEY override both files. Revoke accidentally committed keys. The TMDB key is used only by the interactive browser and sent only to TMDB.
- Authenticate RPCs: set independent
servers.api.token,servers.media.token, andservers.scraping.token; useAuthorization: Bearer <token>. Health checks are exempt. Default ports:8411,:8410, and:8412bind all interfaces and warn if exposed without tokens. - Restrict network access: unauthenticated callers can start casts or make scraping visit URLs, including its local network. Media accepts streams, not webpage inputs.
- Device playback is open:
/mediacannot require authentication. Anyone who can reach media and knows a cast URL can fetch it;servers.media.advertisedefines the device-reachable address. - Protect credentials in transit: RPCs use plain HTTP by default and carry tokens, stream URLs, and replay headers. Castor serves plain HTTP only: beyond trusted networks, terminate TLS in a reverse proxy and point clients at its
https://URL. IP-bound streams may require scraping and media to share an outbound IP. - Keep replay headers private: they reach media but are stripped from public cast listings.
Only scraping runs Chrome and reads browser/capture settings. It uses an isolated profile and fresh randomized fingerprint, not your browser's cookies or passwords. It visits supplied pages and their loaded resources, following only HTTP(S) frames.
Release images include an SPDX SBOM and SLSA provenance from the delivery workflow:
docker buildx imagetools inspect ghcr.io/stupside/castor:latest --format '{{ json .SBOM }}'
docker buildx imagetools inspect ghcr.io/stupside/castor:latest --format '{{ json .Provenance }}'Open a GitHub issue marked [security], or for sensitive reports, email the maintainer (address on their GitHub profile).