Field guide · 2026
Pebble's toolchain spans three eras and four execution layers — the watch, its JS engine, the companion phone app, and the cloud — so the same name can be "dead since 2016" and "recommended today" at once. This sorts each piece by where it runs and whether it's current, community-run, or legacy. Click anything for details.
Most "which Pebble is this?" confusion comes from mixing these up. They're separate — which is why some services are official and some are volunteer-run.
Eric Migicovsky's company, which relaunched Pebble in 2025. Makes the new watches, maintains the firmware, and ships the modern SDK.
repebble.com, github.com/coredevices, the Pebble
trademark
pebble-tool, CloudPebble, and the
Alloy JS SDK
The volunteer foundation that kept Pebble alive after Fitbit shut the servers in 2018, by reverse-engineering and re-hosting the cloud services.
rebble.io, github.com/pebble-devThe same APIs were written in 2014, abandoned in 2016, kept alive by volunteers, then officially revived — so "old Pebble docs" are often still the canonical reference.
Original company. Built the C SDK, PebbleKit, CloudPebble, the app store, the timeline, Rocky.js. Bought by Fitbit; wound down.
Fitbit kills the servers (Jun 2018). Rebble re-hosts app store, weather, dictation and timeline so existing watches keep working.
Google open-sources PebbleOS under Apache-2.0 (github.com/google/pebble)
— minus a few proprietary blobs.
Eric M. relaunches Pebble: new watches, a maintained PebbleOS fork, CloudPebble, and the new Alloy JS/TypeScript SDK.
The key idea: the watch can't reach the internet. The phone proxies for it; the cloud serves config and timeline data. Boxes are grouped by the layer they run on — click any one to fill the panel at the bottom.
.pbw apps & faces are published / installed.
HTTP / XMLHttpRequest · timeline
pins
the phone is the watch's only route to the internet
AppMessage · key/value,
ACK/NACK
Alloy & Rocky.js wrap this as a simpler
postMessage
The labels between bands are the real data path: watch app ⇄ AppMessage ⇄ PebbleKit JS ⇄ HTTP ⇄ the internet. Alloy and Rocky.js swap the C app for on-watch JavaScript but keep the same phone bridge for the network.
"C or JavaScript?" depends on which layer you want your code to live on. Click a row to expand it in the panel above.
| Model | Runs on | Language | Use it for | Status |
|---|---|---|---|---|
| C SDK | watch (native) | C | Anything; full control, best performance | current |
| Alloy | watch (JS engine) | JS / TypeScript | Modern faces & apps without C | current |
| PebbleKit JS | phone (companion app) | JavaScript | Internet, GPS, config, timeline glue | current |
| PebbleKit iOS / Android | phone (your native app) | Obj-C / Java | Letting your own phone app drive the watch | revived legacy |
| Rocky.js | watch (JS engine) | JavaScript | (historical) on-watch JS faces | superseded |
| pebble.js | phone, mirrored to watch | JavaScript | (historical) whole apps in JS | abandoned |
The tools you operate, separate from the libraries above. Work fully in the browser
(CloudPebble) or locally (the pebble CLI). Click an item to learn more.
pebble new-project
.pbw bundle
.pbw
Two front-ends, one output: CloudPebble hides steps 1–3 behind a website; the
pebble CLI exposes them locally. Both emit the same .pbw.
You don't target watch names — you target platform codenames (rock types), each a screen shape, size and colour depth. Build once, the SDK compiles for every platform you list.
Names like flint / gabbro for the newest watches are still
settling — verify against
developer.repebble.com. The new watches run open-source PebbleOS and stay compatible with thousands of legacy
apps.