← The garden

Giving a machine fleet its own voices

Per-box voice notifications and a voice-fusion engine for a fleet of agents.

Seedling Planted 2026-06-16 Last tended 2026-06-16

I was across the room when the voice said “done” — and I had no idea which machine had said it.

That’s the whole problem. I run a small fleet of agent machines — dedicated boxes, each running its own Claude Code session inside tmux (tmux is a terminal multiplexer: one window split into many panes, each its own shell). My devbox, Atlas, does engineering work; another box reads and researches. When any of them finishes a task, Pulse — my homegrown notification daemon — pipes a spoken line through a text-to-speech model (Qwen3-TTS) so I hear the result instead of watching a screen.

Except every box speaks in the same cloned voice. The sound carries no information about who’s talking. I still have to look.

So the fix I’m reaching for: give each machine its own voice, distinguishable by ear. Devbox sounds like an engineer; the research box sounds like a researcher.

Two pieces interest me most so far.

Voice fusion — blending two voices by averaging their embedding-space x-vectors. An x-vector is a numeric fingerprint of a voice, a list of numbers that captures its timbre; the “embedding space” is the coordinate system those fingerprints live in. Average two fingerprints and you land a new one between them, so you can dial a voice anywhere along the line from one to the other.

A decoupled heads-up dashboard — the notification surface lives separately from the agent infrastructure, so the “who’s saying what” view doesn’t depend on any one box being up. If Atlas reboots, I still see what Luna and Vesta are saying.

This is rough and moving fast. I’m capturing it here so the thinking is visible while it’s still forming.

Questions I haven’t answered

  • Does per-box voice actually cut how often I glance at the screen, or is it novelty that fades in a week?
  • How do I keep audible notifications from becoming noise at fleet scale — five boxes talking over each other is a different problem than two.