Documentation

Install First run Usage Voices CLI How it works Troubleshooting Uninstall

Install

Requirements: macOS (Apple Silicon recommended) and Homebrew.

curl -fsSL https://raw.githubusercontent.com/EloiGils/outloud/main/install.sh | bash

Or from a clone:

git clone https://github.com/EloiGils/outloud.git
cd outloud
./install.sh

The installer sets up:

First run

  1. macOS will ask you to grant Hammerspoon Accessibility permission (System Settings β†’ Privacy & Security β†’ Accessibility). This is what lets the hotkey grab your text selection.
  2. Select any text, press βŒ₯⌘L, and listen.
  3. Pick your voice and language in the πŸ”Š menu bar icon β†’ Voice.
The very first reading after login takes a few extra seconds while the model warms up. Every reading after that starts in about 1-2 seconds.

Usage

ActionHow
Read the selected textβŒ₯⌘L β€” in any app
StopβŒ₯⌘K or βœ• on the HUD
Search reading historyβŒ₯⌘H β€” Spotlight-style, Enter replays
Pause / resume (exact)⏸ / β–Ά on the HUD
Replay from the topπŸ” on the HUD (instant)
Change speed liveβˆ’ / + on the HUD (0.5Γ—-3Γ—, persists as your default)
Re-listen to a recent readingπŸ”Š menu bar β†’ click any entry

While reading, a floating HUD shows what's playing:

πŸ”Š Reading your article…    βˆ’  1.5Γ—  +    ⏸  πŸ”  βœ•

Voices & languages

outloud ships with 50+ Kokoro voices across 9 languages. Switch in the πŸ”Š menu β†’ Voice, or per-call from the CLI (-l language, --voice):

CodeLanguageExample voices
aEnglish (US)af_heart, am_adam
bEnglish (UK)bf_emma
eSpanishef_dora, em_alex, em_santa
fFrenchff_siwis
iItalianif_sara, im_nicola
pPortuguese (BR)pf_dora, pm_alex
hHindihf_alpha, hm_omega
jJapanese*jf_alpha
zMandarin*zf_xiaobei

*Japanese and Mandarin need one extra: ~/.outloud/venv/bin/pip install "misaki[ja]" (or "misaki[zh]").

CLI reference

outloud "read this sentence"      # read text
cat article.md | outloud          # from a pipe
outloud                           # read the clipboard
outloud -s 1.6                    # speed
outloud -l e --voice em_alex      # Spanish, male voice

outloud --pause | --resume        # exact pause / resume
outloud --replay                  # restart current reading (instant)
outloud --speed-live 2.0          # change speed of current reading
outloud --stop

outloud --history                 # list past readings
outloud --history 50 --json       # for scripts/integrations
outloud --reread 20260721-134536  # re-listen (cached audio, ~0.4s)
outloud --last                    # re-listen to the most recent
Spanish flag aliases work everywhere: --pausa, --reanudar, --repetir, --historial, --releer, --ultimo.

How it works

select text ──βŒ₯⌘L──▢ Hammerspoon UI ──▢ outloud CLI ──▢ daemon (Kokoro, warm)
                                                          β”‚ sentence-by-sentence
                                                          β–Ό
                            HUD controls ◀──socket──▢ mpv (gapless playlist,
                                                      exact pause, live speed)

Troubleshooting

The hotkey does nothing

Check Hammerspoon has Accessibility permission (System Settings β†’ Privacy & Security β†’ Accessibility) and that the πŸ”¨ icon is in your menu bar. Then reload: click it β†’ "Reload Config".

"No text selected" in iTerm

outloud reads iTerm's clipboard (iTerm blocks synthetic keystrokes but copies selections automatically). Make sure iTerm's "Copy to pasteboard on selection" (Settings β†’ General β†’ Selection) is enabled β€” it is by default.

First reading is slow

The daemon warms the model for your system language at login. The first reading in a different language loads that pipeline once (~5 s), then it's fast.

Where is my data?

History and cached audio: ~/Library/Application Support/Outloud. Daemon log: ~/.cache/outloud-daemon.log. Settings live in Hammerspoon (hs.settings, keys outloud.*).

Uninstall

cd outloud && ./uninstall.sh

Removes the CLI, daemon, Python environment and UI module. Your reading history stays in ~/Library/Application Support/Outloud until you delete it.