Development¶
Tools, libraries, languages and environments for building Pebble watchfaces and apps.
Pebble Platforms¶
The SDK refers to each watch by its platform codename.
| Watch | Platform |
|---|---|
| Pebble (Classic), Pebble Steel | aplite |
| Pebble Time, Pebble Time Steel | basalt |
| Pebble Time Round | chalk |
| Pebble 2 | diorite |
| Pebble Time 2 | emery |
| Pebble 2 Duo | flint |
| Pebble Round 2 | gabbro |
General¶
- PebbleKit.ts - A modern Pebble app boilerplate using TypeScript by @jccit
- microPebble - An open source Pebble companion app based on the libpebble3 by @matejdro.
- Better Pebble Emulator - A Pebble emulator for Ubuntu and Debian.
- PebbleGL - OpenGL for Pebble. Uses minimal OpenGL engine (miniGL) for rendering a 3D world on the Pebble Smartwatch.
Development Environments & Build Tools¶
- pebble-wrapper - Wrapper script to run the Pebble SDK in Docker or Podman.
- docker-pebble-dev - Docker image for Pebble development.
- Docker and the Pebble Emulator - Guide to running the SDK and emulator in Docker.
- pebble-setup - Pebble development setup guide.
- pebble-devcontainer - VS Code devcontainer for Pebble development.
- pebble-codespace - Fully featured Pebble dev environment using GitHub Codespaces.
- pebble-time2-dev-setup - Tested setup guide for a Pebble Time 2 Linux dev machine.
- pebble-sdk-arm - Pebble SDK on ARM machines.
- pebble-bazel - Build Pebble apps using Bazel.
- github_action_pebble_build - GitHub Action for building Pebble apps in CI.
- pebble_watchface_framework - Demo watchface built with GitHub Actions, with tips for GitHub Codespaces and importing into CloudPebble.
- cloudpebble-composed - Self-hosted CloudPebble using Docker Compose. Not considered safe to expose publicly.
- Pebble-NMBS - Example of a Docker-based Pebble build running under GitHub Actions.
- python-pebble-tools - Process locker and other helper tools for the Pebble SDK.
- rebbletool - Python 3 port of pebble-tool. Popular before Core Devices' updated pebble-tool.
- Building Pebble Watchfaces on Modern Systems - Blog post on getting the SDK running on modern systems.
- pebble-wf-agent-skill - AI agent skill for building Pebble watchfaces end to end.
Languages & Frameworks¶
- pebble-modern-js - Use modern JavaScript in PebbleKit JS.
- pybble - Write Pebble apps in Python.
- rust4pebble - Rust bindings for the Pebble SDK.
- pebble-rust-2026 - Rust wrapper for the Pebble C API.
- zig-pebble-sdk - Zig SDK for Pebble.
- Nebble - Modern, type-safe Nim wrapper for the Pebble SDK.
- pebble-cpp - C++ wrapper for the Pebble SDK.
- GeaStack Pebble - Compiles Gea TSX apps into native Pebble apps with no JavaScript engine on the watch.
- example-pebble-inferencing - Run TinyML models on Pebble with Edge Impulse.
Libraries¶
- pebble-scalable - Library to help scale apps to all Pebble display sizes.
- pebble-fctx - Anti-aliased vector drawing and text, including rotated text.
- SDFDemo - Scalable fonts using signed distance fields.
- EffectLayer - Visual effects layer (invert, mirror, blur etc.) for Pebble apps.
- GBitmap Colour Palette Manipulator - Manipulate the colour palettes of GBitmaps at runtime.
- enamel - Helper for generating Clay settings code.
- pebble-events - Lets multiple handlers subscribe to Pebble event services.
- pebble-libraries - Collection of libraries, including an accelerated tick timer for debugging.
- pebble-gbc-graphics - Game Boy Color style tile-based graphics engine.
- pebble-math-sll - Fixed-point maths library.
- pebble-timeline-js - JavaScript library for pushing Timeline pins.
- Custom Status Bar - Custom status bar layer, including a battery indicator.
- pebble_memory_tools - Tools for tracking down memory usage and leaks.
Integrations & Utilities¶
- node-red-pebble-timeline - Node-RED nodes for sending Pebble Timeline pins.
- Pebble-Timeline-Worker - Cloudflare Worker for pushing custom Timeline pins.
- pypebbleapi - Python client library for the Timeline API (works with Rebble's Timeline service).
- pebble-image-viewer - Watchapp for previewing images on a Pebble (app store).
- Preview App by Tack Mobile - Watchapp for previewing UI mockups on a Pebble.
- Clay with manual message keys - Example Clay config page with manually defined message keys.
- pbw-tools - Tools for inspecting and modifying .pbw files.
- Pebble App Config Page Backup - Archived configuration pages for older Pebble apps whose config sites have gone offline.
Hacking & Reverse Engineering¶
- rockgarden - Patch and modify existing watchfaces and apps (maintained fork of cpfair/rockgarden).
- sand - Remix existing Pebble apps.
- pebble-pyrite - Utilities for working with Pebble app resources.
- pebble_patch_tts - Patch voice dictation to remove punctuation. Uses rockgarden.
- pebble-autoconfig - Generate configuration pages, handy for recreating config pages that have gone offline.
- radare2 - Reverse engineering framework with support for Pebble apps. See this guide.
Tips¶
- PBW files are ZIP files. You can unzip a
.pbw, edit its JavaScript (e.g. to fix a dead settings page or weather API), and zip it back up. No checksums or manifest changes are needed. - View logs from a real watch. Enable Developer Mode in the Pebble app, then run
pebble logs --phone <PHONE_IP>to see logs from both C and JavaScript code. - Emulator hung? Run
pebble kill, stop any remaining emulator processes, then runpebble wipe. - SDK versions. Use SDK 4.x. SDK 3.x can still build apps that run on firmware 4.x. SDK 2 has incompatibilities with SDK 1, and SDK 1 should not be used.
- Look for unmerged fixes. Some tool fixes only exist as open pull requests, e.g. pebble-tool PRs (such as logging on Windows) and Clay PRs (such as Clay config working in the emulator with a modern browser). Rebble's Clay fork is active again and published as @rebble/clay.
- Download a PBW from the Rebble store. Add
?dev_settings=trueto an app's Rebble store URL to get a download link for its PBW in your browser.
Talks & Guides¶
- Pebble Dev Retreat 2014: Memory - Talk on memory usage on Pebble (slides).
- Rebble boot weather bootstrap - Where Rebble's boot process sets the weather service URL.
- SDK 3 Migration Guide - Moving older apps to SDK 3. See also Remy Sharp's porting notes.