oddrefresh

About PennyOS

About PennyOS

A drawn, keyboard first shell for the Beepy handheld. Eighteen apps on a 400 by 240 one-bit screen, an encrypted card, and no API keys on the device: your server does the thinking.

A pocket computer that leaves the API keys at home

PennyOS turns the Beepy, a palm-sized Linux handheld with a BlackBerry keyboard, into a pocket computer: eighteen apps on one 400 × 240 black and white screen. Your own server does the thinking, and the device holds no API keys.

The PennyOS Home screen: eighteen app icons in a grid, each with a jump letter

The screen is a real PennyOS frame, rendered by its simulator with demo data.

Free and independent. The source is shared by request while PennyOS is pre-1.0.

Read the guide · Request the source:

Meet the Beepy

A palm-sized Linux computer made by SQFMI: a crisp black and white screen, a BlackBerry keyboard with a trackpad, and a Raspberry Pi inside. It is a little bigger than a deck of cards.

  1. Screen. A 2.7 inch Sharp memory LCD, 400 × 240 pixels, pure black and white. It reflects light like paper, reads well in sunlight, and holds its image on almost no power.
  2. LED. One colour light. PennyOS uses it for sync, new mail, overdue items and low battery.
  3. Trackpad. An optical pad that works as arrow keys. Click it for Enter.
  4. Call, Berry, Back, End Call. Call is Control, Back goes back everywhere, and holding End Call returns Home.
  5. Keyboard. A backlit BlackBerry Q20 keyboard, the reason most people want one.
  6. Side button. Tap to lock. Double tap for a torch.
  7. Power switch. On the left edge, and the right way to turn it off.
  8. USB-C. On the bottom edge, for charging.

Inside: a Raspberry Pi Zero 2 W running Linux, an RP2040 chip that runs the keyboard and power, and a 2000 mAh battery. 74 × 104 × 15 mm. See photos of the real device from its maker.

PennyOS Home in the os8 theme

Eighteen apps. One letter each.

Grouped by what each one needs, because on a device you carry, that is the question that matters. Every app has its own page in the guide. See the apps.

The server does the thinking

PennyOS is the pocket end of an Obsidian vault kept on an always-on computer you own. The Beepy reaches that computer over SSH, and a gate on it decides exactly what the device may ask for.

  • Ask runs Claude Code inside your vault and draws the answer as it streams.
  • Vault reads a mirror of your wiki, even with the radio off.
  • Notes and Journal sync one way into the vault's inbox.
  • No service credential lands on the device. Mail tokens, search keys and your Anthropic login stay on the server. The device holds its own SSH key and random pairing ids.

Two paths out. Everything personal goes through the gate. Public, keyless data goes straight to the internet.

  1. The internet. Open-Meteo, OpenStreetMap, BeaconDB, Wikipedia, and the hubs for Link, News and Store. Keyless, straight from the Beepy.
  2. Beepy. PennyOS, holding no service keys.
  3. The gate, over SSH. pull push ask localask glance usage mail search storefront
  4. Your server. Obsidian vault, Claude Code, a local model, a console, and every credential.

How it works with Obsidian

Four ways to wear Home

  • grid: every app on one screen, the jump letter tucked in each cell's corner, a status line along the bottom.
  • os8: a Mac OS 8 homage. Home is a platinum window, and Space drops a menu from the penny in the menu bar.
  • win95: a Windows 95 homage. Home is a maximized window over a taskbar, and Space opens Start.
  • terminal: a dir /w listing in an 8 by 16 grid, always light on dark, whatever the display mode says.

Home in the grid theme.

Home in the os8 theme: a platinum window with a menu bar.

The Start menu in the win95 theme.

Home in the terminal theme.

Choose one under Settings > Display > Home theme. A theme dresses the band every app draws under, the boot splash and Home itself. Apps keep their own layout, so nothing moves when you switch.

Offline is the normal case

You land somewhere, roaming is off, and there is no plan yet. That is when a pocket computer earns its place, so PennyOS caches on purpose.

WithWhat works
Nothing at allNotes, Journal, Vault on its mirror, Keys, Clock, Solitaire, and every cached page: the last forecast, Field's city dossier, Mail and News as of the last sync, Search and Store history.
A phone hotspotWeather, Field, News, Store near you, Link to the glasses, and Locate by the Wi-Fi around you.
Your server, from anywhereAsk, Chat, Mail, Glance, Search, Usage, the Store dig and sync. Tailscale on the device reaches the server away from home.

Working away from home

Lose it, and lose nothing

A pocket computer gets left on trains. PennyOS is built for that day.

  • An encrypted card. Notes, caches and the device's SSH key live in a LUKS2 volume using Adiantum, which runs three to four times faster than AES on the Pi Zero 2 W.
  • A PIN at every boot. Wrong guesses wait longer each time. Journal and the terminal always ask.
  • A gate, not a shell. The device's SSH key runs a short list of fixed commands on your server, and every call is logged.
  • One line to revoke. Delete the device's line from your server's authorized_keys and it can reach nothing.

Read the security model

What you need

A Beepy, a card, and an evening. The server is optional: without one, the offline and internet apps still work.

Requirements (v0.31)

DEVICE   Beepy (SQFMI) with a Raspberry Pi Zero 2 W
CARD     microSD, 16 GB or more
OS       Raspberry Pi OS Lite, Bookworm
DRIVERS  sharp-drm and beepy-kbd (install.sh builds them)
PYTHON   3.11 or newer, standard library only

OPTIONAL
SERVER   an always-on Mac or Linux box with SSH,
         holding an Obsidian vault
NETWORK  Tailscale, to reach it away from home
GLASSES  Even Realities G2 with the Penny app, for Link

Access is granted by hand. Send your GitHub username and a line about your setup through the Contact me button. · Install guide

Data, services and software PennyOS relies on

  • Weather, air and geocoding by Open-Meteo.com, CC BY 4.0
  • Map data © OpenStreetMap contributors, ODbL, via Overpass API, Nominatim and Photon by Komoot
  • Place summaries from Wikipedia, CC BY-SA 4.0
  • Wi-Fi location by BeaconDB
  • Vault reads markdown vaults in the Obsidian format
  • Ask, Store dig and Search web pass run Claude Code by Anthropic on your server
  • Chat runs a local model with Ollama
  • Hubs and this site on Cloudflare Workers
  • Store reads DataSF open data
  • Search reads crt.sh, RDAP, the Internet Archive, Shodan InternetDB, ipwho.is, Gravatar, GitHub and MailAccess
  • Mail reads Gmail over IMAP with Google OAuth
  • Panel fonts Spleen by Frederic Cambus (BSD 2-Clause) and Terminus by Dimitar Zhekov (OFL 1.1)
  • Hardware Beepy by SQFMI; Beepy drivers by ardangelo; Raspberry Pi OS

Full credits and licenses

PennyOS is an independent project, published by oddrefresh. It is not affiliated with, endorsed by, or sponsored by SQFMI, Beeper, BlackBerry, Raspberry Pi Ltd, Obsidian, Anthropic, Google, Cloudflare, Even Realities, Apple, Microsoft, or the owners of Inspector Gadget. All trademarks belong to their owners. Software is provided as is, without warranty. See disclaimers.

Panel images on this site are real frames from the PennyOS simulator, rendered with demo data.