Skip to content

The Workbook  ·  Devlog

Smooth Operator

Bounded AI. An analog touchtone phone (the Red Phone) bridged to a Jetson Orin Nano running a local voice pipeline. On when the receiver is up, off when it's down, and remembers everything that's ever happened on it without sending any of it anywhere. A real phone, a real voice, a real assistant, all bounded by the wall of the house. Its art mode, Smooth Operator, prints a fresh 16-page zine of your day every morning: voice in, paper out.

The rig

Hardware: Analog touchtone phone · Grandstream HT801 ATA · Jetson Orin Nano Super (8GB ARM64) · Meshtastic LoRa node · Fridge-mounted barcode scanner.

Voice pipeline: faster-whisper (STT) · silero-vad · Qwen 2.5 3B via Ollama (LLM) · Kokoro TTS.

Personas: twelve lines on the directory, from the operator to the daemon. Dial a number, get a different mind. Full roster below.

Cloud touch: Anthropic Claude API for postmortem analysis only, capped at 30 calls/day. Everything else stays in the house.

Pairs with: Smooth Operator (the daily printed zine), and Red Phone v.2 (the wrist-mounted feedback collar, near working).

The directory

Dial a number, get a different mind.

Every extension is its own system prompt, its own voice, its own disposition. Same engine, different mind on the line. Some are staff. Some are experiments that earned a number.

The Operator, illustrated

EXT. 0

The Operator

The switchboard. Knows who you need before you do.

The Manager, illustrated

EXT. 1

The Manager

Runs the household ops. Direct, dry, no closers.

Security, illustrated

EXT. 3

Security

Suspicious of everything, including this sentence.

The DJ, illustrated

EXT. 4

The DJ

Spins anything you can name. Hold music with opinions.

The Professor, illustrated

EXT. 5

The Professor

Gentle expert with all of Wikipedia on a local disk.

HAL, illustrated

EXT. 6

HAL

2001, but helpful. Mostly.

The Coach, illustrated

EXT. 7

The Coach

Picks your next task and won't take maybe for an answer.

Ideas, illustrated

EXT. 8

Ideas

Straight to tape. Say it before it evaporates.

The Daemon, illustrated

EXT. 666

The Daemon

King James with the brimstone turned up. Dial with intent.

The Wizard, illustrated

EXT. 949

The Wizard

Cryptic counsel from somewhere up the tower.

The Chef, illustrated

EXT. 2433

The Chef

Speak the list, the cart fills. Knows what's in the fridge.

Kennybot, illustrated

EXT. UNL.

Kennybot

A work in progress that sounds suspiciously like the management.

Plate 01 · Interface lineage

The interface earned it.

The telephone spent sixty years iterating toward twelve buttons, then stopped, because it was done. Everyone alive today already knows how to use one. That ubiquity is the accessibility story: no onboarding, no app, no settings, and for the people who find new interfaces hostile, the elderly especially, the nostalgia IS the user manual.

The candlestick

1900s

The candlestick

A human operator in the loop. You asked a person for a connection.

The rotary

1930s

The rotary

Direct dialing. Ten digits of patience, one satisfying spin at a time.

The touchtone

1963

The touchtone

Twelve buttons so right they never changed. Six decades of ubiquity.

The Red Phone

2026

The Red Phone

Same twelve buttons, new brain behind them. The interface needed nothing.

Plate 02 · Two tones, one digit
1209 Hz1336 Hz1477 Hz697 Hz770 Hz852 Hz941 Hz1ABC2DEF3GHI4JKL5MNO6PRS7TUV8WXY9*OPER0#770 Hz + 1336 Hz = 5. TWO TONES, ONE DIGIT.

Bell Labs tested every layout they could draw before 1963. This one won, and it is still winning.

Plate 03 · The off switch is the cradle
ON-HOOK · CIRCUIT OPEN · NOT LISTENINGJETSONmic idleOFF-HOOK · LIVE, BY CHOICEJETSONmic liveTHE RECEIVER IS THE SWITCH.

Hanging up is not a setting. It is a fact of the circuit.

