Field guide · 2026

The Pebble stack, untangled Where every SDK, library, CLI and cloud service actually lives.

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.

🏢 Two organisations

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.

Official · commercial

Core Devices

Eric Migicovsky's company, which relaunched Pebble in 2025. Makes the new watches, maintains the firmware, and ships the modern SDK.

  • Sells new hardware (Pebble 2 Duo, Pebble Time 2)
  • Owns repebble.com, github.com/coredevices, the Pebble trademark
  • Maintains PebbleOS, pebble-tool, CloudPebble, and the Alloy JS SDK
Community · non-profit

Rebble

The volunteer foundation that kept Pebble alive after Fitbit shut the servers in 2018, by reverse-engineering and re-hosting the cloud services.

  • Runs the app store (~13k legacy apps), weather, voice dictation, timeline sync
  • Owns rebble.io, github.com/pebble-dev
  • Funded by a $3/mo Web Services subscription
Their relationship is unsettled. A deal to share Rebble's app-store backend turned into a public falling-out over data ownership. Expect overlap and duplicated services, not one tidy stack — treat the specifics here as a snapshot.

🕰️ Three eras

The 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.

2012–2016

Pebble Inc.

Original company. Built the C SDK, PebbleKit, CloudPebble, the app store, the timeline, Rocky.js. Bought by Fitbit; wound down.

2018→

Rebble keep-alive

Fitbit kills the servers (Jun 2018). Rebble re-hosts app store, weather, dictation and timeline so existing watches keep working.

Jan 2025

Open source

Google open-sources PebbleOS under Apache-2.0 (github.com/google/pebble) — minus a few proprietary blobs.

2025–2026

Core Devices revival

Eric M. relaunches Pebble: new watches, a maintained PebbleOS fork, CloudPebble, and the new Alloy JS/TypeScript SDK.

🧱 The runtime stack

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.

Core Devices · current Rebble · community Legacy New / in flux
☁️

Internet & cloud services

— mostly Rebble-hosted; the only layer that talks to the open web
web
🌐 The open web
Any HTTP API your app wants — weather, transit, sports…
rebble
Rebble Web Services
Weather, voice dictation, timeline sync. $3/mo.
rebble
Timeline API
Push "pins" (events) to a user's watch timeline.
store
App store
Where .pbw apps & faces are published / installed.
📱

Phone — the companion app

— bridges the watch to the internet over Bluetooth
Inside the official Pebble app (no install of your own)
phone JS
PebbleKit JS
Your app's JS sandbox: HTTP, GPS, storage, config.
phone JS
Clay
Build settings screens from JSON — no server.
webview
Config page
HTML settings UI opened by PebbleKit JS.
Your own standalone phone app
native
PebbleKit iOS / Android
Native libs so your own app talks to the watch.

Watch

— your app + the OS, on the watch's own chip
Pick ONE way to write your app
watch C
C SDK
The native path. Windows, Layers, GContext, services.
watch JS
Alloy
Modern JS/TS, runs natively via Moddable XS.
watch JS
Rocky.js
Older on-watch JS. Faces only. Superseded by Alloy.
phone JS
pebble.js
Old JS UI mirrored to the watch. Abandoned.
Shared primitives (any native app uses these)
comms
AppMessage
Key/value messages to & from the phone.
bg
Background Worker
Tiny binary that keeps running (e.g. step count).
comms
Data Logging
Buffer data on-watch, batch-spool to phone.
firmware
⚙️ PebbleOS — the open-source firmware everything sits on
FreeRTOS + NimBLE Bluetooth + JerryScript. Now Apache-2.0; maintained by Core Devices.
👆 Click any box above (or a row in the next table) to read what it is, which layer it runs on, and whether it's current or legacy.

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.

🧩 Programming models, side by side

"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 toolchain: write → build → run → publish

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.

1 ✍️ Write

  • CloudPebble — browser IDE, zero install
  • pebble CLI — local pebble new-project
  • VS Code ext — local IDE integration

2 🔨 Build

  • Waf — the build system
  • pebble build → a .pbw bundle
  • SDK — per-platform compilers

3 ▶️ Run

  • QEMU emulator — fake watch on your machine
  • pypkjs — runs the phone-JS half in the emulator
  • pebble install — to emulator or real watch

4 🚀 Publish

  • App store — upload the .pbw
  • Users install via the phone app

Two front-ends, one output: CloudPebble hides steps 1–3 behind a website; the pebble CLI exposes them locally. Both emit the same .pbw.

Hardware & platforms

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.

aplite
Pebble Classic / Steel
144×168 · B&W · rect
legacy
basalt
Pebble Time / Time Steel
144×168 · 64-colour · rect
legacy
chalk
Pebble Time Round
180×180 · 64-colour · round
legacy
diorite
Pebble 2 / 2 SE
144×168 · B&W · rect
legacy
emery
Pebble Time 2 (new)
200×228 · 64-colour · rect
current
gabbro
new round Pebble
round · color · specs TBD
in flux

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.