Heard - Give Claude Code and Codex a voice
Heard is a macOS voice layer for your agentic workflows. It connects to Claude Code, Codex, and Cursor and turns their output into intelligent summaries you can hear. Full commentary when your eyes are elsewhere, or silence until something errors or needs a decision. With agents run in parallel, Heard summarizes at the project level, so you hear where the work stands, not five terminals talking over each other. Pair your phone and it comes with you. Open source, free for personal use.

Replies
Love the idea of replacing terminal watching with listening. does Heard keep historical voice summaries for later review? or is the experience designed to be entirely live?
Heard
@saskia_visser right now it's live, but we're working on a version where you can just put all summaries aside and go through them when you want!
Dial
the project-level summarization across parallel agents is the part that stands out to me, most voice/notification tools just narrate everything and become noise. when it decides what counts as "something errors or needs a decision" across say 4 parallel Claude Code sessions, is that heuristic hardcoded or does it learn what you personally care about over time?
Heard
@omri_ben_shoham1 that's such a great observation. honest answer: heuristics today, learning loop coming soon.
right now each session gets a quick read - a fresh failure is blocked, an agent mid-decision or dumping a long response needs you, everything else is routine. four sessions, four independent reads, and the blocked/decision ones jump the queue over routine progress. a reasoning pass can override those when context warrants, so it's not a fixed rule table, but it's judging the moment, not your personal taste yet.
that personal-preference layer - it learning what you specifically care about over time - is what's coming next. for now you shape it with the verbosity dial per agent!
This is such a smart approach to staying in the loop without constant notifications.
With multiple agents running in parallel, how does Heard decide which project's update to summarize first if two things happen at the same time?
Also curious if the prioritization logic is customizable.
Heard
@aymi_malik thanks!
when two things land at once, hard signals win - a failed build or a permission prompt jumps the queue over routine progress. everything else gets spoken one at a time, with the voice telling you which agent each came from, so nothing talks over anything.
and yeah, you can tune it - a verbosity dial from full commentary down to errors-only, per agent. run a noisy one loud and a background one near-silent.
what's your parallel setup usually look like?
Build Check
The verbosity dial and the project-level summary are the right primitives for parallel work. Before I'd commit to this for real sessions, I need to understand where the session state actually lives: when the context pass holds state across the session, is that in-process memory that disappears when Heard closes, persisted locally on disk, or synced to a server? Open source positioning suggests local, but the Heard Power phone-pairing feature makes me wonder if there is a relay component once you go beyond single-machine.
Heard
@noctis06 good instinct - you've drawn the line in the right place.
session state is local. live agent state lives in memory on the Mac and clears when Heard closes; the "what happened" layer that powers catch-me-up and Q&A persists to local disk, keyed per project. neither touches the network on the normal path.
the phone is where you're right that a relay comes in - a thin Cloudflare pipe that carries narration audio out and voice clips in. but it only moves audio, never state. the summarizing, the context, the decision of what's worth saying all stay on the Mac. the phone is a remote ear and mic; the Mac is the single brain.
so: single-machine is fully local on disk. add the phone and audio transits a relay, but your session state never leaves the Mac.
is a relay in the path the thing you'd want to avoid, or is "audio moves, state doesn't" an acceptable line for you?
Congrats on the launch. The multi agent part caught my eye, giving each agent its own voice identity is a smart way to keep track of parallel sessions without staring at four terminals. How does the filtering decide what counts as a critical event versus routine noise, is that configurable per project?
Heard
@adamkamaneh thanks! filtering works in two layers. some events always speak: permission prompts, failures, a run finishing. everything else gets weighed against the session, so routine stuff stays quiet and the important thing cuts through.
and yeah, you can tune it - a verbosity dial from full commentary down to errors-only, per agent.
are your parallel sessions usually separate features, or several agents on one? curious how people want that handled.
heard is awesome :) love the audio first human computer interaction approach to agent work. this is the future!
I run Claude Code daily and the output itself was never the problem, it's zoning out halfway through a long scrolling session and missing the part that actually mattered. Reading holds my attention for maybe 30 seconds before I start skimming. Hearing usually doesn't do that to me. I am definitely going to try this one.
Dial
@itskellysun makes sense, the reasoning-pass override on top of the per-session read is the part I like - a pure fixed rule table would misjudge the edge cases constantly. shipping the heuristic now and layering personal preference on top later seems like the right build order rather than trying to learn preferences from day one with no baseline behavior.
Running agents in parallel makes the hard-signal versus context-aware split feel like the core design choice, not just a notification feature. For the project-level summaries, how do you handle two agents reaching contradictory states, such as one reporting a successful migration while another has a failing test against the same branch? Does Heard surface the conflict as a decision point, or is reconciliation left to the underlying agent sessions?
Heard
@wesc great question! in that case it would probably decide the contradictory itself is important enough to surface, so it would surface both :)