← vibed.website

DialDash

A dial on the desk that shows everything I would otherwise unlock the Mac for, including, in real time, me using Claude.

DialDash is a small touchscreen with a rotary dial, tipped on its side at the edge of the desk. The board is a Cheap Yellow Display, a ten-euro hobby board with a 2.4 inch screen. It runs a dozen apps from a single Arduino sketch, and everything it knows arrives over one USB cable, whatever the Mac had to fetch first.

The screen I look at most is a meter of me using Claude, tokens per second, colored on the same green-to-red ramp the firmware uses for CPU. Three thousand tokens a second reads fully red. It is the most on-the-nose thing I have built, a device whose favorite subject is its owner using the tool that built it.

None of that is how it started. It started as games.

The black DialDash CYD on its desk stand in landscape, screen lit: SPENT TODAY $125, a TOK/S sparkline, SESSION at 71 percent, CURSOR at 95 percent, CODEX 0 percent, CPU 37 percent and RAM 5.7G, a HomePod blurred behind it.
the dial on the desk · the black board, the landscape one of the two
// tl;dr

01Born 17 April 2026 as a toy. An 8-app launcher, four games and live Spotify all landed on day one. The Claude meter came on day five.

02Today one 21,790-line Arduino sketch runs a dozen apps on a ten-euro board, fed entirely over one USB cable. Its About screen puts it as "12 apps . 1 dial . 0 hacks".

03The most-watched screen is a live meter of my own Claude spend, on the same green-to-red ramp as the CPU gauge. When the usage window runs out, the gauge becomes a WAKE button.

04Four months on it is still absorbing the desk. A Cursor tile in July, Codex folded in in August, music and lights mid-migration onto Home Assistant.

Born as a toy

Day one, 17 April 2026, is seven commits. It opens with a bare bring-up sketch, and by the end of the same day the log reads "Full Screen Dial OS: 8-app launcher with Safe Cracker game", then "Add Traffic, Reflex, Bullseye games + agent-ready documentation". A launcher, four games and live album playback, before the board had a name.

The games were real games. Safe Cracker has you dial in secret digits against a countdown, with a heat meter that climbs from COLD through BURNING to BULLSEYE. Reflex flashes TOO EARLY! in red when you jump the gun. Traffic is a lane-dodger with five enemy cars.

Then it ate the desk

Three days later the Mac side learned to carry any number of apps down the one cable at once. Once a feed was that cheap, everything I glance at became one. The Mac's own vitals went up that day, and weather and Lebanon news beside them.

On 21 April, day five, the first Claude app put the day's token count and cost on the device. The clipboard's history followed two days after that, and the bulbs got local control with no cloud quota to spend. A WhatsApp glance landed at the end of the month, the unread count and who it was from.

On 30 April it got Quick-Ask, ten preset prompts sent to a model with my own context injected, the calendar, the last commit, what is playing. "What should I work on now?" tells the model to give exactly one concrete next action, then "No alternatives, pick a side." The German-word preset prefers Fernweh and Backpfeifengesicht over basic vocab.

The ASK app on the device, page 1 of 10: About this song and Similar artists under MEDIA, then Summarize my day, Explain clipboard, and Translate clipboard to FR under GENERAL.
ask, 1/10 · the presets, still on the device today

On 1 May, day fifteen, a cyclist companion shipped in the morning with pre-ride weather and ride history read from Apple Health, plus an e-bike charge tracker that was cut again by evening. The whole project forked that day onto the board it runs on now, which became the main repo. The original still holds the only copy of the Mac program, and its README now opens with an epitaph, "superseded by DialDash-CYD".

The meter

The Claude app from day five grew into the deepest thing on the device. It is two feeds. The daily totals are cost and token counts, read off the logs Claude Code leaves on the Mac. Running sessions report themselves as they work, so an activity page shows each one as a card with its own state. When a session actually needs a decision from me the banner says NEEDS YOU.

The history page reads $1,904 over the last seven days, about $272 a day, and $13,457 since April.

The Claude HISTORY page on the device: $1904 over seven days, $272.03 average per day, $13457 all time, a daily bar chart against a dashed AVG line, and 7-day tokens reading 17.7K in, 5.86M out.
seven days of claude · history 3/3, the dashed line is the daily average

