eufy-sdk-bridge

eufy-sdk-bridge

Docker app from Tursko's Repository

Overview

Eufy SDK Bridge (mega-yfue) is a container that exposes the `eufy-sdk` to the frontend of your choice. It was released alongside mega-yfue's SDK and Home Assistant addon as part of their Home Assistant integration. It ships with go2rtc bundled, so live camera video is available over RTSP, WebRTC, MSE, or HLS with nothing else to install. Note: This is a brand new SDK, built to replace eufy-security-ws. There will be bugs. Container tags: `:latest` and `:dev`.

ha-eufy-sdk-bridge

CI node license

The host-facing daemon: one process that logs into eufy once and exposes the eufy-sdk to a frontend — Home Assistant, a web UI, anything. Ships as a multi-arch Docker image with go2rtc bundled, so live camera video is available as RTSP / WebRTC / MSE / HLS with nothing else to install.

WS    :3000/ws             control, state, events     ← the frontend talks to this
HTTP  :3000/stream/<sn>    live video (Annex-B)       ← go2rtc pulls this
HTTP  :3000/snapshot/<sn>  a JPEG still
HTTP  :3000/healthz        which cameras are streaming

Video is deliberately not on the WebSocket: the WS hands back a URL, and connecting to that URL is what starts the camera — disconnecting is what stops it. There is no "stream is running" flag to drift out of sync.

Run it

Pull the published image and run it (bundles the SDK + go2rtc):

docker run -d --name eufy-bridge --network host \
  -e EUFY_EMAIL='you@example.com' -e EUFY_PASSWORD='…' -e EUFY_COUNTRY='GB' \
  -v /opt/eufy-bridge-data:/app/data \
  ghcr.io/mega-yfue/ha-eufy-sdk-bridge:latest

or with Compose (cp .env.example .env first): docker compose up -d.

Full deploy guide (alongside Home Assistant, config reference, first-run 2FA/captcha): docs/docker-compose.md · WS protocol: docs/ws-protocol.md

Where it fits

Repo Role
eufy-sdk the HA-agnostic library
ha-eufy-sdk-bridge this — WS + HTTP + go2rtc daemon (Docker)
ha-eufy-sdk-addon Home Assistant add-on wrapper
ha-eufy-sdk the HACS integration (front door)

Status: working — WS control + auth-over-WS (2FA/captcha), device listing, snapshots, and go2rtc streaming. Published image: ghcr.io/mega-yfue/ha-eufy-sdk-bridge (multi-arch: amd64 · arm64). Publishing a GitHub Release builds and pushes the versioned + :latest tags automatically (.github/workflows/publish-ghcr.yml); the same build runs locally via scripts/publish-multiarch.sh. A merge to the dev branch publishes a rolling :dev tag for testing.

Contributing

Contributions are welcome — please branch from dev and open your PR against dev (not main). See CONTRIBUTING.md for the branch model, CI checks, and how releases are cut.

Develop

The bridge is ESM (no build step) and depends on the SDK as a normal npm package (@mega-yfue/eufy-sdk) — npm install pulls it from the registry, no sibling checkout needed.

npm install
npm test          # node --test
npm run lint      # prettier --check .   (npm run format to fix)

Every PR into main or dev runs the CI gate (.github/workflows/ci.yml): npm ci → lint → compile (node --check on each .mjs) → test. main is the public release line; dev is the development line (rolling :dev image).

Install eufy-sdk-bridge on Unraid in a few clicks.

Find eufy-sdk-bridge in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.

Open the Apps tab on your Unraid server Search Community Apps for eufy-sdk-bridge Review the template variables and paths Click Install

Categories

Related apps

Explore more like this

Explore all

Details

Repository
ghcr.io/mega-yfue/ha-eufy-sdk-bridge:latest
Last Updated2026-09-19
First Seen2026-09-19

Runtime arguments

Web UI
http://[IP]:[PORT:3000]/
Network
bridge
Shell
bash
Privileged
false

Template configuration

Host PortPorttcp

Host Port

Target
3000
Default
3000
Value
3000
Host PathPathrw

The path where the configuration file will be stored.

Target
/app/data
Default
/mnt/user/appdata/eufy-sdk-bridge
Value
/mnt/user/appdata/eufy-sdk-bridge
EUFY_EMAILVariable

Eufy Account Email

EUFY_PASSWORDVariable

Eufy Account Password

EUFY_COUNTRYVariable

Country code (default: US)

Default
US
Value
US
STREAM_IDLE_MSVariable

Auto-off a camera's live stream after this many `ms` with no detection event (motion/person/…). Helps save battery. Default is 300000ms (5 min).

Default
300000
Value
300000
RTSP_IDLE_OFF_MSVariable

Turn the device's native RTSP publish (rtspStream) OFF on a BATTERY camera left idle. Default is 300000ms (5 min).

Default
300000
Value
300000