And when you hang up, it hangs up. The receiver is the mute switch the smart speakers never shipped.

Plate 04 · The experiment, Feb to Jun 2026

Five months on the line.

  1. FEBWhy this and not an Echo
  2. MARHardware on the desk
  3. APRFirst fully local call
  4. APRNine personas on the dial
  5. APRAuto-databanks emerge
  6. MAYThe zine prints itself
  7. MAYOff-grid over LoRa
  8. MAYChef orders the groceries
  9. JUNScan-on-throw-away
  10. JUNMovies on the OLED
  11. JUNShock collar hacked open
  12. NOWIn service. Still picking up.

Plate 05 · The exchange

One dial tone, many machines.

The phone turned out to be a socket. Anything that can speak or listen can plug into it, so the experiments keep docking.

  • SMOOTH OPERATORprints a zine every morning
  • THE CHEForders groceries via Kroger
  • BARCODE SCANNERscan the empties, restock
  • PIP-BOY MOVIEStrailers on a 128x64 OLED
  • MESHTASTICvoice to LoRa, off grid
  • CURSE-COLLAR433 MHz vibrate on a cuss
  • RED PHONE V.2collar hacked, wiring next

Solid line: running today · amber: in progress · full entries in the workbook

Plate 06 · Chef 2.0, the design

She gets better at you.

The chef's promotion, spec'd. Four parts: a pantry that holds beliefs with dates instead of assumptions (built from her own interviews, from watching the cart, and from aging things out). A taste memory where every yes and no becomes a standing profile. The dinner ritual: an end-of-day call, twenty minutes or forty-five, spending or scraping, then one dish at a time until a yes. And her cookbook, where approved dishes get saved as your recipes.

The Chef 2.0 dinner ritual flowchart: pantry inputs, taste memory, the end-of-day call, one dish at a time, the Kroger cart with a human confirmation gate, and the cookbook loop labeled she gets better at you

A yes diffs the recipe against the pantry, the gaps go in the cart, and you confirm checkout. Personal Blue Apron, bounded by the same wall as everything else.

The pantry

Her own branch of the database, holding beliefs with confidence dates, never assumptions. Three feeds keep it honest: she interviews you ("got eggs? butter still alive?"), she watches the cart (ordered means stocked), and she ages things out (milk does not last three weeks). When a belief goes stale, she asks instead of guessing.

Taste memory

Every yes and no you give a suggestion gets logged, the same way the operator's feedback bank works. Quick, cheap, simple, snacky, none of that one thing: the answers become a standing profile she reasons with, and the profile drifts as the household's tastes do.

The dinner ritual

An end-of-day call. "Got 20 minutes or 45? Feeling like spending or scraping?" Then one dish at a time, never a menu, because the one-thing-at-a-time rule that keeps every persona on this phone listenable applies to food too. No moves to the next dish. Yes diffs the recipe against the pantry, sends the missing ingredients to the Kroger cart, and waits for you to confirm checkout in the app. Snack mode is the same ritual with harder limits: under ten minutes, under five ingredients, no shopping.

Her cookbook

Dishes you approve get saved as your recipes, not the internet's. Kroger's API has no recipe endpoint, so the cookbook is hers: cached locally from open recipe sources, scored against your profile, and on Blue Apron nights the morning zine prints the recipe card, because steps on paper beat steps read down a phone line.

First law, written after catching her claiming cart adds that never happened: she never says done without a verified response.

Build order

  1. P1 · Give her hands: pantry, preferences, and cart tools on the realtime path, and fix the cart bug first.
  2. P2 · The dinner-suggestion loop and the cookbook.
  3. P3 · Spoonacular pantry-matching and cart autofill.
  4. P4 · She calls you at 5:30.

Devlog

13 entries · newest first

