A Series 40–style feature phone for Mac and iPhone. Real calls, texts, contacts, camera, music, radio, Java games and the web, all through your own device. Press its keys or just touch the screen.
A live phone. Click the keys, or use your keyboard.
Display
240 × 320
Keys
21 + nav
Runs on
macOS 13 · iOS 16
Your data
Stays on device
Features
Every key does something real.
The phone hands real work to the device it runs on. Where Apple doesn't allow something, the feature isn't there, instead of pretending.
Real calls and VoIP
Dial on the keypad and press the call key. iPhone places the call, a Mac uses FaceTime, or link a VoIP account and KeyPhone makes and answers internet calls itself.
Settings › Call › VoIP account
Text messages
Write with multi-tap, predictive text or the messenger's keyboard, and send through Messages. Key, message and ringing tones go quiet when your iPhone is on silent.
Menu › Messaging
Your contacts
Names is your device's address book. Add, edit or delete a name and Contacts changes too. Groups and speed dials included.
Right key › Names
Camera, Gallery and Recorder
A live viewfinder on the phone's screen. Photos are saved exactly as framed, the Gallery is your real Photos library, and the Recorder keeps voice memos.
Menu › Media › Camera
Music, Apple Music and Spotify
Your Apple Music library plays straight away, with shuffle, repeat, seeking, volume, Up next and a sleep timer. Your own song files and Spotify work too, and the radio streams thousands of internet stations.
Menu › Media
Seven phone models
Original handsets from different eras: a backlit monochrome bar, a glossy colour phone, a slim metal bar, a flip, and a wide messenger with a full keyboard and landscape screen in five colours, Midnight black among them. The menus, fonts, themes and wallpapers change with each.
≡ › Phone model
Organiser that works
Alarms, reminders and timers ring even when the app is closed. Live weather on the standby screen, a world clock, currency and unit converter, a ringtone composer and the torch.
Menu › Organiser
Java games and apps
Install .jar games from a file or a web address. Java stays ready in the background, so games open in a moment, even with no internet; anything the built-in engine can't run moves to the full engine online. Blocks, Mines and Snake come built in.
Menu › Applications
The real web
Open any site in mobile layout, with bookmarks, text size, image and cookie settings. Install a game straight from a download link.
Menu › Web
Install
Two downloads. One phone.
Both apps are built from this repository's source on GitHub's servers for every release.
Mac
macOS 13 Ventura or later · Apple silicon and Intel
Download KeyPhone.dmg and open it.
Drag KeyPhone onto Applications in the window that appears.
Open it from Applications. The first time, macOS says it can't check the developer. Open System Settings › Privacy & Security, scroll down and click Open Anyway.
If macOS says the app is damaged, run this once in Terminal, then open it again:
Install it with a sideloading tool such as Sideloadly or AltStore. Connect your iPhone, choose the .ipa and sign in with your Apple ID.
Trust the app on the iPhone: Settings › General › VPN & Device Management, then turn on Developer Mode if iOS asks.
With a free Apple ID, iOS stops opening sideloaded apps after 7 days. Reinstall with the same tool to renew; your phone's contacts and settings are kept. The icon follows light and dark mode on iOS 18 and later.
Straight answers
What it can't do.
Some things are walled off by Apple, so the phone leaves them out instead of faking them.
Reading textsiOS and macOS don't let apps read your messages, so there is no Inbox. Messages you send are kept in Sent items.
Call historyThe Log lists calls made from KeyPhone. On iPhone it also logs calls that arrive while the app is open, but iOS never shares the caller's number.
Signal strengthOn iPhone the status icon shows Wi-Fi, mobile data or offline. On a Mac it follows your Wi-Fi strength.
FM radioMac and iPhone have no FM receiver, so the Radio plays internet stations from the free radio-browser.info directory.
JavaThe built-in engine works offline but runs fewer games. The full engine runs far more but loads from the internet, because its licence doesn't allow bundling it.
VoIPNeeds a VoIP service or phone system that supports SIP over secure WebSocket (WebRTC). Calls ring only while KeyPhone is open.
SpotifyYou create a free Spotify developer app and enter its Client ID. Playback control needs Premium, and the sound comes from the Spotify app or a Spotify speaker.
Silent modeiOS doesn't tell apps about the Ring/Silent switch, so KeyPhone checks it every two seconds while it is open. A change can take a moment to apply.
Music on a MacKeyPhone controls the Music app. Up next shows the playlist that is playing, and songs can't be added to it from KeyPhone.
Web versionIn a browser some sites refuse to show inside the phone, and calls, contacts and the camera need the Mac or iPhone app.
Build it yourself
Open source.
The phone is one HTML file. The Mac and iPhone apps wrap it and connect it to the system. On a Mac with Xcode:
# get the code
git clone https://github.com/harkhowalia-1/KeyPhone.git
cd KeyPhone/apple
# needs Homebrew
brew install xcodegen
./make_web.sh && xcodegen generate
open Larch.xcodeproj