Chirp

Say it, see it, send it

not yet reviewed by publik

How to install Chirp

Every step written out, for people who have never opened a terminal. Pick the setup you have.

Chirp

Chirp is a voice-first custom keyboard for iOS, inspired by Wispr Flow. Tap the mic, talk, and your words get transcribed on-device and inserted wherever you're typing — in any app.

It's a personal project built with Xcode, meant to be built and run from source rather than distributed as a signed binary. This repo is here so you can build your own copy and run it on your own iPhone.

What's inside

  • Chirp — the main SwiftUI app. It does the actual audio recording and on-device speech recognition (via Apple's Speech framework), kept alive in the background so the keyboard extension can trigger it. It also handles first-launch onboarding.
  • ChirpKeyboard — a custom keyboard extension (UIInputViewController). It's a full QWERTY keyboard (shift/caps, 123/symbols pages, auto-capitalization) plus a voice mode: tap the mic and it swaps to a "Listening" panel with a live waveform; a checkmark inserts the transcript, an X discards it.

iOS keyboard extensions can't reliably start audio capture themselves (AVAudioEngine fails to start inside a keyboard extension — a known platform limitation). Chirp works around this: the main app does the recording and transcription in the background, and the keyboard extension just relays start/stop commands and reads back the live transcript through a shared App Group container (DictationBridge.swift).

Requirements

  • A recent version of Xcode
  • An iPhone running iOS 26.5 or later (the app needs a real device — the simulator can't do live microphone input)
  • Your own Apple ID (a free account is enough; you don't need a paid Apple Developer Program membership)

Setting it up

  1. Clone this repo and open Chirp.xcodeproj in Xcode.
  2. Select the Chirp target → Signing & Capabilities → set Team to your own Apple ID.
  3. Do the same for the ChirpKeyboard target.
  4. If Xcode complains that the bundle identifier or App Group is already taken (they're currently registered under the original author's Apple ID), you'll need to make them unique to you:
    • Change the Bundle Identifier on both targets (currently com.cacti.Chirp and com.cacti.Chirp.ChirpKeyboard) to something like com.yourname.Chirp / com.yourname.Chirp.ChirpKeyboard.
    • Update the App Group string in both Chirp.entitlements and ChirpKeyboard.entitlements (currently group.com.cacti.Chirp) to match — you can add a new App Group directly from the Signing & Capabilities tab.
    • Update appGroupID in both copies of DictationBridge.swift (Chirp/DictationBridge.swift and ChirpKeyboard/DictationBridge.swift — they're intentionally duplicated, one per target) to the same new App Group string.
  5. Plug in your iPhone, select it as the run destination, and hit Run for the Chirp scheme. The first time, you'll need to trust the developer certificate on your phone under Settings → General → VPN & Device Management.
  6. Enable the keyboard: Settings → General → Keyboard → Keyboards → Add New Keyboard… → Chirp, then tap on Chirp in that list and turn on Allow Full Access (required for the App Group relay to work).

Free Apple ID signing expires after 7 days — if the app or keyboard stops working, just reopen Xcode and hit Run again to re-sign it.

Notes

  • Speech recognition is on-device, English (US) only for now.
  • The onboarding flow's "writing style" screen is a placeholder for a future update — it saves your preference but doesn't do anything with it yet.