The number I watch is one page back. Tokens per second, which is roughly how fast the words are moving in and out.

0 tok/s 40% 65% 85% 3,000 tok/s
the heat ramp, drawn from its constants · usagePctColor(), cyd_firmware.ino

The design bar for all of it was set in a decision from 10 May. The answer to "what do I do now" has to be obvious from across the room. So the gauge stops being a gauge once the five-hour usage window has run all the way out. A WAKE button replaces it, and tapping it pokes a session awake on the Mac. If the feed freezes, the gauge greys out and a dim "stale 3m" sits inside it.

The Claude LIMITS page on the device: a session ring gauge at 71 percent, a SESSION RST box reading 32 min, the weekly bar at 20 percent, and a TREND sparkline labelled CHILL.
the gauge the WAKE button replaces · limits 2/3

Cursor got its own app in July. In August, Codex was folded into it rather than given a third screen, and the home tile was renamed LLMS. When a quota is simply gone, the tile drops the percentage and says HIT LIMIT.

The July and August work on this device took about 523 million tokens across seven Claude Code sessions.

One question per screen

The four system pages were drawn as web pages first and rebuilt on the device after. Each one gets one question to answer. Is my Mac healthy. Is the pipe full. What did I just copy. Let me twist a thing.

That last page belongs to the dial, which is the control I use without looking. It turns and it pushes. Touch is there for direct taps on a list, when I am looking anyway.

The DIALDASH home grid on the device, Saturday Aug 29: tiles for SYSTEM, CLAUDE with 2 active, TERMINALS with 1 active, ASK selected in pink, MEDIA playing Somae, and CLIMATE at 19 degrees partly cloudy.
home, page one of two · six of the twelve

One cable

A program on the Mac does the fetching. It polls everything and streams it down the cable. On 4 June the last holdouts, weather, album art and the clock, moved onto that path too, and the board's own WiFi became a fallback that most days never comes up.

It also works out where I am from the Mac's own timezone rather than the network, after the VPN put the device in Berlin while the Mac was sitting in Beirut. Two boards hang off it, and to a computer they are the same board, so it only drives the ports I have written down by hand. One dial lies landscape on the desk. The other runs portrait, mounted.

The blue CYD mounted portrait, build screen up: 09:59 on Saturday Aug 29, 20 degrees partly cloudy, CLAUDE at $124.53 with session, weekly and reset bars, a token histogram, system numbers, now playing and clipboard lines.
The blue CYD held in a hand: SPENT TODAY $125, SESSION resets 35 min at 71 percent, WEEKLY 20 percent, CURSOR 95 percent beside $31.26, CPU 25 percent, RAM 5.4G.
the second cyd, usb-tethered · portrait in the blue case, mounted and in hand

The Arabic lyrics needed a font that did not exist, so the music app got one generated for it and then repaired by hand. The terminal page, which tails whichever Claude session is on screen, streams only while I am looking at it.

The house moves in

In July the Weather app grew a NOW INSIDE strip fed by a sensor on the desk, and got renamed Climate. The speakers, the bulbs and the music controls had been on the board since April, each speaking its own reverse-engineered protocol.

On 13 August a spec ended that. Music and lights are moving onto the house-wide Home Assistant install, and the spec's why-table is a small museum of what keeping three of those alive had cost. A flapping speaker once wrote a 243GB log and filled the disk. The Spotify lyrics rode a cipher that I had to bump by hand every time Spotify changed it. The trade is one sentence, "One integration point replaces three protocol stacks".

The new pages are merged and live. The speakers they can reach are the house's. Kitchen, bedroom, shed, and Krystel's MacBook Pro, which drops off the list when it is offline.

The old apps are still importable, so rollback is one edit, and the cleanup does not begin until seven live dial tests have passed.

The landscape glance screen on the desk: 20 degrees partly cloudy, the calendar reading Stay at Neringa Hotel, Claude session at 71 percent resetting in 32 min, weekly 20 percent, now playing Somae, and the clipboard reading review workflow.
the idle face · weather, calendar, music, clipboard

Still on the desk

As of 29 August 2026 the dial runs all day, and the latest commits are house-sized. The lamp dimmer needs a PUSH before the dial adjusts. The open question I have written down is the Claude side itself, four screens with drill-ins, approaching the limit of what fits on a screen this small.