webOS homebrew · dev tools
~/webos/luna-atlas
Luna Atlas
every luna-send command, documented

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.

methods 8,167 services 501 documented 1,849 webOS 4+ ★ 1 license MIT
root@LGwebOSTV: ~ · ssh
8,167methods
501services
1,849documented
6,316inferred, flagged
luna-atlas search

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 catalog
loading…
loading the catalog (about 2 MB)…
documented

1,849 methods from authoritative sources: the webOS OSE docs, LG's own docs, and community projects. Each record lists the URLs it came from.

inferred

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.

stub

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.

man luna-send

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.

The catalog is the finished part. The repo also has a webOS app, a 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.
cat SOURCES.md

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.

every source ↗
sourcerecords
On-device introspection of an LG OLED (webOS TV 7.0, W22O)5,900+
webOS Open Source Edition docs1,084
lumen-webos509
webosose/db8231
bscpylgtv124
LG webOS TV developer docs81
Dozens more: Home Assistant, homebridge, LGTV Companion, ColorControl, webosbrew and others…
faq

Questions.

Do I need a rooted TV?
To run most of these, yes, or Developer Mode for some. 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?
The method exists on a real TV, but LG publishes nothing about it. Its description is worked out from the method name alone, and its parameters are left empty instead of guessed. Treat it as a pointer, not documentation.
Is it safe to try methods?
Reading 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?
Yes. It's MIT licensed, and the full catalog is plain JSON and JSONL in the repo. This page reads the same catalog.json.
Was this written by AI?
It's built with AI coding agents (Claude), directed, reviewed and checked by me against a real LG C2. The confidence flags exist so nothing a model guessed passes for documentation. How these are built.
know something we don't?

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.