npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@badsadspam2/scrypted-eufy-security-fixed

v1.0.0-rc.6-fixed.3

Published

Eufy Security plugin for Scrypted with fallback fixes

Readme

Scrypted Eufy Security Plugin

English | Deutsch

Direct eufy-security-client integration for Scrypted — no WebSocket bridge, no middleware, no Docker, no Home Assistant. The plugin talks P2P to your HomeBase directly from the Scrypted process and lets Scrypted bridge your cameras to HomeKit (including HomeKit Secure Video), Google Home and Home Assistant.

Features

  • ✅ Direct eufy-security-client integration — no middleware, no external process
  • ✅ Eufy HomeBase 3 (S380) support
  • ✅ HomeKit Secure Video (HKSV) via the Scrypted HomeKit plugin
  • ✅ P2P livestreaming (H.264 / H.265)
  • ✅ Motion detection (person, pet, vehicle, sound)
  • ✅ Two-way audio / talkback
  • ✅ PTZ pan/tilt for the Indoor Cam C210
  • ✅ Guard Mode (Away / Home / Off)
  • ✅ Automatic reconnect with exponential backoff
  • ✅ Node.js 20+ compatible (via enableEmbeddedPKCS1Support)
  • ✅ Falls back to a legacy-crypto child process when needed
  • ⚠️ HomeBase 3: max. 1 stream at a time (hardware limitation)

Requirements

  1. Scrypted (Docker, Home Assistant add-on, or native)
  2. Scrypted HomeKit plugin (for HomeKit Secure Video)
  3. Eufy account credentials
  4. Nothing else — the plugin is self-contained

Installation

In Scrypted: Plugin Store → search "Eufy Security" → Install. Enter your credentials in Settings → devices are discovered automatically.

HomeKit Setup

  1. Install the plugin and let it discover your cameras.
  2. In Scrypted, open a camera → HomeKit → "Add to HomeKit".
  3. Scan the QR code in the Apple Home app.
  4. HKSV activates automatically if you have an iCloud plan (Home 50 GB+).

Streaming & Prebuffer (HomeBase 3)

HomeBase 3 allows only one active stream at a time. The plugin therefore disables Scrypted's automatic prebuffering for all cameras by default — prebuffering every camera would require one permanent stream per camera, which the hardware cannot do (and previously caused an endless stream pre-emption loop on startup).

  • Prebuffer camera (plugin setting): pick the single camera that keeps a permanent prebuffer stream. That camera gets an instant live view and HKSV pre-roll footage. After changing the setting, restart the Rebroadcast plugin so it re-evaluates its prebuffer defaults.
  • All other cameras stream on demand: opening their live view takes the 3–10 s P2P connection setup and temporarily pre-empts the prebuffer camera's stream. The prebuffer camera reclaims the slot automatically once the live view is closed.

Known Limitations

  • HomeBase 3: only one camera can stream at a time (Eufy hardware limit).
  • RTSP direct access to HomeBase 3 has been broken since the March 2026 firmware — the plugin works around it by using P2P directly.
  • Stream start takes 3–10 seconds (P2P connection setup to the HomeBase).
  • HKSV pre-roll is only available for the selected prebuffer camera; recordings from other cameras start at the motion event.

Crypto Compatibility (Node.js 20+)

Eufy devices use RSA_PKCS1_PADDING in the P2P protocol, which Node.js 20+ rejects by default (CVE-2023-46809). The plugin handles this in two stages:

  1. Primary: EufySecurity.initialize({ enableEmbeddedPKCS1Support: true }) — P2P runs natively inside the Scrypted Node process.
  2. Fallback: an automatic child process with --openssl-legacy-provider, triggered as soon as a crypto error is detected. Fully bundled with the plugin — no external download.

Architecture

Scrypted Process
  EufySecurityPlugin (DeviceProvider, Settings, DeviceDiscovery)
    ├── EufyClient    (DirectEufyClient | ChildProcessEufyClient)
    ├── StreamManager (session lifecycle, HomeBase 3 limit)
    ├── EufyCamera[]  (Camera, VideoCamera, MotionSensor, Intercom, [PanTiltZoom])
    └── EufyStation[] (SecuritySystem)

Development

npm ci
npm run lint
npm run build
npm test

License

Apache-2.0