A diary, index cards, telegrams and letters typed on a typewriter. The ribbon wears out, the paper yellows, and the bell rings before the margin. There is no backspace that erases: a mistake gets struck out or painted over, and it stays on the sheet. It makes you write slower, and more honestly. Free, no ads, no account, no internet.
A notes app lets you rewrite every sentence until it says nothing. A typewriter doesn't. What you typed stays there, mistakes and all, and that makes a diary honest. Carriage is a typewriter on your phone, with all its friction kept on purpose. The friction is what makes it worth sitting down to.
- The desk. A walnut desk at night: green baize, a banker's lamp, the machine, case folders, a card drawer, a stamp pad and a wire wastebasket. Tap any of them.
- Roll in a sheet. There are four papers.
- A diary page is dated by the dater and goes into the binder.
- An index card holds a note, a recipe or a list. It's filed by its first line and can be typed again.
- A telegram is all capitals, its full stops become STOP, and it's paid by the word.
- A letter goes through carbon. When it's done you send the original, burn it or keep it in the drawer; the copy stays either way.
- Type. The keys are round, in chrome rings, with Russian and English letters, and a second press on shift locks it. A Bluetooth keyboard turns the phone into the machine. Every strike lands a little off the line and a little uneven, and the type bars clack.
- Only forwards. ⟵ only steps the carriage back, so the next letter lands on top. To strike a word out, use the x lever. To retype it, paint it over with correction fluid and type again once it's dry. You get twelve brushes a day.
- The bell and the carriage. The bell rings eight characters before the margin. At the margin the keys lock until you pull the chrome lever (or tap ↵). Tap anywhere on the sheet to roll the platen there. "Write without looking back" hides what's above the current line.
- The ribbon. It's black on top and red below: flip the lever for what hurts or angers you, and every red line is gathered in one place. The underline key sends words to the index. A ribbon lasts about ten pages and fades as it goes; wear one out and a new colour turns up in the box.
- Three machines.
- The office machine is heavy and loud; its o is clogged and its e sits high.
- The portable has smaller type; its a leans and its k barely prints.
- The electric is even and quiet. It hums instead of ringing and returns the carriage by itself.
- The archive. It has search, the index and the red lines. Rubber stamps work instead of tags, and you can have your own stamps made. Case folders are tied with string, and one can be locked in the drawer with the phone's lock.
- Time. Paper yellows with age. The wastebasket is taken out on Monday morning; until then a sheet can be smoothed out again, creases and all. Now and then a page from a year ago slips out of the binder.
- The counter. Mechanical drums show how far the carriage has travelled. It also counts strikes, lines, bells, words struck out and ribbons worn out.
There's no account, no ads, no analytics and no internet permission; the app asks for no permissions at all. Sheets leave the phone only when you send them yourself, as a picture or a PDF. A backup is one JSON file, saved wherever you like.
./gradlew testDebugUnitTest assembleDebug # app.carriage.dev, next to a real install
./gradlew assembleDebug -Pdemo # app.carriage.demo with a desk half a year in
./gradlew testDebugUnitTest -Prender --tests '*RenderArt*' && python tools/shots.py # screenshots
python tools/icon.py # the logo
python tools/res.py # theme and the launcher iconBuilt with Kotlin, Jetpack Compose, Room and DataStore. Everything is drawn in code: the desk, the lamp, the machines, paper with its fibres and yellowing, every strike, correction fluid, stamps, creases and balls of paper. A sheet is stored as the ordered list of everything that landed on it, so nothing typed is ever lost.
MIT. Fonts: Anonymous Pro, PT Mono, IBM Plex Mono, Lora, Manrope and Caveat, all under the SIL Open Font License.
Typewriter sounds are recordings, not synthesis (python tools/sounds.py fetches them):
- keys, the space bar and the electric's return come from daktilo (MIT / Apache-2.0) and vim-keysound (MIT);
- the bell and the carriage return come from typewriter.vim, recorded by _stubb and ramsamba on Freesound (CC0).
Paper, stamps and correction fluid are made in code.




