Skip to content

Security: stuartromanek/louis

Security

SECURITY.md

Security Policy

Supported versions

Security fixes are applied to the latest release on the default branch.

Reporting a vulnerability

Please do not open a public GitHub issue for security vulnerabilities.

Report security issues privately to the repository maintainer via GitHub Security Advisories or direct contact if you have it.

Include:

  • Description of the vulnerability
  • Steps to reproduce
  • Impact assessment
  • Suggested fix (if any)

Scope notes

  • This app stores Yoto OAuth tokens in httpOnly cookies on the server (self-host / Docker). The desktop app also writes tokens to yoto-session.json under Application Support after system-browser Connect — treat that file like a secret.
  • Self-hosters should use HTTPS when exposing Louis beyond a trusted LAN. The Docker image defaults OAuth cookies to LOUIS_COOKIE_SECURE=false (plain HTTP / Portainer / HA LAN). Set true behind TLS / reverse proxy. Node-without-Docker still defaults to Secure when NODE_ENV=production.
  • Do not commit .env, API keys, refresh tokens, or YouTube cookies.txt
  • LOUIS_YTDLP_COOKIES_FILE (when set on any deploy) is a server secret — never expose path or contents via debug routes or API responses; prefer a throwaway Google account
  • Louis builds may include a public Yoto PKCE client ID (not a secret). Desktop setup / Settings can prefill it via Use default client. Self-host still requires an explicit LOUIS_YOTO_CLIENT_ID in .env (no silent fallback). Do not embed YouTube API keys, client secrets, cookies, or OAuth tokens in installers or images — those live in user-writable app data (config.json / env) only. Optional yt-dlp cookies are a user-chosen file path, never shipped inside the DMG/NSIS
  • Treat unsigned desktop builds like any other downloaded binary until release signing is enabled (docs/DESKTOP_SIGNING.md)

Out of scope

  • User-provided fonts or sound assets without redistribution rights

There aren't any published security advisories