SAG Voice (ElevenLabs TTS)
@openclawOpenClaw's sag skill: an AI agent speaks text aloud or saves it as audio through ElevenLabs, using the say-style sag CLI.
Instruction-only skill for the sag CLI, which sends text to ElevenLabs with your API key and plays or saves the audio.
Install SAG Voice (ElevenLabs TTS) in Google Antigravity
Antigravity loads skills from .agents/skills/ in your project or ~/.gemini/config/skills/ for all projects (official docs). Full guide
Install the "SAG Voice (ElevenLabs TTS)" skill for Google Antigravity. Follow the steps at https://www.antigravityskills.org/install/sag-voice.md (source: https://github.com/openclaw/openclaw/tree/main/skills/sag). Before running anything, show me what you will download and whether it includes scripts, and wait for my OK. Install it into this project (.agents/skills/) unless I say global. When done, check that Antigravity lists it as an installed skill.
The agent reads the install file, shows you what it will download and waits for your OK.
Option 2: install it yourself
- 1. Download only the skill folder
git clone --depth 1 --filter=blob:none --sparse https://github.com/openclaw/openclaw /tmp/openclaw && git -C /tmp/openclaw sparse-checkout set skills/sag
A sparse checkout fetches skills/sag (one SKILL.md) instead of the whole OpenClaw repository.
- 2. Copy into this workspace (project skill)
mkdir -p .agents/skills && cp -r /tmp/openclaw/skills/sag .agents/skills/sag
Run from your project root. Antigravity reads workspace skills from <project>/.agents/skills/<folder>/.
- 3. Or install globally (all projects)
mkdir -p ~/.gemini/config/skills && cp -r /tmp/openclaw/skills/sag ~/.gemini/config/skills/sag
Use this instead of the previous step to have the skill in every workspace. Global skills folder from Antigravity's docs (antigravity.google/docs/skills).
- 4. Install sag and set your key
brew install steipete/tap/sag && export ELEVENLABS_API_KEY=...
macOS via Homebrew, as in the skill metadata. Linux and Windows: download the archive from github.com/steipete/sag/releases or use go install github.com/steipete/sag/cmd/sag@latest (Go 1.25+). Prefer ELEVENLABS_API_KEY_FILE over putting the key on a command line (sag docs/agents.md).
- 5. Check that Antigravity sees it
Antigravity 2.0 app: start a new conversation and ask "What skills do you have?" (the app has no /skills command; typing / and the skill name also finds it, sometimes only after your first message). Antigravity CLI: run /skills; in a session that was already open, run /skills reload first. sag should be listed.
Neither the OpenClaw repository nor the sag README mentions Antigravity; this is a plain folder copy into Antigravity's standard skill folders. The OpenClaw-only parts (MEDIA: attachments, the Clawd voice) will not work there; the sag commands themselves are agent-neutral.
Using Claude Code, Cursor or Codex? See other assistants below.
What is SAG Voice (ElevenLabs TTS)?
How to use SAG Voice (ElevenLabs TTS)?
Key features of SAG Voice (ElevenLabs TTS)
- ✓say-style commands: sag "text", sag speak -v <voice>, sag voices, sag prompting
- ✓Model notes: eleven_v3 (default, expressive), eleven_multilingual_v2 (stable), eleven_flash_v2_5 (fast)
- ✓Pronunciation fixes: respelling, hyphens, --normalize auto|off for numbers and URLs, --lang hints
- ✓12 v3 audio tags ([whispers], [shouts], [sings], [laughs], [sighs], [excited] and more) and 3 pause tags
- ✓Writes an mp3 with -o for chat voice replies
- ✓Voice defaults through ELEVENLABS_VOICE_ID or SAG_VOICE_ID
When to use SAG Voice (ElevenLabs TTS)
- 1Having an agent read an answer or summary aloud on your machine
- 2Creating an mp3 voice reply or short narration file
- 3Trying ElevenLabs voices and models from the terminal
- 4Adding expressive delivery with v3 audio tags
Installation & Setup Guide
Agent Rules / Prompt SetupFollow these steps (taken from the project's own docs) to configure SAG Voice (ElevenLabs TTS) in your development environment.
openclaw skills info sag
sag ships in OpenClaw's bundled skills/ folder; OpenClaw checks its requirements (the sag binary, ELEVENLABS_API_KEY) from the metadata.
git clone --depth 1 --filter=blob:none --sparse https://github.com/openclaw/openclaw /tmp/openclaw && git -C /tmp/openclaw sparse-checkout set skills/sag && mkdir -p ~/.claude/skills && cp -r /tmp/openclaw/skills/sag ~/.claude/skills/sag
OpenClaw gives no Claude Code install for this skill. The ~/.claude/skills/ folder comes from the Claude Code skills docs (https://code.claude.com/docs/en/skills).
Neither OpenClaw nor the sag README gives a Cursor skill install, so we do not list one.
Usage Example & Verification
1) README example (SKILL.md, v3 audio tags): "Whisper 'keep this quiet', pause briefly, then say 'ok?'" -> What happens: the agent runs sag "[whispers] keep this quiet. [short pause] ok?". With the default eleven_v3 model the audio streams to your speakers; nothing is saved. 2) README example (SKILL.md, "Chat voice responses"): "Explain this in a crazy scientist voice." -> What happens: the agent writes the text with [excited] tags and [short pause] markers and runs sag -v Clawd -o /tmp/voice-reply.mp3 "...". In OpenClaw the MEDIA: line attaches the file; in other agents you just get the file path. -v Clawd fails with "voice not found" unless your ElevenLabs account has a voice with that name, so ask for one from sag voices instead. 3) Our example: "Save this paragraph as narration.mp3 with a British voice and don't play it." -> What happens: sag voices --label accent=british --limit 10 (a sag README example), then sag -v <chosen voice> --no-play -o narration.mp3 "...". The skill does not mention --no-play, so say it explicitly if you want silence.
In Antigravity: Antigravity 2.0 app: start a new conversation and ask "What skills do you have?" (the app has no /skills command; typing / and the skill name also finds it, sometimes only after your first message). Antigravity CLI: run /skills; in a session that was already open, run /skills reload first. sag should be listed. Then run sag voices in a terminal to confirm the key works, and ask the agent "say hello in a calm voice"; you should hear it, or get an error naming the missing key.
Security Review
Static reviewInstruction-only skill for the sag CLI, which sends text to ElevenLabs with your API key and plays or saves the audio.
Full review: scope, findings, risks
Static review of skills/sag/SKILL.md at commit d336a45 (identical to 493b90b): documentation plus OpenClaw metadata (requires bins sag, primaryEnv ELEVENLABS_API_KEY, install via Homebrew formula steipete/tap/sag); no scripts. It directs the agent to run sag commands and, for voice replies, to write /tmp/voice-reply.mp3. For the CLI at steipete/sag c065232: a grep of cmd/ and internal/ finds two real endpoints, https://api.elevenlabs.io and https://api.60db.ai (the other URLs are example or test values); the only os/exec use is internal/audio/afplay.go, which writes the audio to a temp file and plays it with macOS afplay. Keys come from environment variables, --api-key, or key files; docs/agents.md advises env or key files over argv. go.mod lists 4 direct dependencies (oto, go-mp3, cobra, pflag). Audio is written to disk only with -o, apart from that temp file for afplay.
Operational Notes & Known Limitations
Known Limitations
- •Needs your own ElevenLabs API key (ELEVENLABS_API_KEY, SAG_API_KEY or a key file); every request is sent to ElevenLabs and counts against that account
- •The skill's metadata only offers a Homebrew install; on Linux or Windows use the release archive or go install (sag README). Debian/Ubuntu source builds need build-essential, pkg-config and libasound2-dev
- •"-v Clawd" is an OpenClaw default: sag looks voice names up in your account (cmd/speak.go) and errors if none matches. The name Clawd appears nowhere in the sag repository
- •The MEDIA:/tmp/voice-reply.mp3 line is an OpenClaw chat convention; other agents, Antigravity included, will not attach the file
- •The skill never mentions --no-play or --timeout, which sag's own docs/agents.md recommends for agents; without a timeout a slow response blocks the agent step
- •Input limits per model (sag README): eleven_v3 5,000 characters, v2 10,000, v2.5 Turbo/Flash 40,000; longer text must be chunked
- •If both ELEVENLABS_API_KEY and SIXTYDB_API_KEY are set, sag stops with an error (sag README)
Frequently Asked Questions
Is the sag skill safe?
The skill is one SKILL.md with no scripts. The sag CLI it drives only contacts api.elevenlabs.io or api.60db.ai (the non-test URLs we found in cmd/ and internal/ at c065232), and its only external command is macOS afplay for playback. It needs your ElevenLabs key and writes audio only when -o is used.
How do I install sag in Antigravity?
Sparse-clone openclaw/openclaw with only skills/sag, copy it to .agents/skills/sag (or ~/.gemini/config/skills/sag), install sag (brew install steipete/tap/sag on macOS), set ELEVENLABS_API_KEY, then ask "What skills do you have?" (Antigravity CLI: /skills).
Does it work on Linux or Windows?
The sag README offers Linux, macOS and Windows release archives; playback on non-mac systems uses MP3/WAV decoding with oto, and device selection flags do nothing there (README, Limitations). The skill's own metadata only lists Homebrew.
Can I use it without ElevenLabs?
The skill is written for ElevenLabs only. The sag CLI also supports 60db with SIXTYDB_API_KEY, WAV output only (sag README), but you would have to tell the agent yourself.
Supported Platforms
Keep exploring this topic
Browse the full Antigravity skills directory for more source-linked skills with install steps and static safety reviews.
Related Skills
Apple Music
@epheterson
Unofficial MCP server by Eric Pheterson that lets AI assistants search Apple Music, edit your library and playlists, and control playback through Music.app, Safari, Chrome or the Apple Music API.
Otter Transcription
@erickhchan
otterai-cli skill: lets an AI agent list, search, download and manage your Otter.ai meeting transcripts with the unofficial otter CLI.
Pollinations AI
@pollinations
Official Pollinations skill for the polli CLI: generate images, text, audio, video and 3D, transcribe speech and check your Pollen balance.
Popular Skills
View All →Agent Manager
@sickn33
Manage multiple local CLI agents via tmux sessions.
Systematic Debugging
@sickn33
Debug systematically, not randomly. Find and fix bugs methodically.
Browser Automation (Playwright)
@sickn33
Expert browser automation for cleaning scraping and reliable testing.