SceneBridge is an Apache-2.0 local-first automation engine: normalized media and schedule events flow through declarative rules into local smart-home actions. It has no account requirement, no telemetry, and no arbitrary Python evaluation.
python -m venv .venv && . .venv/bin/activate
pip install -e '.[dev]'
scenebridge init
scenebridge validate
scenebridge simulate media.started --dry-run
scenebridge run --dry-runrun stays local. The webhook source binds to 127.0.0.1 by default (and rejects non-local binding); use a local reverse proxy if LAN exposure is genuinely needed. simulate sends a normalized event through the same rules without requiring a real device. devices lists configured targets and doctor reports local configuration health.
Rules match only literal source, type, and payload key/value fields. Templates may interpolate {event.payload.name} and nothing else. There is no eval, imports, shell execution, or expression function language. Values are schema-validated, target actions are debounced/rate-limited, target-origin loops are skipped, snapshots are restored only when saved, brightness/transitions are clamped, and WiZ flashing is a single bounded pulse.
See configuration reference, threat model, Home Assistant example, and WiZ example.
Real media adapters are intentionally outside this MVP. SceneBridge does not claim Apple TV support, does not capture HDMI, and does not bypass DRM.