Shelly guideSecurity & privacy
Built as if it handled real store data: least privilege, human confirmation, audit trails and a locked-down web page.
At a glance
- Content Security Policy: own scripts only; network calls only to localhost and the Claude API
- API keys are session-only unless you choose 'Remember'; one-click 'Clear all Shelly data'
- Inputs capped and cleaned; LLM calls rate-limited; all output HTML-escaped
- Python: SQL identifiers validated, raw SQL off by default, no path traversal, HTTPS-only connectors, decision imports schema-checked
- Append-only decision log and SHA-256 hashed validation reports
How it works
- See SECURITY.md in the repository for the full design and known limits.
- Tests in tests/test_security_router.py prove each control.
Limits & safeguards
- GitHub Pages can't send HTTP security headers, so the CSP is set by a meta tag (no frame-ancestors protection).