github.com/steipete/sag
v0.4.1
#2282 most downloaded on Go modules
steipete/sag
What this package is like to depend on
Last release 1 months ago
12 Jul 2026
Release timing varies
gaps range from 2 weeks to 3 months
Nearly every release is documented
notes for 7 of 7 stable releases
Nothing withdrawn
no release was ever pulled
8 months old
13 releases · first in 2025
13 releases in the last 12 months
see the full history below
Release timeline
13 releases · Dec 2025 to Jul 2026
2026
Releases
latest 13-
v0.4.2-0.20260712151706-93a983c7bd9612 Jul 2026 pre-releaseNothing published for this version
-
v0.4.101 Jul 2026Release notes
Open source →Fixed
- Explicit
--formatvalues now override output-extension inference, preserving the requested ElevenLabs audio format. (#21, #22, thanks @100yenadmin)
Verification
- Release commit: 4797496
- Exact-head CI: https://github.com/steipete/sag/actions/runs/28507322673
- Docs deployment: https://github.com/steipete/sag/actions/runs/28507322694
- Authenticated live proof: an explicit 192 kbps MP3 format overrode a conflicting
.wavoutput extension; the generated audio was independently detected as MP3 with positive duration. No playback, private text, or persistent settings were used. - Source-blind behavior validation: 5 passed, 0 failed, 0 blocked.
- Checksums: https://github.com/steipete/sag/releases/download/v0.4.1/sag_0.4.1_checksums.txt
Release notes
Open source →Fixed
- Explicit
--formatvalues now override output-extension inference, preserving the requested ElevenLabs audio format. (#21/#22, thanks @100yenadmin)
- Explicit
-
v0.4.1-0.20260611022547-ad9b1d3013b411 Jun 2026 pre-releaseNothing published for this version
-
v0.4.011 Jun 2026Release notes
Open source →Added
- Added live-tested 60db provider support via
/default-voices,/myvoices, and/tts-synthesize, including bounded NDJSON decoding, incomplete-response rejection, and PCM-to-WAV playback. (steipete/sag#20, thanks @manishEMS47)
Changed
- Release archives now include target-specific macOS and Linux assets for Homebrew and aqua installers.
Verification
- Release candidate CI: https://github.com/steipete/sag/actions/runs/27319088377
- Docs deployment: https://github.com/steipete/sag/actions/runs/27319088365
- Final release workflow: https://github.com/steipete/sag/actions/runs/27319436814
- Homebrew formula update: https://github.com/steipete/homebrew-tap/actions/runs/27319495324
- Checksums: https://github.com/steipete/sag/releases/download/v0.4.0/sag_0.4.0_checksums.txt
- Authenticated 60db proof: the Homebrew-installed
sag 0.4.0listed live voices, synthesized through the real provider, produced a 48 kHz mono PCM/WAV file, and completedotoplayback.
Release notes
Open source →Added
- Added live-tested 60db provider support via
/default-voices,/myvoices, and/tts-synthesize, including bounded NDJSON decoding, incomplete-response rejection, and PCM-to-WAV playback. (#20, thanks @manishEMS47)
Changed
- Release archives now include target-specific macOS and Linux assets for Homebrew and aqua installers.
- Added live-tested 60db provider support via
-
v0.3.006 May 2026Release notes
Open source →Added
- Voice discovery: semantic
--queryover name/description/labels, repeatable--labelfilters, preview playback via--try, metadata caching, and server-side name search when supported. - Bare
sagnow reads piped stdin like macOSsay, soecho "hello" | sagspeaks the text without requiring thespeaksubcommand. (#14, thanks @atdrendel)
Fixed
--formatand.ogg/.opusoutput paths now request native ElevenLabs Opus output instead of always receiving MP3. (#16, thanks @derspotter)- Long TTS generation no longer hits hidden 60s/90s internal timeouts; use
--timeoutorSAG_TIMEOUTwhen you wantsagto enforce a limit. (#17/#18, thanks @sumurtk2) --no-playand--no-streamare now accepted aliases for--play=falseand--stream=false.- macOS playback now defaults to
afplayfor better AirPlay routing, with--player oto/SAG_PLAYER=otoavailable as a fallback. (#15, thanks @s0up4200)
Release notes
Open source →Added
- Voice discovery: semantic
--queryover name/description/labels, repeatable--labelfilters, preview playback via--try, metadata caching, and server-side name search when supported. - Bare
sagnow reads piped stdin like macOSsay, soecho "hello" | sagspeaks the text without requiring thespeaksubcommand. (#14, thanks @atdrendel)
Fixed
--formatand.ogg/.opusoutput paths now request native ElevenLabs Opus output instead of always receiving MP3. (#16, thanks @derspotter)- Long TTS generation no longer hits hidden 60s/90s internal timeouts; use
--timeoutorSAG_TIMEOUTwhen you wantsagto enforce a limit. (#17/#18, thanks @sumurtk2) --no-playand--no-streamare now accepted aliases for--play=falseand--stream=false.- macOS playback now defaults to
afplayfor better AirPlay routing, with--player oto/SAG_PLAYER=otoavailable as a fallback. (#15, thanks @s0up4200)
- Voice discovery: semantic
-
v0.2.3-0.20260124121004-d37e377f74fa24 Jan 2026 pre-releaseNothing published for this version
-
v0.2.224 Jan 2026Release notes
Open source →Fixed
- Voice ID resolution respects
--voice-idand avoids misclassifying long names;--ratenow overrides--speedvalidation. (#7, thanks @joelbdavies) - Voice name matching now uses exact/substring checks without falling back to unrelated voices; voice search is handled client-side. (#8, thanks @joelbdavies)
sag helpandsag completionno longer default tospeak. (#4, thanks @GiGurra)
Added
Release notes
Open source →Fixed
- Voice ID resolution respects
--voice-idand avoids misclassifying long names;--ratenow overrides--speedvalidation. (#7, thanks @joelbdavies) - Voice name matching now uses exact/substring checks without falling back to unrelated voices; voice search is handled client-side. (#8, thanks @joelbdavies)
sag helpandsag completionno longer default tospeak. (#4, thanks @GiGurra)
Added
--api-key-fileandELEVENLABS_API_KEY_FILE/SAG_API_KEY_FILEsupport for loading API keys from a file. (#6, thanks @GiGurra)
- Voice ID resolution respects
-
v0.2.2-0.20260101234058-3da1ee1c5c1201 Jan 2026 pre-releaseNothing published for this version
-
v0.2.101 Jan 2026Release notes
Open source →Fixed
-o/--outputnow disables speaker playback by default unless--playis explicitly set.
Release notes
Open source →Fixed
-o/--outputnow disables speaker playback by default unless--playis explicitly set. Previously-osaved to file AND played through speakers, which was confusing.
-
v0.2.1-0.20251219232355-427396d09a7d19 Dec 2025 pre-releaseNothing published for this version
-
v0.2.019 Dec 2025Release notes
Open source →Added
- Voice control flags:
--stability,--similarity/--similarity-boost,--style,--speaker-boost/--no-speaker-boost. - Request controls:
--seed,--normalize (auto|on|off),--lang(ISO 639-1). --metricsto print basic request stats (chars/bytes/duration) to stderr.sag promptingcommand + README section with prompting tips.
Changed
- Default model is now
eleven_v3(override with--model-id eleven_multilingual_v2for a stable baseline).
Homebrew (source tarball)
- SHA256:
a505a5eb0d72ede07768e96f17574c37959dacdde03434360b1a74c60d9c11cc
Release notes
Open source →Added
- Voice control flags:
--stability,--similarity/--similarity-boost,--style,--speaker-boost/--no-speaker-boost. - Request controls:
--seed,--normalize (auto|on|off),--lang(ISO 639-1). --metricsto print basic request stats (chars/bytes/duration) to stderr.sag promptingcommand and README section with prompting tips.
Changed
- Default model is now
eleven_v3(override with--model-id eleven_multilingual_v2for a stable baseline).
- Voice control flags:
-
v0.1.1-0.20251208174037-abdf7acd715108 Dec 2025 pre-releaseNothing published for this version
-
v0.1.008 Dec 2025Release notes
Open source →Added
- Initial release of
sagElevenLabs TTS CLI with macOSsay-style flags. - Streaming default playback to speakers with optional file output; cross-platform audio via go-mp3 + oto.
- Voice listing (
sag voices) and voice resolution by name/ID, including?to list. - macOS
saycompatibility:-v/--voice,-r/--rate,-f/--input-file,-o/--output, plus accepted no-op flags. - Auto-routing bare
sag ...text/flags tospeaksubcommand, including npm/pnpm--pass-through support. - Speed control (
--speedor--rate), latency tier selection, model/format overrides with extension inference. - Default voice fallback to first available when none provided; env support
ELEVENLABS_VOICE_IDorSAG_VOICE_ID. - Config via
ELEVENLABS_API_KEY/SAG_API_KEY;--api-keyand--base-urloverrides. - Tests for format inference, text sourcing, voice resolution helpers, and default
speakrouting behavior. - Help/README improvements: feature overview, examples for subcommand-less usage, and voice discovery guidance.
- Homebrew tap formula (
brew install steipete/tap/sag) and release playbook. - CI workflow (lint + tests) and golangci-lint config.
- Documentation: README, docs/spec.md, and usage examples.
- Version flag (
--version/-V) reporting 0.1.0; help available without API key.
- Initial release of