This repository contains the complete source code of Sayboard — privacy-first voice keyboard for iPhone and iPad. All speech recognition runs on-device with no servers, no accounts, and no tracking.
| Dark Mode | Light Mode |
|---|---|
![]() |
![]() |
- On-device speech recognition with multiple engines (WhisperKit, Moonshine, Parakeet)
- On-device LLM text processing: grammar correction, tone adjustment, rewriting
- Works as a system keyboard for voice dictation in any app
- 90+ languages with automatic language detection
- Fully offline — no internet required
- No analytics, no tracking, no accounts, no data collection
![]() |
![]() |
![]() |
![]() |
|---|
Sayboard supports 90+ languages with automatic language detection:
🇦🇫 🇦🇱 🇦🇩 🇦🇲 🇦🇿 🇧🇩 🇧🇾 🇧🇦 🇧🇬 🇰🇭
🇨🇳 🇨🇩 🇭🇷 🇨🇿 🇩🇰 🇪🇪 🇪🇹 🇫🇴 🇫🇮 🇫🇷
🇬🇪 🇩🇪 🇬🇷 🇭🇹 🇭🇰 🇭🇺 🇮🇸 🇮🇳 🇮🇩 🇮🇷
🇮🇱 🇮🇹 🇯🇵 🇰🇿 🇰🇷 🇱🇦 🇱🇻 🇱🇹 🇱🇺 🇲🇰
🇲🇬 🇲🇾 🇲🇹 🇲🇳 🇲🇲 🇳🇵 🇳🇱 🇳🇿 🇳🇬 🇳🇴
🇵🇰 🇵🇭 🇵🇱 🇵🇹 🇷🇴 🇷🇺 🇸🇦 🇷🇸 🇸🇰 🇸🇮
🇸🇴 🇿🇦 🇪🇸 🇱🇰 🇸🇪 🇹🇯 🇹🇿 🇹🇭 🇹🇲 🇹🇷
🇺🇦 🇺🇸 🇺🇿 🇻🇦 🇻🇳 🏴 🇿🇼 🏳️
To get started, you need a Mac, Xcode 16.4+ (iOS 17.0+ deployment target), and a (free) Apple Developer Account.
-
If your Xcode installation is fresh, make sure that command line tools are selected:
sudo xcode-select --switch /Applications/Xcode.app
-
Install the tools needed to build the project:
brew install xcodegen swiftformat swiftlint
(If you don't have Homebrew, see their official install instructions.)
-
Download the llama.cpp XCFramework (required for on-device LLM features):
./scripts/bootstrap-llama.sh
-
Generate the Xcode project from
project.yml:xcodegen generate
-
Open
Sayboard.xcodeprojin Xcode -
For both the
SayboardandSayboardKeyboardtargets:- Set "Team" to the team of your developer account under Signing & Capabilities
-
Choose
Sayboardas scheme and a simulator
- Build and Run (Cmd+R)
A build you make yourself is the full app: Run, Test and the Release configuration have no purchase screen and no limit on dictation. The App Store version gives 3,000 free words of dictation and then asks for a one-time purchase. That purchase is a way to support Sayboard's development, and if you can't or would rather not pay, building it yourself is free and always will be.
In the Sayboard scheme, only Product › Archive uses the AppStore configuration, which compiles the purchase code. To archive a build for your own devices, set config: Release under schemes › Sayboard › archive in project.yml and run xcodegen generate again; a change made in Xcode's scheme editor is lost on the next generate. Otherwise the archive treats your install as a free App Store download, and your own bundle ID has no purchase that could unlock it. The Sayboard StoreKit scheme builds that App Store version for Run, Profile, Analyze and Archive, and runs the purchase flow locally against StoreKit/Sayboard.storekit.
Settings has a Report a Problem section that opens either a prefilled GitHub issue or a prefilled email, whichever you prefer. Both carry the app version, the iOS version and the device identifier, so the report arrives ready to work on.
You can also write directly to support@sayboard.app.
Sayboard doesn't collect any analytics or telemetry, so we rely on your feedback to find and fix problems.
This source code repository will be updated for every public non-beta release. There will be one commit per released version.
We welcome contributions via GitHub pull requests. For bug fixes and small improvements, feel free to open a PR directly. For larger changes, please open an issue first to discuss the approach.
Sayboard is licensed under the GNU General Public License v3.
Copyright (c) 2025 Sayboard
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
We are publishing the source code in good faith, with transparency being the main goal. By having users pay for the development of the app, we can ensure that our goals sustainably align with the goals of our users: great privacy and security, no ads, no collection of user data.





