The webOS Luna bus,
mapped.
Every LG webOS TV ships luna-send, the command that talks to the Luna Service Bus: power, apps, inputs, picture and sound, Wi-Fi, notifications and hundreds more. There has never been a complete list of what you can say to it. This is that list: 8,167 methods across 501 services, each with its access level, where it came from, and a ready-to-run command.
Browse every call.
Search by method, service, URI or description, filter by category, access and confidence, and open any method for its parameters and a command to run. Every view has its own link to share.
Skip past the catalog1,849 methods from authoritative sources: the webOS OSE docs, LG's own docs, and community projects. Each record lists the URLs it came from.
6,316 methods are LG-proprietary, found on a real TV with no public docs. The description comes only from the method name, and no parameters are invented.
A handful of entries found on a TV with nothing known about them yet. Listed so the map is complete, marked so nobody mistakes them for docs.
Access levels: public callable by apps with the right permission, private needs root or system rights, ssap reachable over the SSAP websocket, root root only, unknown the source didn't say. ⚠ marks 314 calls that can factory reset, wipe data or break the set.
One bus. Every service.
The Luna Service Bus is the internal message bus every webOS system service listens on. On a rooted TV or in Developer Mode, luna-send is how you drive any of it from a shell: show a toast, switch inputs, read the model, change a picture setting, or ask a service what it can do.
Methods marked sub also stream updates: add "subscribe": true and drop -n 1 to keep listening.
$ luna-send -n 1 -f luna://com.webos.notification/createToast '{"message":"Hello from luna-send"}'This drives a real TV
Many calls change settings, inputs, power or the panel, and a few can factory reset, wipe data or brick the set. Those are flagged and listed in dangerous.md. Running one is exactly as safe as typing the same luna-send yourself.
Honest about what's known
Every method carries a confidence flag, and so does every service description. Inferred entries say so, and their parameters are left blank rather than guessed.
luna-atlas.sh script and a browser panel that read the same catalog. Those are early previews and not ready for real use yet: the focus is documenting every Luna call first, then the app side. Method names are solid, parameters are still being filled in, and categories may move.Where it comes from.
Every record lists the exact URLs it came from. Most methods were found by introspecting a real LG TV. Descriptions and parameters come from public documentation and community projects wherever they exist.
| source | records |
|---|---|
| On-device introspection of an LG OLED (webOS TV 7.0, W22O) | 5,900+ |
| webOS Open Source Edition docs | 1,084 |
| lumen-webos | 509 |
| webosose/db8 | 231 |
| bscpylgtv | 124 |
| LG webOS TV developer docs | 81 |
| Dozens more: Home Assistant, homebridge, LGTV Companion, ColorControl, webosbrew and others | … |
Questions.
Do I need a rooted TV?
luna-send is on every webOS TV, but private and root methods only answer a privileged caller. Reading the catalog needs nothing at all.What does "inferred" mean?
Is it safe to try methods?
get…, list…, status calls) usually are. Anything that sets, resets, deletes or reboots can change the TV, and the ones that can do real damage are flagged dangerous. There's no warranty, so know what a call does before you send it.Can I use the data in my own project?
catalog.json.Was this written by AI?
Fill in a method, fix a description.
Parameters for an inferred method, a better description, or a dump from a different TV all make the map better. Open an issue or a pull request on GitHub.