What got added, what got broken.

  1. CONCEPT

    The Chef gets ambitions

    The chef is getting promoted from order-taker to household food expert. The design, spec'd in full today: a proactive 5:30 dinner call with three candidates filtered by what's actually in the house, time, and budget. Yes or no, it keeps suggesting and it keeps learning. A pantry interview mode that firms up what it believes is in the fridge. A Blue Apron mode where picking a dish auto-fills the Kroger cart with the missing ingredients for delivery, and the zine prints the recipe card in the morning. A snack mode: under ten minutes, under five ingredients, no shopping allowed.

    The chef gets its own branch on the database: inventory beliefs with confidence scores (fed by the fridge scanner, order history, and its own questions), a local cookbook cached from open recipe APIs (Kroger's API has no recipes endpoint; the cookbook comes from elsewhere), a learned taste profile that drifts with our answers, and a hand-verified ingredient-to-product map, because fuzzy product matching once turned sparkling water into navel oranges.

    One confession built into the spec: the current chef sometimes says "added to your cart" when the cart call silently failed. Chef 2.0's first law is written against it: never claim an action succeeded without a verified response.

  2. EXPERIMENT

    The shock collar is hacked

    The dog collar is open. Case cracked, board out, the solder points that matter mapped. The remote's button contacts are the API now, which means the phone can drive the collar the same way a thumb would, minus the thumb.

    Near ready to implement. The remaining work is wiring, not wondering: solder the points, strap the receiver to a wristband, and let the AI on the line deliver feedback you can feel. Vibrate first, obviously. Full plan lives at Red Phone v.2.

  3. EXPERIMENT

    Pip-Boy Movies

    The OLED on the dashboard now plays movies. Trailers, mostly. Short, low resolution, monochrome, dithered down to fit the 128×64 panel. The picture quality is terrible on purpose.

    It's a proof of concept in the Pip-Boy register: a tiny screen on a household terminal showing video that has no business being there. You're not watching cinema, you're watching a thumbnail of cinema, and the gap between the source and the rendering is the joke.

    Frames decode on the Jetson, downsample to the OLED's grid, push over I²C at whatever framerate the bus can carry. Useful for nothing. Worth doing because the constraint forces a specific aesthetic and proves the display layer is more general than it looks.

  4. BUILT

    Barcode scanner: scan-on-throw-away

    A barcode scanner now sits on the fridge. When something's done, empty milk carton, last yogurt, the spice jar you finally finished, you scan the barcode on the way to the trash and the chef knows to put it back on the list.

    Turns the throw-away moment into a one-second replenishment. Frequently-ordered items refill themselves without anyone having to remember. The chef's inventory model used to be "rough but useful"; with the scanner it's actually reliable for the staples.

  5. BUILT

    The Chef persona, Kroger API wired in

    New persona on the line: the chef. Pick up the receiver, dial the chef, ask for what you need.

    Two things it does. Orders the groceries, speak the list the way you'd tell a corner-store clerk ("milk, bananas, that olive oil we like, half a pound of coffee, two boxes of pasta"); the chef builds the cart against Kroger and the order goes in. Suggests recipes, looks at what's around, considers what's been heavy lately and what's going off, proposes something the family will actually eat.

    Talking to "the chef" feels different than poking at a grocery app. Voice-first layer over a long-tedious task. No brand-preference quizzes, no up-sell. The chef already knows the household because the phone does.

    Closes the household loop one more notch. The phone tracks reminders, schedules, and the agenda; now it tracks the food too.

  6. BUILT

    Off-grid: Meshtastic two-way

    The phone now talks to a Meshtastic device. Two-way, voice on one end and LoRa packets on the other.

    Pick up the receiver, speak, STT turns it into a packet that goes out over the mesh. A packet comes back in, TTS reads it aloud through the handset. Voice conversation with someone (or something) on a network with no cell tower, no internet, no infrastructure.

    Two directions worth building toward next: components the mesh can trigger (packet arrives → fire something physical: light, alarm, door, routine); and components that trigger the mesh (sensor trips → push a message out to an off-grid node). The phone becomes a voice gateway between the household and a radio network. Works when the grid is down.

  7. BUILT

    Smooth Operator, the daily zine prints itself

    Every morning the system assembles a fresh 16-page zine and prints it. The agenda woven together with an inspirational design piece, a design or cultural-history entry, and a topic pulled from the design press. Voice in, paper out.

    The pieces: an agenda layer (reads the same databanks the phone already has), a scout subprocess that scans curated design blogs, a rules library that decides what goes where, image gen for original imagery, a late-afternoon callback for tomorrow's issue, and a connected printer.

    Local-only philosophy holds. Agenda data never leaves the house; design material is pulled in; the issue is assembled locally; the paper is the only thing that leaves the machine.

    It also closes a loop the screen never could. A daily agenda you have to open an app to see gets ignored. A daily agenda that prints itself into an object you find on the desk gets read.

    Full writeup: Smooth Operator.

  8. BUILT

    Postmortem subprocess + auto-databanks

    After every call, a small subprocess takes the transcript and asks Claude to analyze it. What topics came up, what action items, what threads. The output drops into a topic_signals table.

    When the same topic shows up across two or more calls, the system automatically creates a databank for it: a structured knowledge container the next call can query against. Nobody designed these databanks up front. About seventy-eight of them have emerged on their own.

    The system is figuring out what its own knowledge structure should look like by watching the conversations it has. Cloud cost stays bounded: Claude is capped at 30 calls per day for the postmortem path.

  9. BUILT

    Backend modes: independent / Claude / hybrid-learning

    Three backend modes for the LLM layer. Independent runs the local model only, no cloud, fully bounded. Claude routes the conversation through Claude API for the hard questions. Hybrid-learning is the long-term play: route to Claude when needed, but log every exchange in a way that fine-tunes the local model over time so the cloud is needed less and less.

    The end state is a local model that's smart enough for the household-level work without ever phoning home. Hybrid-learning is the path there.

  10. BUILT

    The persona roster

    Dial a digit, get a different mind. The current cast:

    • 0: Operator. The default. Hands you off to the right line.
    • 1: Manager. Direct, dry, runs the household ops.
    • 2: Sagan. Carl. Wonder, perspective, the cosmic frame.
    • 3: Security. Suspicious of everything.
    • 4: HAL. 2001, but helpful. Mostly.
    • 5: Hawking. The harder physics questions.
    • 6: Professor. General research, gentle expert.
    • 7: Ideas. Stream-of-consciousness idea capture.
    • 8: Chef. (Newest. See above.)

    Each persona is its own system prompt, voice profile, and conversational style. The same engine, pointed at a different mind.

  11. BUILT

    First call: voice in, voice out, fully local

    The first end-to-end call worked. Pick up the receiver, dial an extension, speak, get an answer back through the handset. No cloud, no Wi-Fi roundtrip to anyone else's servers.

    The stack: analog touchtone phone → Grandstream HT801 ATA → Jetson Orin Nano Super running a raw-Python SIP/RTP server. Voice pipeline: faster-whisper for STT (CPU; no aarch64+CUDA wheel for Jetson yet), silero-vad for voice activity, Qwen 2.5 3B via Ollama for the LLM (GPU, keep_alive=-1), Kokoro TTS for the voice back. Storage in SQLite plus a vector DB for semantic search across everything ever spoken into the system.

    The thesis worked. A real phone, a real voice, a real assistant, all bounded by the wall of the house.

  12. BUILT

    Hardware on the desk

    Everything arrived. Jetson Orin Nano Super (8GB ARM64). Grandstream HT801 ATA (the bridge between an analog handset and SIP). A vintage analog touchtone phone, red, the kind you can still find on eBay for not much.

    The phone has been sitting on the desk for a while waiting for the rest of the parts to make sense together. Now they're here. Time to build.

  13. OPEN QUESTION

    Why this and not an Echo

    Wrestling with the framing before the build. The market is full of voice assistants. Alexa, Google Home, Siri, all of them listening all the time and shipping the audio to someone else's servers. The premise of this build is the opposite: an assistant that's only on when the receiver is up, only listens when you choose to talk to it, and never sends a thing outside the house.

    The bet is that there's a real category here. bounded AI, bounded by physical walls and physical gestures, not by privacy policies. Whether anyone besides me wants this is the open question. The build is the experiment.