Skip to main content

60db Agent Skills

Bring 60db’s full voice stack — text-to-speech, speech-to-text, voice cloning, voice management, and the LLM core — directly into your coding agent. Install it once and call it with /60db from Claude Code, OpenAI Codex, OpenCode, or any agent that reads a skills directory. It’s a single zero-dependency Python CLI (stdlib only, Python 3.8+) — no SDK, no pip install, no version drift.

Claude Code

Native skill — /60db and /setup-60db

OpenAI Codex

Same skill folders, copied into ~/.codex/skills

OpenCode & others

Plain markdown + stdlib Python runs anywhere
Source repository: github.com/60db-ai/60db.ai-skills — Apache-2.0.

Why a Skill, Not Just the SDK

The skill encodes the behavior that’s actually true against the live API, so you never relearn the gotchas. It’s stdlib-only, so it keeps working regardless of SDK or doc drift. The five mistakes it pins for you:
Concatenate each line’s result.audioContent (base64 LINEAR16 PCM). The CLI does this for you.
44100 is rejected with a 400.
The API always returns raw PCM — wrap it as WAV yourself (the CLI does).
The model is band-limited at ~8 kHz, so 48 kHz is upsampled headroom. enhance and 60db-quality do not raise the ceiling.
Language and gender live under labels — confirmed by live inspection.

How It Works

One CLI — skills/60db/scripts/sixtydb.py — fronts every 60db use case against https://api.60db.ai.
Every setting resolves the same way, so you can override per-call or store defaults once:
Setup is the user’s job. The API key is never typed by the agent, never passed on the command line, never printed, never committed. The user runs init (a hidden prompt) or sets SIXTYDB_API_KEY. In a chat session where a hidden prompt isn’t reachable, the agent scaffolds defaults with init --no-key and hands the key step back to the user.

Use Cases

What you can build with /60db without leaving your coding agent:

Narration & voiceovers

Turn a script, blog post, or .txt file into studio-quality audio for videos, podcasts, or demos — tts script.txt --voice <id> --out vo.wav.

Transcription & subtitles

Convert recordings, calls, or meetings into text with speaker labels and word timings, then build SRT/VTT — stt rec.mp4 --diarize --timestamps --json.

Voice agents & bots

Wire stt (ears) + chat (brain) + tts (mouth) into a conversational loop for support, reception, or IVR-style flows.

Custom brand voices

Clone a voice from a few samples and reuse it across all your audio — clone --name "Brand VO" --sample a.wav --sample b.wav.

Accessibility

Add read-aloud audio to docs, articles, and apps for visually impaired or on-the-go users.

Multilingual content

Generate speech and transcribe audio across 30+ languages — check langs / langs --stt for coverage.

Who it’s for

Add TTS/STT to an app without learning the SDK or fighting the docs — the skill drives one stdlib-only CLI that already pins the API’s real behavior.
Produce voiceovers and dubbed audio straight from a script file, with a consistent brand voice via cloning.
Prototype phone/voice bots from the stt + chat + tts parts, and transcribe call recordings for QA or summaries.
If you live in Claude Code, Codex, or OpenCode, /60db lets you ship audio without context-switching to a dashboard or another tool.

A typical workflow

1

Set up once

Run /setup-60db to store your API key and defaults (voice, model, sample rate).
2

Pick a voice

Run voices to list available voice IDs (add --mine for your cloned voices).
3

Generate or transcribe

Call tts to make audio or stt to make text — the skill asks for anything it needs.
4

Iterate or chain

Adjust --speed / --stability, or chain stt → chat → tts for a full voice-agent turn.

The Two Skills

The worker drives one CLI with 9 subcommands:

Install

1

Add the skill

Claude Code (recommended):
Codex / OpenCode / other agents — copy the two skill folders into that agent’s skills directory:
2

Restart your agent session

Skills are only picked up on session start — this is an agent-platform limitation, not a bug.
3

Run setup once

Run /setup-60db, or directly:
Get a key at app.60db.ai → Settings → Developer → API Keys.
The API key is yours to enter — never paste it into the agent chat (chat history is retained by the platform). It’s stored locally at ~/.config/60db/config.json (mode 600) or read from SIXTYDB_API_KEY, and .gitignore keeps it out of git.

Run It

Store defaults once so you stop repeating flags:


Quick Decision Guide


Examples


Gotchas That Bite Everyone


Coverage


How It Helps

Zero setup friction

Stdlib-only Python — no SDK, no requests, no version drift. Only python3 3.8+ required.

Truth over docs

Every endpoint is annotated verified vs. doc-only; live-API findings win over the published docs.

Voice agents from parts

No native telephony API — build a voice agent from stt (ears) + chat (brain) + tts (mouth).

Secure by design

The key is never typed by the agent, never printed, never committed.

FAQ

npx skills add 60db-ai/60db.ai-skills, then restart your agent and run /setup-60db.
Into a local config at ~/.config/60db/config.json (mode 600), or the SIXTYDB_API_KEY env var. It’s never passed on the command line, never printed, and .gitignore keeps it out of git. The agent never types it for you.
No. The model is ~16 kHz-native and band-limited to ~8 kHz, so 48 kHz is upsampled headroom. enhance and 60db-quality don’t raise the ceiling.
8000, 16000, 24000, 48000 only. 44100 is rejected.
There is no native calling/telephony API. You build a voice agent from the parts: stt (ears) + chat (brain, 60db-tiny) + tts (mouth).
Yes — it’s markdown + stdlib Python. Copy the two skill folders into Codex’s or OpenCode’s skills directory. Only the onboarding prompt is Claude-specific and degrades gracefully.
No. Only python3 3.8+. The single optional dependency is websockets, used solely by the legacy --ws TTS path.
Full command reference, recipes, and the complete troubleshooting list live in the repo’s GUIDE.md and references/.