Sign In
S

SAG Voice (ElevenLabs TTS)

@openclaw
Visit Skill
Reviewed 2026-10-23mediaPrompt / Rule# tts# elevenlabs# voice# audio# openclaw
Share:

OpenClaw's sag skill: an AI agent speaks text aloud or saves it as audio through ElevenLabs, using the say-style sag CLI.

Security Reviewed

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

EasiestOption 1: paste this to your Antigravity agent
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. 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. 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. 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. 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. 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)?

sag is a one-file skill from the OpenClaw repository that teaches an AI agent to read text aloud, or save it as an audio file, through ElevenLabs text-to-speech, using Peter Steinberger's sag command-line tool (it works like the macOS say command). It is for people who want an agent to speak summaries, send voice replies or produce short narration files. What we counted at OpenClaw commit d336a45 (2026-10-23; skills/sag is byte-for-byte unchanged since 493b90b of 2026-10-06): one SKILL.md, 88 lines and 2,353 bytes, no scripts; it names 3 ElevenLabs models (eleven_v3 as default, eleven_multilingual_v2, eleven_flash_v2_5), 12 v3 audio tags such as [whispers] and [sighs], and 3 pause tags. The sag CLI (steipete/sag commit c065232, 2026-10-23: v0.4.4 plus one unreleased fix) is a Go program with 4 direct dependencies and 35 Go files, 15 of them tests; its README also supports a second provider, 60db, which the skill does not mention.

How to use SAG Voice (ElevenLabs TTS)?

Install the sag binary (the skill's metadata only offers brew install steipete/tap/sag; the sag README adds prebuilt Linux, macOS and Windows archives and go install github.com/steipete/sag/cmd/sag@latest with Go 1.25+), set ELEVENLABS_API_KEY, and copy skills/sag into your agent's skills folder. Then ask for speech in plain words. The agent runs sag "text" to stream audio to your speakers, sag voices to list voices, sag prompting for model-specific tips, or sag -v <voice> -o file.mp3 "text" to write a file. The skill asks the agent to confirm voice and speaker before long output.

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)

  1. 1Having an agent read an answer or summary aloud on your machine
  2. 2Creating an mp3 voice reply or short narration file
  3. 3Trying ElevenLabs voices and models from the terminal
  4. 4Adding expressive delivery with v3 audio tags

Installation & Setup Guide

Agent Rules / Prompt Setup

Follow these steps (taken from the project's own docs) to configure SAG Voice (ElevenLabs TTS) in your development environment.

Step 1: OpenClaw: already bundledOpenClaw
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.

Step 2: Claude Code: copy the folder (not documented by the project)Claude Code
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).

Step 3: Cursor: not documentedCursor

Neither OpenClaw nor the sag README gives a Cursor skill install, so we do not list one.

Usage Example & Verification

Prompt / Request Example
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.
Installation Confirmation Method

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 review
Reviewed Date
2026-10-23
Audited Ref / Commit
d336a4569a7985f0ea21a6fac0649aee7859619d
Reviewer
antigravityskills.org (static code review)

Instruction-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
Audit Scope:Static review. openclaw/openclaw at commit d336a45 (2026-10-23): skills/sag/SKILL.md and LICENSE; skills/sag is unchanged since 493b90b (2026-10-06). steipete/sag at commit c065232 (2026-10-23, v0.4.4 plus one fix) for the CLI: README.md, docs/agents.md, go.mod, cmd/speak.go (voice lookup) and a grep of cmd/ and internal/ for URLs and os/exec. sag's test suite was not reviewed.
Key Findings:Instructions only; no scripts in the skill folder. Commands it teaches: sag, sag speak, sag voices, sag prompting, sag -o <file>. Needs ELEVENLABS_API_KEY (or SAG_API_KEY / a key file); optional ELEVENLABS_VOICE_ID. The sag CLI talks to api.elevenlabs.io (and api.60db.ai if that key is set), runs afplay on macOS for playback (internal/audio/afplay.go), and writes audio files only with -o.
Identified Operational Risks & Permissions:Text you ask it to speak is sent to ElevenLabs and billed to your key. An API key passed with --api-key shows up in process listings (sag docs/agents.md warns about this). Static review only: we did not run sag.

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

antigravityclaudecodex