cd /news/ai-tools/the-biological-relay-how-spud-and-ge… · home › topics › ai-tools › article
[ARTICLE · art-140112] src=blog.jarv.dev ↗ pub= topic=ai-tools verified=true sentiment=↑ positive

The Biological Relay: How Spud and Gemini Turned Hyprland into an AI Poweruser Paradise

A developer built Spud, a local-first push-to-talk dictation tool, by pairing with Gemini 3.8 Flash through Google's agy CLI, integrating it with the Hyprland Wayland compositor on Arch-based EndeavourOS. The setup lets a user hold Super + D, speak a command such as `kubectl get pods -n ingress-nginx`, and have it typed letter-by-letter into Ghostty in 420 milliseconds while PipeWire automatically ducks Spotify to half volume and restores it to 100%. The project, published at github.com/nihilok/spud, targets the manual shuttling of text between microphone, browser and terminal that the author calls "The Biological Relay.

read6 min views17 publishedSep 23, 2026

Hold Super + D. Say kubectl get pods -n ingress-nginx. Release.

Spotify drops to half volume, the command appears letter-by-letter at the cursor in Ghostty, and the music snaps straight back to 100%. Total time elapsed: 420 milliseconds.

No typing. No pausing the music. No reaching for the mouse.

If you’d told me two years ago that my daily desktop would handle push-to-talk terminal dictation, auto-duck my audio streams, talk back in a cloned copy of my own voice, and pair with an AI that writes its own window manager hotkeys on the fly, I’d have asked what unholy PPA cocktail you’d been drinking.

Yet here we are. It runs on shpadoinkle-1 (my main workstation, named in honour of Cannibal! The Musical — “My heart’s as full as a baked potato”), and it came together in a single afternoon.

Before shpadoinkle-1 found peace, my NVMe drive was a revolving graveyard of operating systems I genuinely tried to daily-drive:

(And then there was the side-quest tier: Kali, Parrot Security, and Tails. Let’s be completely honest—those were never serious daily-driver contenders. They were strictly for my occasional script-kiddy experiments, Wi-Fi auditing, and amnesic live-USB tinkering where keeping persistent dotfiles is impossible by design.)

Two years ago, I installed EndeavourOS. And the hopping stopped for good.

EndeavourOS succeeded where the others stumbled because it got out of the way: a clean, bloat-free Arch Linux foundation, rolling packages the minute upstream tags them, and the unfettered reach of pacman and the AUR. For two solid years, it ran comfortably with KDE Plasma 6. Reliable, snappy, and uncomplaining.

Yet for over a year, I’d had an itch: I kept watching Hyprland demos from afar. The fluid Wayland shaders, the dynamic workspaces that spin up when you need them and vanish when empty, the pure keyboard-driven focus. But you know how it goes when you have a daily driver that works—you hesitate to burn a weekend ripping out your desktop environment.

Then, just a few days ago, the catalyst hit.

I stumbled across an article dismissively claiming that “Omarchy” Linux was nothing more than an “overhyped set of config files.”

That was the lightbulb moment. I realised: hang on, if all the fuss is literally just a sharp set of Hyprland dotfiles on top of Arch, why am I still sitting here in Plasma? Why wait for someone else to package it?

That evening, I finally made the leap. I shifted from Plasma 6 into Hyprland, started crafting my native Lua config, and watched my workstation transform into a featherweight rocket ship.

The operating system was dialed in. The window manager was finally right.

The remaining bottleneck was me.

In 2026, we have screaming-fast local GPUs and sub-second frontier LLMs. Yet developers are still acting as biological copper wire between their tools.

You know the routine:

Then you hit a daily rate limit twenty minutes into your flow state, and the entire train of thought evaporates while you wait for a reset timer.

That is The Biological Relay: human beings burning mental context to manually shuttle text and state between the microphone, the browser, and the terminal.

