Self-contained firmware SDK for PebbleOS. Bundles the toolchains you need to build, run, and flash PebbleOS targets:
| Component | Purpose | Source |
|---|---|---|
| ARM GNU Toolchain | arm-none-eabi-* cross compiler |
https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads |
| Pebble QEMU | Emulator for PebbleOS targets | https://github.com/coredevices/qemu/releases |
| sftool | SiFli flashing utility | https://github.com/OpenSiFli/sftool/releases |
Supported hosts: Linux (x86_64, aarch64) and macOS (x86_64, aarch64).
One-liner (downloads the bundle for your platform from the latest release):
curl -LsSf https://github.com/coredevices/PebbleOS-SDK/releases/latest/download/pebbleos-sdk-installer.sh | shNon-interactive install:
curl -LsSf https://github.com/coredevices/PebbleOS-SDK/releases/latest/download/pebbleos-sdk-installer.sh \
| sh -s -- --defaultsPin a specific version or change the install path:
curl -LsSf https://github.com/coredevices/PebbleOS-SDK/releases/latest/download/pebbleos-sdk-installer.sh \
| sh -s -- --version 0.1.0 --prefix /opt/pebbleos-sdk --defaultsBy default the SDK installs at ~/pebbleos-sdk-<version>.
After install, activate the SDK in your shell:
. ~/pebbleos-sdk-<version>/env.sh
arm-none-eabi-gcc --versionEach release also publishes a self-contained tarball per platform:
tar -xzf pebbleos-sdk-<version>-<os>-<arch>.tar.gz
cd pebbleos-sdk-<version>-<os>-<arch>
./install.sh --defaults # default prefix
./install.sh --prefix /opt/pebbleos-sdk # custom prefix
./install.sh --force # overwrite existing~/pebbleos-sdk-<version>/
├── arm-none-eabi/ # ARM GNU Toolchain
├── qemu/ # Pebble QEMU
├── sftool/ # sftool binary
├── env.sh # source this to put tools on PATH
└── .sdk-info # versions + install metadata
versions.sh is the single source of truth. Edit the version variables
and, if a release uses different asset naming, adjust the *_url function.
Tag a new release (vX.Y.Z) and the GitHub Actions workflow rebuilds and
publishes bundles for every supported platform plus a fresh installer.sh.
./scripts/build-bundle.sh # host platform
./scripts/build-bundle.sh --os linux --arch aarch64
./scripts/build-bundle.sh --os darwin --arch aarch64 --out /tmp/distOutput lands in dist/pebbleos-sdk-<version>-<os>-<arch>.tar.gz along with a
.sha256.
Two workflows:
.github/workflows/ci.yml— runs on every PR and push tomain:- shellcheck + bash/sh syntax across all scripts
- HEAD-checks every download URL declared in
versions.sh(catches drift when upstream renames or rotates assets) - cross-platform bundle build for all four target tuples (artifacts kept 7 days for inspection)
- real install smoke test on
ubuntu-latest(linux/x86_64) andmacos-latest(darwin/aarch64): builds the bundle, runsinstall.sh --defaults, sourcesenv.sh, and exercises every shipped tool
.github/workflows/release.yml— runs onv*tags: builds all four platform bundles and uploads them pluspebbleos-sdk-installer.shto the GitHub Release.
Both workflows cache component downloads under ~/.cache/pebbleos-sdk-build,
keyed on versions.sh, so cache-warm runs skip the ~190 MB toolchain
download.
You can run the same checks locally:
./scripts/check-urls.sh # URL reachability
./scripts/build-bundle.sh --cache-dir ~/.cache/pebbleos-sdk-build # cached build
shellcheck scripts/*.sh scripts/lib/*.sh versions.shversions.sh # tool versions + URL functions (single source of truth)
installer.sh # public curl|sh entry point (POSIX sh)
scripts/
├── build-bundle.sh # builds a per-platform bundle (--cache-dir aware)
├── install.sh # bundled installer (gets copied into each bundle)
├── check-urls.sh # HEAD-checks every configured download URL
└── lib/
├── platform.sh # uname-based OS/arch detection
└── common.sh # logging, download, extract helpers
.github/workflows/
├── ci.yml # PR + main: lint, URL check, build, smoke install
└── release.yml # tag push: build all platforms, upload release assets
Copyright 2026 Core Devices LLC.
This project's source is licensed under the Apache License, Version 2.0
(SPDX-License-Identifier: Apache-2.0). The third-party tools the SDK
downloads and bundles (ARM GNU Toolchain, Pebble QEMU, sftool) remain under
their respective upstream licenses; their license texts ship inside each
component's archive.