Perch

a desk instrument for the board in your drawer

The quiet screen
you can talk to.

Perch turns a Raspberry Pi, or any Linux board that can drive a screen, into the handful of things you actually want at a glance. Then it adds one button that talks to whatever AI you already own, even one running entirely in your house.

Kingston
--:--:--
Kolkata--:--
WeatherUV 5
16°C
clear · feels 14° · NW 12 km/h
SAT25° 13°
SUN23° 18°
MON18° 14°
Machines
perch14% · 51 °C
tars9% · 44 °C
Home6 devices
desk lampon · 80%
thermostat21.5°
front doorclosed
News4 feeds
the register
Raspberry Pi ships firmware update for the 5
hacker news
Show HN: I put my homelab on a 7-inch screen
A Raspberry Pi 5 board lying on the desk beside the screen

drawn live in your browser · the real device flips itself at dusk and dims its own backlight


One video, the whole thing.

The full build, from a bare Pi to a desk that answers back. Every dead end included, because the dead ends are where the learning is.

the build, start to finishyoutube

The build video lands here on launch day


install

A Pi, a screen, two lines.

The installer builds everything, wires up the kiosk and the service, and prints the address of your console. After that you arrange the desk from your laptop while the device follows your drag, live.

  1. 01cloneyou can read every line before it runs
  2. 02installbuilds, wires the kiosk, prints your console address
  3. 03rebootthe screen comes up on its own, forever

clock · weather · news work the moment it boots. Nothing asks for a key.

The installer automates Raspberry Pi OS. On an Orange Pi, a Rockchip board, or an older Pi, the same app runs with one manual kiosk step: other boards.

on the pi
git clone https://github.com/mayukh4/perch && cd perch
bash install/install.sh
# then, from anything on your network:
# http://<your-pi>.local:7878/console/

what's on it

Seven widgets, and a folder for yours.

Clockno keys12:04

Time and date, properly set. Optionally a second timezone, for the person you keep missing.

Weatherno keys18°

Wind, rain odds, UV, sunrise and a short forecast, straight from Open-Meteo. It never asks for an account.

Newsno keys

Headlines from the feeds you actually read. Any RSS or Atom URL.

Machinesno keys

This Pi, plus any box running the one-line agent: CPU, memory, disk, temperature.

Home Assistant80%

Your house, discovered from one token. Tap toggles; drag across a lamp sets its level.

YouTube$22

Any channel with an API key. Connect your own account and real revenue sits on your desk.

Custom</>

Any page in a tile: a Grafana panel, a camera feed, an HTML file you wrote yourself.

The full catalog, community widgets included, lives at perchondesk.com/widgets.


the talk button

Ask the desk. It knows what it's showing.

Every question carries a digest of what is on the screen, so a model with no tools can still answer what the weather is doing and how hot the Pi runs. Speech and brain are separate settings, which means fast cloud transcription can sit in front of a model that never leaves your house.

~9s

Fully local

A 0.6B model on the Pi itself, through Ollama. It takes its time, and nothing ever leaves the house.

<2s

Any cloud

OpenAI, Anthropic, Groq, OpenRouter, or LM Studio on your desktop. Anything that speaks /v1/chat/completions plugs in.

Your agent

A webhook, or a command line over SSH: Hermes, OpenClaw, Claude Code, codex. Your agent gets a face.

- brain: ollama
+ brain: anthropic

Change one field. The same desk, a different brain. Nothing else moves.


looks

The palette is a choice.

Four looks ship, and each carries its own day and its own night. Making your own is one CSS block. The console previews it live while you type.

The Phosphor look: green terminal phosphor on black glass
Phosphorgreen phosphor on black glass
The Ledger look: cream stock and iron gall ink with a green tick
Ledgercream stock and iron gall ink
The Meridian look: slate and cobalt, moonlight rather than lamplight
Meridianmoonlight rather than lamplight

hackers welcome

It grows by the widget.

A widget is one folder: a manifest that generates its own settings UI, a component, and an optional server file. It lives in your repo, under your name, and one JSON file lists it in the registry for every Perch on every desk. Point Claude Code or codex at the docs and it has everything it needs.