Castor collects no telemetry. Logs, traces and metrics leave the machine only when you set telemetry.endpoint, and then only to that collector.
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.
Warning
A standalone server without a token lets anyone who can reach it start casts, or make the scraping server visit any URL, including addresses on its own network. Set a token on every server that listens beyond localhost; castor logs a warning when one does not.
- 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. - Restrict network access: media accepts streams, not webpage inputs, but the API and scraping act on what callers send.
- 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 }}'Report it privately through GitHub's vulnerability reporting, so it stays out of public view until it is fixed. For anything that is not sensitive, a regular issue is fine.