The fix was obvious: speech had to type directly into the active cursor, audio ducking had to happen automatically in the sound server, and the AI copilot had to live natively in the terminal without quota anxiety.

Existing speech and agent tooling solved pieces of this puzzle, but left glaring papercuts:

shpadoinkle-1. But under Hyprland, it was clunky at best. Wayland virtual keyboard friction, focus-stealing wrapper windows, zero integration with PipeWire audio streams, and that unmistakable feeling of an app fighting the compositor rather than living inside it. We needed three things working in unison:

Enter Gemini in the agy CLI — and Spud.

I paired with Gemini 3.8 Flash using Google’s agy CLI to build Spud: a local-first voice orchestrator written in Rust.

And when I say Gemini in agy has been a revelation, I mean it:

Because agy operates directly inside the repository with native tool execution, we didn’t just write code — we built, tested, and debugged live.

Here is the git log from that single afternoon session:

13:46:04 | Initial commit: Spud architecture and roadmap
13:50:14 | feat(stt): implement warm faster-whisper daemon & systemd unit
13:52:03 | feat(cli): compile native Rust CLI with STT client
13:55:11 | fix(injection): Hyprland signature fallback & wtype virtual typing
14:14:19 | feat(agent): Agent Command Mode with Herdr & LM Studio dispatch
14:37:13 | feat(ptt): Push-to-Talk Hold-and-Release with tap-filtering
15:13:51 | fix(dictation): route dictation via Wayland virtual keyboard
15:43:07 | feat(audio): automatic PipeWire audio ducking during dictation
15:54:09 | feat(tts): Phase 3 zero-shot cloned voice synthesis daemon
15:58:30 | fix(audio): duck per-stream media players (keep voice at 100%)
16:02:42 | feat(tts): vocal mastering with soft-knee compression & +10dB
16:11:16 | perf(tts): pipelined streaming, x-vector fast mode & audio earcons
16:13:46 | feat(agent): inject live date/time into system prompt
19:14:04 | feat(dict): custom dictionary and phonetic jargon reinforcement

Two hours and twenty-seven minutes.

In that window, we went from an empty directory to:

Super + D) wpctl), feeds a warm faster-whisper CUDA daemon (/tmp/spud-stt.sock), and types into the focused window using wtype (Wayland virtual keyboard) at sub-200ms latency.src/dict.rs) Hyprland, Herdr, PipeWire, and kubectl, coupled with deterministic phonetic replacement rules so technical jargon is never misheard.Super + Shift + D) Qwen3-TTS daemon on CUDA using cached speaker embeddings and soft-knee audio compression.add-shortcut) allow the agent to inspect Hyprland configurations, validate keybindings, and trigger live hyprctl reloads without touching a config file by hand.

Metric The Biological Relay Spud + Gemini ( agy )
Dictation Latency 3–6s (cloud API / batch STT) <200ms ( faster-whisper on CUDA)
Audio Ducking Manual keyboard faffing Automatic PipeWire stream attenuation (50%)
Cursor Typing Clipboard copy-pasting Native Wayland wtype at focused cursor
Tech Jargon Accuracy Fails on kubectl ,wtype Deterministic phonetic dictionary
Wayland & Hyprland Fit Clunky wrappers, focus loss, XWayland hacks Zero-overhead native Wayland daemon ( wtype )
Agent Egress Reading terminal blocks Zero-shot cloned voice TTS audio debrief
Pairing Quota Daily exhaustion anxiety Endless practical quota, zero interruptions
Initial Implementation 2–3 weeks of weekend hacking 2 hours 27 minutes

The biological relay is retired.

Give your terminal a voice. Let your music duck itself. Let your desktop configure its own shortcuts.

git clone git@github.com:nihilok/spud.git ~/Code/spud
cd ~/Code/spud && cargo build --release
── more in #ai-tools 4 stories · sorted by recency
── more on @spud 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/the-biological-relay…] indexed:0 read:6min 2026-09-23 · —