← Search

TP-Link Kasa EP10
Smart Home 📌 Pinned version: commit e6fe517
⚙ Needs: Before you start: read this whole install prompt…

TP-Link Kasa EP10

Read status and control relay or LED state on compatible TP-Link Kasa EP10 plugs through Muse Home Link, using the confirmed legacy IOT local TCP protocol (commonly port 9999, python-kasa legacy client

At a glance
What
Read status and control relay or LED state on compatible TP-Link Kasa EP10 plugs through Muse Home Link, using the confirmed legacy IOT local TCP protocol (commonly port 9999, python-kasa legacy client
Cost
Free
Needs
Before you start: read this whole install prompt, tell me in a few lines what this skill does and what installing it involves, and wait for my go-ahead before you do anything else.
Install
Copy the installer prompt below into your Muse — your agent does the rest.

Version:

M
Created by: Meta (facebookincubator)
⌁

Install

Copy the install package below, then paste it into Muse📌 Pinned version: commit e6fe517

Before you start: read this whole install prompt, tell me in a few lines what this skill does and what installing it involves, and wait for my go-ahead before you do anything else. Prerequisites — Muse Home Link and a compatible physical device are required to USE this skill, not to install it: installing the skill file itself needs no account, no key and no device, and this install does NOT set up Home Link, pair anything or ask for any credential. But the skill is instructions only. To use it I must read and follow ~/docs/devices/home_link.md in my Muse environment, have the compatible physical device named below already set up on my local network, and have a compatible Kasa EP10 plug already set up on my local network, confirmed by exact model, hardware and firmware from legacy system.get_sysinfo (not a vendor prefix or open port), at its discovered local TCP endpoint (the legacy service commonly uses 9999, with no client UDP discovery run from the agent), know the connected load and confirm that switching it is intended, and need no account credentials, because the legacy interface requires none. Installing the file configures none of that. Install "TP-Link Kasa EP10" for me. It reads status and controls relay or LED state on compatible TP-Link Kasa EP10 plugs through Muse Home Link, using the confirmed legacy IOT local TCP protocol; the EP10 has no energy metering and does not use the EP25 authentication path. It is used when fresh discovery and a scoped device read confirm a compatible EP10: exact model, hardware and firmware come from legacy system.get_sysinfo, not a vendor prefix or open port, and its discovered local TCP endpoint is used (the legacy service commonly uses 9999; no client UDP discovery is run from the agent). It uses python-kasa's explicitly configured legacy IOT plug client through the shared network access, supplying the known endpoint without broadcast discovery; for an agent-authored transport, legacy TCP frames use a four-byte big-endian payload length and TP-Link's documented XOR-autokey JSON encoding, with the maintained implementation preferred over inventing encryption. It reads {"system":{"get_sysinfo":{}}} and retains relay_state and led_off, sets the relay with system.set_relay_state (state 1 or 0) or the client's turn_on/turn_off, and sets system.set_led_off only when an LED change is requested (off:1 disables the LED). It refreshes device state after each action and checks device error codes, not merely receipt of a TCP frame, confirms the desired relay state (LED state is separate and inverted by led_off), and if a response is uncertain reads state before retrying, never retrying with a toggle. A relay acknowledgement does not prove the connected appliance performed its own task. Limits: no energy metering (no watts or energy history), no EP25 authentication or features, and no reset, network changes, credential updates, schedules or firmware actions; if current firmware identifies a different protocol, the legacy XOR is not forced and there is no silent switch to another family's skill. Repository: https://github.com/facebookincubator/muse-gadget-sdk (the skill is the whole skills/gadget-tplink-kasa-ep10/ folder at the pinned commit: SKILL.md only, 1 file) Pinned version: install the code at commit e6fe5174092702ffddae6f90759a38d55a4ebae1 exactly. Do not substitute a newer version. If this commit is unreachable, stop and tell me. 1. Clone https://github.com/facebookincubator/muse-gadget-sdk into a temporary folder, check out commit e6fe5174092702ffddae6f90759a38d55a4ebae1, and copy the skills/gadget-tplink-kasa-ep10/ folder from that checkout. Then compare every file in the folder with the fingerprints recorded for this listing on 2026-10-22: [FINGERPRINTS] - SKILL.md: SHA-256 8d43aceef48a403541c1ebbbd70062328f2a24e5e648ceec0d17c37b94fb1de5 If a file does not match, it changed since the listing was prepared: do not install it yet, tell me what you found and let me decide. 2. Read SKILL.md in full, and tell me in plain words: what the skill does when used, what it connects to, whether it reads or sends any personal information or credentials, and anything that seems unusual. Stop on any red flag and tell me before going further. Confirm these points from the files: - The skill folder holds 1 file only: SKILL.md (2,495 bytes). There is no script, no code and no configuration in it; the procedure runs at use time through Muse Home Link against my own local device. It has no dependency on any other gadget skill in this lot. - Nothing is sent anywhere during installation itself; the only download at install time is the skill folder from GitHub at the pinned commit. No device is contacted, no pairing is started and no key is asked for during installation. - At use time, exchanges go only to my local Kasa EP10 plug over the legacy IOT local TCP protocol (commonly port 9999) through python-kasa's legacy client: get_sysinfo reads and set_relay_state / set_led_off writes on the discovered endpoint. The legacy interface needs no account credentials, and no credential is asked for or sent. - The skill does not do energy metering (the EP10 has none), EP25 authentication or features, resets, network changes, credential updates, schedules or firmware actions, and it does not force legacy XOR or silently switch skills when the firmware identifies a different protocol. - Do not pair any device, do not ask for or set any credential, do not run any control, print, scan or playback action, and do not use the skill in any way during this install: Home Link setup, pairing and use are my decisions, later, when I actually ask for them. 3. When I say "yes, install", install it as a skill: copy the whole gadget-tplink-kasa-ep10 folder into the agent's skills directory, in a folder named exactly "gadget-tplink-kasa-ep10", keeping its 1 file (SKILL.md at its root). The exact folder name matters: relative links between sibling gadget skills depend on these exact names. 4. Verify with no network calls: frontmatter valid (name: gadget-tplink-kasa-ep10), the 1 file in place with matching fingerprint. Do not run anything and do not connect to any device to verify. 5. Report what was installed, where, and what I still need to do myself (for example: read ~/docs/devices/home_link.md in my Muse environment and follow its Home Link rules; have a compatible Kasa EP10 already set up on my local network, confirmed from legacy system.get_sysinfo at its discovered TCP endpoint, and know the connected load before any switching; no account credentials are needed for this legacy interface; using the skill is a separate step that only starts when I ask for it, and the use-time exchanges disclosed above happen only then). GitHub is optional: if I have a GitHub account or the gh CLI, you may use it; otherwise public access is fine. Never require it unless it's in the prerequisites above. Rules: don't touch anything outside the temp folder and the install target. If anything looks off, stop and ask me.

🔒 Security, provenance and what this touches
🧭 What this touches
Based on the install prompt we scanned, this build does not run commands, make third-party network calls, install packages, write files, or ask for API keys.
Install prompt analysis · 2026-10-22
🔒 Security and provenance
📌 Pinned version: commit e6fe517 · 2026-10-22
🔎 Last checked · Oct 22, 2026 : no change detected in the files linked by this install prompt
Skill Harbor never reviews the code of a listed skill. These are dated facts about the install prompt and our install test, not a safety certification. Review a skill yourself before you install it. How we verify
Wanna be extra careful?

The install prompt below already includes the vetting steps: your agent follows the community checklist before installing anything with executable code. Want more?

How to check a build before installing →

?

Questions

How do I install a build?

Every product page includes a copy-paste install prompt. Paste it into your Muse and it sets the build up for you — no manual configuration.

Where does my money go?

Straight to the seller. Skill Harbor never processes payments: checkout happens on the seller’s own page, usually Stripe.

What does the ✓ next to a creator’s name mean?

It means we confirmed the identity of the person behind the listing. It says nothing about the code itself — always check a build before installing it.