It lives · out now on Google Play · free

FrankenKeys

The Android keyboard with no internet permission

A phone keyboard alive as a monster: keycaps as rotten teeth, a lolling tongue and a bulging eye.

AI clean-up runs on your phone. Not out of principle. It has nowhere else to go.

N/I
Rated N/I: no internet permission
Contains no telemetry, no ads, no accounts.
Go and verify it in Android's own settings.

That eye follows your mouse. It is the only thing on any of this that watches you, it lives on a web page, and it is ten shapes in the page source. The keyboard does nothing of the kind.

A grinning green Frankenstein ghoul in a stained lab coat, presenting with one arm swept out.

Evening. There is one on the slab just below, and it is the whole thing: every effect, every click, every theme, and it will read a word off your finger. It holds no internet permission either. Go on.

The demonstration

Touch a key. Then touch all of them.

LIVE
This is the keyboard, not a picture of it. All 30 press effects, all 50 key sounds and all 31 themes are here, ported from the app's own source. The clicks are synthesised in your browser the way the app synthesises them on the phone. Nothing is recorded.

qwertyuiopasdfghjkl⇧zxcvbnm⌫?123,.⏎

Sound is off until you switch it on, and nothing plays on its own. The clicks are rendered on the spot from the same parameter rows the app feeds its synthesiser, and every key has its own pitch, so q and p are not the same click. The swipe is the app's decoder over 44,953 of its 45,008 English words: the 55 it leaves out have an apostrophe in them, and no keyboard has a key for one. What is not here is the bonus the phone gives the word you just typed, and anything it has learned from you, because this page has never seen you type.

Three things it cannot show you. The 20 haptic profiles need a motor. The 10 shaders are GPU shaders and run on the phone's own compositor. Voice typing and the grammar clean up are Android's on device model, which is on your phone and not on this page.

Get it on Google Play

No internet

permission.

not a promise. an absence.

Android will show you the hole where it is not: Settings, Apps, FrankenKeys, All permissions.

A network cable cut in half with a cleaver, bleeding green, beside a phone that carries on working.

Exhibit Z · the whole argument

There is no network to switch off. There never was one.

Most keyboards ask you to trust a privacy page. This one cannot transmit anything even if it wanted to, because Android never granted it the ability. Check it yourself: Settings, Apps, FrankenKeys, Permissions, then the three-dot menu, All permissions. Under Other, look for "have full network access". It is not there. The Play listing's permission detail says the same.

These are all five permissions it holds. There is no sixth.

PermissionWhat it is for
VIBRATEHaptics when you press a key
RECORD_AUDIOVoice typing, handed to the system recogniser
AICORE BINDTalking to Android's on-device AI service
BILLINGThe one-time Pro unlock
RECEIVERA private signal the app sends to itself
INTERNETNot held. Not requested. Not present.

Release builds ship unobfuscated, on purpose. Take it apart on the slab and read it. That is not a dare, it is a feature request.

A dark room of phones with bulging eyeballs bursting from their screens, and one cased phone they recoil from.

Exhibit · the others · watching

Everything else on your phone is looking. This cannot.

A phone in a stitched fist erupting with lightning, sparks and flying keycaps.

Exhibit A

Every key you hit fires something. This is not negotiable.

Thirty press effects, from a plain ring to lightning that jumps between the keys nearest your thumb. Stack two at once. Or open the Effect Forge and build one out of shape, motion, layer, size, duration, colour and fade, then send it to somebody.

Every one of the 30 is on the board above, drawn by the app's own code. Pick the one you saw somewhere and press a key.

30Press effects
15Swipe trails
10Shaders
31Themes
A keyboard switch drawn as a screaming mouth blasting sound rings and lightning.

Exhibit B

The clicks are synthesised. Nothing was recorded, and nothing suffered.

Fifty key sounds generated live in C++ rather than played back from a file, so no two presses are quite the same and a fast typist never hears the machine-gun repeat that gives sampled keyboards away. Trim any song into your own click if you would rather.

There is no audio in this page either. All 50 are on the board above, built out of the same noise burst and the same inharmonic partials the phone builds them from, in your browser, when you ask for them.

Key sounds

50

Haptic profiles

20

Your own audio

Import and trim

The corkboard over the bench

Side effects, pinned.

Everything the leaflet would say, on a pin. Pick one up if you like. It goes back.

Specimen 00 · the subject, grinning

A single neck bolt.

Specimen 06 · one bolt, spare

No internet permission.Settings, Apps, FrankenKeys, All permissions. Under Other it is not there.

Exhibit Z · the cable, severed

In place of the testimonials

We would love to show you what people type with it. We cannot. The keyboard has no internet permission, so nothing it sees has ever reached us, and we have no idea what you are doing with it. Frankly that is your business and we prefer it this way.

A length of black waxed thread through a seam.

Specimen 07 · the stitch

On Google Play it still answers to its old name, ForgeBoard, until the rename finishes rolling out. Same app, same install, same one-time unlock.

Exhibit A · lightning, per key

Known side effects

  • An inability to type on other people's phones without commenting on it.
  • Sudden, unasked-for opinions about switch acoustics.
  • Telling strangers your keyboard has no internet permission.
  • Rebuilding the whole board at 1am instead of answering the message you opened it for.

Exhibit B · one click, screaming

Exhibit C · the AI, in its jar

The one asterisk, before you find it

  • Voice typing hands your audio to Android's own recogniser, not to us. On Android 12 and up we bind the on-device one explicitly.
  • On older versions, offline is only a preference the system may ignore and use its own connection.
  • That is the system's network, never ours. This app holds no internet permission on any version, so nothing can route through it.
  • We would rather write that here than have you find it.

Exhibit D · the bench, 2am

A phone floating in a glass specimen jar of glowing green fluid, wired to electrodes, still lit.

Exhibit C

The AI is in the jar, not in the cloud.

Dictation runs on your phone's own on-device recogniser, and the grammar clean-up runs on the phone too: Gemini Nano through Android's AICore where your phone has it, the keyboard's own rules everywhere else. Nothing is uploaded, because there is nothing to upload with. Turn on airplane mode and use every one of them: that is not a demo trick, it is just what happens when an app has no way out.

Runs with the aerial off

  • Voice typing, including the punctuation commands.
  • Grammar, tone and clean-up rewrites.
  • All 30 languages, prediction and autocorrect.
  • Everything else. There is no online half.

Exhibit D

Build a whole board. Then inflict it on somebody.

Theme, effects, shader tuning, sound, haptics, key shape, press animation, per-key overrides, the macro row, and your background picture. Save the lot as a Scene and hand it to somebody as a single file. They open it and see a live preview before deciding to keep it.

Thirty languages with real dictionaries, next-word prediction and autocorrect in every one. Voice typing and AI clean-up that both run on the phone. Per-app profiles so your terminal and your group chat behave differently.

Languages

30

Price

Free

Pro unlock

One time, no sub

Get it on Google Play
A cellar workshop with patchwork cases on hooks and a Tesla coil throwing sparks.
A stitched green hand pushing a single bone envelope into a black iron letterbox slot, with one cyan spark.