Gravel
A de-googled, hardened fork of the Pebble companion app for de-googled phones
新版本 0.4.0
Adds Notebook, an early beta: voice and typed notes and reminders, from its new tab or from the Notebook watch app, which Gravel offers to install. The text model that titles notes runs on the phone, and recordings can be transcribed on the phone. A new switch can keep audio off a transcription server you host while on mobile data. Also fixes the decoding of dictation audio from the watch.
Gravel is a de-Googled, hardened fork of the Pebble mobile app by Core Devices, for Pebble and Core Devices watches on GrapheneOS, LineageOS and other phones without Google Play services or Firebase.
The watch features are here: pairing, notifications and replies, calendar, music, health, weather, watchfaces and apps, firmware updates, and voice dictation. What is gone: Play services, Firebase, telemetry, analytics and crash reporting. The battery analytics page depended on that telemetry and has no data here, and upstream's Pebble Index 01 ring and Index AI features do not work.
Hardening:
- Code that watchapps run inside Gravel gets no internet or location access until you grant it, per app, so some watchfaces and apps need a grant before they work fully. On phones where Gravel's UDP filter can't be turned on, such as LineageOS and CalyxOS, watchapps without internet access still run their code by default if Android System WebView is up to date. Their real-time connections (the kind video calls use) then depend on a single layer instead of two. You can turn that code off under Watch App Permissions. With an older WebView, that code does not run
- Classic PebbleKit, which broadcasts watch data to apps on your phone, is off by default; turn it on under Watch App Permissions if a companion app stops receiving watch data
- The speech and text engines each run in an isolated Android process
- Other exported Android interfaces are authorization-gated or removed, and plain-HTTP traffic is blocked
- Core watch firmware comes from the public PebbleOS releases and is verified before install
- App store searches are sent when you tap search, not while you type, with the search provider's analytics switched off
Dictation runs on the phone with whisper.cpp, built from source; the speech model is an optional, integrity-pinned download. You can also send dictation and Notebook recordings to your own transcription server over https. Weather locations can also be entered by latitude and longitude.
The Notebook stores voice and typed notes and reminders on the phone (Android 9 and newer; voice notes also need a processor that can run both engines). The text model that writes titles, tags, and a reminder's wording runs on the phone, and so does speech recognition unless you set up a transcription server; the text model is an integrity-pinned download you start yourself. Notes are stored encrypted, and backups are encrypted files written where you choose. A reminder that goes off is shown as a notification and sent to the watch like any other.
Gravel contacts the Core Devices and Rebble web services, Algolia when you search the app store, GitHub for firmware and the Notebook watch app, and Hugging Face when you download a speech or text model, as well as an app store source or transcription server you add yourself and any host a watchapp you grant internet access connects to. Where Gravel's UDP filter can't be turned on and a watchapp without that grant still runs its code (see Hardening above), that code's real-time connections depend on one layer instead of two.
Background location is used so location-based watchapps and weather work while the app is closed.
Gravel is not affiliated with or endorsed by Core Devices. "Pebble" and "Core Devices" are trademarks of their respective owners; Gravel is an independent fork of their GPLv3 source code.
The watch features are here: pairing, notifications and replies, calendar, music, health, weather, watchfaces and apps, firmware updates, and voice dictation. What is gone: Play services, Firebase, telemetry, analytics and crash reporting. The battery analytics page depended on that telemetry and has no data here, and upstream's Pebble Index 01 ring and Index AI features do not work.
Hardening:
- Code that watchapps run inside Gravel gets no internet or location access until you grant it, per app, so some watchfaces and apps need a grant before they work fully. On phones where Gravel's UDP filter can't be turned on, such as LineageOS and CalyxOS, watchapps without internet access still run their code by default if Android System WebView is up to date. Their real-time connections (the kind video calls use) then depend on a single layer instead of two. You can turn that code off under Watch App Permissions. With an older WebView, that code does not run
- Classic PebbleKit, which broadcasts watch data to apps on your phone, is off by default; turn it on under Watch App Permissions if a companion app stops receiving watch data
- The speech and text engines each run in an isolated Android process
- Other exported Android interfaces are authorization-gated or removed, and plain-HTTP traffic is blocked
- Core watch firmware comes from the public PebbleOS releases and is verified before install
- App store searches are sent when you tap search, not while you type, with the search provider's analytics switched off
Dictation runs on the phone with whisper.cpp, built from source; the speech model is an optional, integrity-pinned download. You can also send dictation and Notebook recordings to your own transcription server over https. Weather locations can also be entered by latitude and longitude.
The Notebook stores voice and typed notes and reminders on the phone (Android 9 and newer; voice notes also need a processor that can run both engines). The text model that writes titles, tags, and a reminder's wording runs on the phone, and so does speech recognition unless you set up a transcription server; the text model is an integrity-pinned download you start yourself. Notes are stored encrypted, and backups are encrypted files written where you choose. A reminder that goes off is shown as a notification and sent to the watch like any other.
Gravel contacts the Core Devices and Rebble web services, Algolia when you search the app store, GitHub for firmware and the Notebook watch app, and Hugging Face when you download a speech or text model, as well as an app store source or transcription server you add yourself and any host a watchapp you grant internet access connects to. Where Gravel's UDP filter can't be turned on and a watchapp without that grant still runs its code (see Hardening above), that code's real-time connections depend on one layer instead of two.
Background location is used so location-based watchapps and weather work while the app is closed.
Gravel is not affiliated with or endorsed by Core Devices. "Pebble" and "Core Devices" are trademarks of their respective owners; Gravel is an independent fork of their GPLv3 source code.
负面特征
此应用有一些你未必喜欢的特征。 了解更多!
捐赠
版本
尽管下面提供了 APK 安装包的下载选项,但你应该注意,以这种方式安装将不会收到更新通知,这是一种不太安全的下载方式。 我们建议你安装使用 F-Droid 客户端。
下载 F-Droid-
arm64-v8aarmeabi-v7a该版本需要 Android 8.0 及以上版本。
此安装包由 F-Droid 构建并签名,且保证与此源代码 tarball 保持一致。
-
arm64-v8aarmeabi-v7a该版本需要 Android 8.0 及以上版本。
此安装包由 F-Droid 构建并签名,且保证与此源代码 tarball 保持一致。
-
arm64-v8aarmeabi-v7a该版本需要 Android 8.0 及以上版本。
此安装包由 F-Droid 构建并签名,且保证与此源代码 tarball 保持一致。
新版本 0.3.4
Fixes steps and heart rate not syncing from watches on PebbleOS 4.39.0 and 4.40.0. Steps and heart rate missed before this update are not able to be recovered.
新版本 0.3.3
PebbleOS updates for Core watches now follow Core's public changelog, and Settings > About > Choose a PebbleOS build lists newer builds. Watchfaces and apps with internet access off run their code inside Gravel again where Gravel can block UDP. Where it cannot, such as on LineageOS, CalyxOS and Android 9 and older, a switch in Settings > Apps > Watch App Permissions, on by default, lets that code run with Android System WebView 152 or newer.





