Fama icon: a faceted crystal glyph in aurora blue and aether cyan
Free · open source · local-first

Fama

A calm local dashboard for Claude Code and Codex. See the work, switch between Messages and Activity, and hear it when you want.

🔒 Local by default · nothing leaves your device unless you turn on optional cloud voice, with your own key
Latest release: Fama 1.1.0 for Windows x64. The universal macOS package is temporarily unavailable while its release build is repaired. Until then, use the source instructions on GitHub.
MIT licensed · no account, no telemetry, no required API key · SHA-256 checksums and signed build provenance included

See it, hear it

Fama showing live Claude Code and Codex conversations in the Messages view

Messages stays readable at a glance; Activity keeps tool calls and results one click away.

Fama settings for local and optional cloud voice, narration, and appearance

Voice, persona, and accent, all configurable, with a live cost estimate as you adjust.

What it does

Live visual dashboard

Text, thinking, tool calls, and results, streaming per session, with a small animated mascot that shows idle / thinking / speaking at a glance.

Watch several projects at once

Not locked to one folder or provider: follow selected Claude Code and Codex projects, see where each lane came from, drag to reorder, and rename lanes.

Spoken narration

Free by default (your OS voice) or a real cloud voice with a persona and accent you write yourself, not a preset dropdown.

It rewrites, not reads

Raw internal reasoning gets condensed into one short natural line before it's spoken, not read verbatim, word for word.

Cost you can see

A running dollar total for the cloud voice, right in Settings. Know what you're spending before you're surprised by it.

Make it yours

Accent color, feed text size, a compact layout, hide the mascot, reduce motion — all in Settings, apply instantly, no reload.

Downloads you can verify

Every release includes SHA-256 checksums, a CycloneDX SBOM, and GitHub/Sigstore-signed build provenance.

Cleaned up, not read word for word

The rewrite step works on any dense internal reasoning, not just code. Two examples:

raw thinking
"Okay so the naive fix here would be to just memoize this at the component level, but that's going to blow up the moment the parent re-renders with a new object reference, since the dependency array does referential equality, not deep equality, so I actually need to either hoist the computation up a level, wrap it in a stable callback, or just bite the bullet and normalize the state shape so this whole class of bug goes away instead of papering over one instance of it."
spoken
"Memoizing here won't hold once the parent passes a new object reference. Better fix: normalize the state shape so this bug can't recur."
raw thinking
"Looking at this campaign, blended ROAS reads fine at 3.2x, but that's brand and non-brand mixed together, and split out, non-brand is actually closer to 1.4x, which means most of the reported lift is really just people who were already going to convert anyway typing the brand name into Google, so before recommending we scale budget here I need a real incrementality read instead of trusting the platform-reported number at face value."
spoken
"Blended ROAS looks good, but that's brand and non-brand mixed together. Split out, non-brand is closer to 1.4x, I need a real incrementality read before recommending we scale this."

How it's different

This isn't the first tool that gives Claude Code a voice, worth being upfront about that.

ToolSurfaceRewrites raw outputPersona / accent
AgentVibesCLI hooks, audio onlyNoPreset voices only
agent-ttsCLI, audio onlyNoProvider voice only
Claude Code NarratorCLI, local audio onlyNoNo
FamaDesktop app + visual dashboardYesFree-text, your words