All plugins

Official

elevenlabs-music

ElevenLabs Music for Hermes: describe a song or paste your lyrics and Hermes writes, generates and sends the track, 3 seconds to 10 minutes, vocals or instrumental. It can redo one section, extend or loop a song, split it into stems (vocals, drums, bass, guitar, piano, other) and score a video. Long songs finish in the background and arrive in the chat. Bundles a music skill (prompting, composition plans, edit recipes) and, in Hermes Desktop, an inline music card with synced lyrics, format downloads and a music library tab. Model, audio format and endpoint are plugin settings. Disclosure: uses your ElevenLabs API key (ELEVENLABS_API_KEY, the same key as Hermes's ElevenLabs voice; needs a paid ElevenLabs plan, and a restricted key needs the Music permission); compose, plan, upload, stems and video calls are paid generations billed to your ElevenLabs account by length (drafting a plan and listing finetunes are free). Only the prompt or plan, its parameters and any file you name are sent, to api.elevenlabs.io (or the data-residency endpoint you set); with store_for_editing on, ElevenLabs keeps generated songs so they can be edited later. Files are written to cache/generated/audio under the Hermes home and never overwritten. One Python dependency (httpx, already part of Hermes).

NousResearch676Toolsv1.0.0Updated 15 days ago

About

ElevenLabs Music for Hermes: describe a song or paste your lyrics and Hermes writes, generates and sends the track, 3 seconds to 10 minutes, vocals or instrumental. It can redo one section, extend or loop a song, split it into stems (vocals, drums, bass, guitar, piano, other) and score a video. Long songs finish in the background and arrive in the chat. Bundles a music skill (prompting, composition plans, edit recipes) and, in Hermes Desktop, an inline music card with synced lyrics, format downloads and a music library tab. Model, audio format and endpoint are plugin settings. Disclosure: uses your ElevenLabs API key (ELEVENLABS_API_KEY, the same key as Hermes's ElevenLabs voice; needs a paid ElevenLabs plan, and a restricted key needs the Music permission); compose, plan, upload, stems and video calls are paid generations billed to your ElevenLabs account by length (drafting a plan and listing finetunes are free). Only the prompt or plan, its parameters and any file you name are sent, to api.elevenlabs.io (or the data-residency endpoint you set); with store_for_editing on, ElevenLabs keeps generated songs so they can be edited later. Files are written to cache/generated/audio under the Hermes home and never overwritten. One Python dependency (httpx, already part of Hermes).

ElevenLabs Music for Hermes Agent

Part of the Hermes Official Plugins, Nous Research's official plugins for Hermes Agent.

Official Hermes Agent plugin for the
ElevenLabs Music API. Ask for "a 40 second
upbeat synthwave intro for my podcast", "a sad indie folk song about a lighthouse, female vocals", or
paste your own lyrics, and Hermes writes, generates and sends you the track. It can then change one
section, add an outro, loop it, make the vocals or drums a separate file, or score a video.

ToolWhat it doesBilled
elevenlabs_music_composeA song or instrumental from a prompt, 3 seconds to 10 minutes, vocals in many languagesby length
elevenlabs_music_draft_planElevenLabs writes a composition plan from a prompt: sections, lyrics, styles, durationsfree
elevenlabs_music_compose_planGenerate from a plan: exact lyrics and structure, and edits of earlier songs (keep some parts, regenerate others, extend, loop, "sounds like this")by length
elevenlabs_music_uploadStore your own song at ElevenLabs so the plan tool can edit, extend or sample itlike a generation
elevenlabs_music_stemsSplit a track or any audio file into 2 stems (vocals, accompaniment) or 6 (vocals, drums, bass, guitar, piano, other)by length
elevenlabs_music_from_videoBackground music timed to 1-10 videos, optionally with sound effects, music and effects as separate files if you likeby length
elevenlabs_music_finetunesThe Music finetunes your account can use (yours, your workspace's, ElevenLabs-curated styles)free
elevenlabs_music_jobCheck on or wait for a generation still running in the backgroundfree

Each tool hands the agent MEDIA: lines for the files it made; the agent puts them in its reply and the
files arrive as attachments on Telegram, Discord, Slack and the other messaging platforms. In Hermes
Desktop the same line becomes a music card (below). In the terminal you get the file path.

The plugin also ships the elevenlabs-music skill: how to write music prompts (from ElevenLabs' own
prompting guide), when to draft a plan, how to build the chunk lists that edit, extend or loop a song,
and how to deliver on each surface.

Install

hermes plugins install elevenlabs-music

Or straight from this repo: hermes plugins install NousResearch/hermes-official-plugins#elevenlabs-music.

The installer asks for your ElevenLabs API key if ELEVENLABS_API_KEY is not set yet (create one under
Profile → API keys at https://elevenlabs.io/app/settings/api-keys). It is the same key Hermes's
ElevenLabs voice and the ElevenLabs Sound Effects plugin use. The Music API needs a paid ElevenLabs plan,
and a restricted key needs the Music permission. The tools appear to the agent only once the key is
set. Plugins are installed per profile: hermes -p <profile> plugins install elevenlabs-music for another
profile. The only Python dependency is httpx, which Hermes already ships.

Long songs and chat apps

A generation runs in the background and the tool waits for it: up to about five minutes in the terminal,
Hermes Desktop and other local apps, and only chat_app_wait_seconds (20 by default) in chat apps. Short
clips come back within that wait (a 10 second clip took about 4 seconds in testing). When a longer song
is still generating, the agent tells you it started, sets a background timer, and sends the song into the
chat when it is done, so the chat is never silent for minutes. Asking "is it done?" checks right away. A
generation that a Hermes restart interrupts is reported as interrupted; ElevenLabs may still have billed
it, so the agent asks before trying again.

Settings

In Hermes Desktop: Capabilities → Plugins, then the gear icon on the plugin (⌘K → ElevenLabs Music:
settings
opens it). Everywhere else, with hermes config set:

SettingDefaultWhat it does
api_key(unset)Your ElevenLabs API key, stored in .env as ELEVENLABS_API_KEY: hermes config set ELEVENLABS_API_KEY <key>
music_modelmusic_v2_5music_v2_5, music_v2 or music_v1: hermes config set plugins.entries.elevenlabs-music.settings.music_model music_v2. Plans, edits and audio references need v2 or v2.5
output_formatmp3_44100_128mp3_44100_128, mp3_44100_192, mp3_48000_192, mp3_48000_320, opus_48000_128, opus_48000_192: hermes config set plugins.entries.elevenlabs-music.settings.output_format mp3_48000_320. ElevenLabs documents 192 kbps MP3 for its Creator plan and above. The Music API has no WAV container; the Desktop card's Download menu converts to WAV or FLAC with ffmpeg
store_for_editingtrueAsks ElevenLabs to keep each song so later requests can edit, extend or sample it (no extra cost): hermes config set plugins.entries.elevenlabs-music.settings.store_for_editing false
chat_app_wait_seconds20How long a request waits in a chat app before the agent replies "started" (0-240): hermes config set plugins.entries.elevenlabs-music.settings.chat_app_wait_seconds 45
api_base_urlhttps://api.elevenlabs.ioChange only for an ElevenLabs data-residency endpoint, e.g. https://api.eu.residency.elevenlabs.io

Every argument is checked before anything is sent: prompts up to 4,100 characters, songs 3 seconds to 10
minutes, plans of 1-30 chunks of 3-120 seconds each, 30 lyric lines of 200 characters per chunk, 50
styles per list, audio references up to 30 seconds. A setting outside its choices (a hand-edited
config.yaml) is refused rather than billed.

Where files go

Each track is saved to <HERMES_HOME>/cache/generated/audio/ as music_<title>_<timestamp>_<id>.<ext>
(stems as stem_<stem>-<title>_…, video scores as score_…) and never overwrites an earlier one. Ask
the agent to copy one into your project if you want it somewhere else. The Desktop card and library serve
a file only while it has a single link: after a backup tool hard-links your Hermes folder (rsnapshot,
cp -al), those tracks play in Desktop's built-in player instead.

Each file also gets one line in <HERMES_HOME>/plugin-data/<plugin namespace>/tracks.jsonl (the
plugin's own data folder, per profile): the track id, kind, title, prompt, genres, model, the length
asked for and the real length, format, file name, ElevenLabs' song id and the chat it came from. A
song's lyrics timing and composition plan go in details/<id>.json beside it, and background jobs in
jobs/ (kept 7 days). The Desktop library reads these. Nothing in them leaves your machine.

What is sent to ElevenLabs

Only the prompt or plan and the arguments of each call, plus, for the upload, stems and video tools, the
file you name, go to api.elevenlabs.io (or the endpoint you set). With store_for_editing on,
ElevenLabs keeps each generated song on its side so it can be edited later. Uploads are screened by
ElevenLabs for copyright.

Hermes Desktop

The Desktop half is opt-in, also after hermes plugins install from the CLI (which turns on only the
agent half): open Capabilities → Plugins, switch to the list view, and turn on Desktop: ElevenLabs
Music
on the plugin's row. Without it Desktop still plays every track in its built-in audio player.

Music card. Hermes Desktop works out which tool produced a MEDIA: file and, when it was one of this
plugin's tools and the Desktop half is on, lets the plugin draw it as a music card instead of the built-in
player. That needs a Hermes Desktop with tool-media renderers (on main since commit 567569267a); on
older Desktops the same line plays in the built-in player. The card shows the title, ElevenLabs'
description, genres, length, model and format; a waveform you can click to seek; Play/Pause and Loop; the
words being sung, highlighted as the song plays; the full Lyrics; Download (the original, or MP3 /
WAV / OGG / FLAC converted by ffmpeg on the machine Hermes runs on; WAV for songs up to about 5 minutes, FLAC up to about 7); and Reveal in your file manager.
Next offers 3 variations, an instrumental version, the other model, Extend by 30 s, Redo any
section (it puts a started message in the composer for you to say what to change), and Split into
stems
. Each row says how much music it bills and sends a chat message naming the tool and its
arguments; nothing is billed until the agent runs the tool. Stems and video scores get the same card.

Music library. ⌘K → ElevenLabs: open music library opens a tab listing every track the tools made
in the active profile, with per-kind counts, total minutes and sizes, a filter for songs, stems and video
scores, and a search over titles, prompts and genres. Each row plays, downloads, reveals, Reuse prompt
(into the composer) and Open chat (the conversation that made it). It reloads when a track is made,
when you switch profile or connection, and when you save the plugin's settings; it never polls.

Remote Hermes. The Desktop half runs in the Desktop app, so install the plugin on the Hermes machine
(agent half) and into the Desktop you use: Capabilities → Plugins → Install from Git with
NousResearch/hermes-official-plugins/elevenlabs-music and Desktop UI checked, then turn on
Desktop: ElevenLabs Music. Playback and downloads stream through Hermes, so they work against a
remote machine too; Reveal tells you where the file is instead.

No account-wide UI (credit balance, usage) by design: Hermes's ElevenLabs voice and the ElevenLabs Sound
Effects plugin use the same account.

Development

# plugin suite against a hermes-agent checkout
HERMES_AGENT_REPO=~/hermes-agent PYTHONPATH=~/hermes-agent python -m pytest -q
# Desktop half: pure-helper tests, typecheck, bundle (desktop/plugin.js is committed)
npm install && npm test && npx tsc --noEmit && npm run build

License

MIT

README from the reviewed commit 1e326dd; it updates when the author re-pins.

More by NousResearch

29 plugins by NousResearch in the catalog.

NousResearchaccent-pickerOKLCH accent colour picker for the Hermes Desktop status bar: drag it and the whole theme retints live, with palette commands to reset to the theme default or copy the current colour. A theme-authoring tool; the colour is scratch state and is never persisted. Desktop-only (desktop/plugin.js inside the plugin SDK surface); no agent tools, hooks, middleware or env vars.OfficialDesktop app676NousResearchadvanced-delegationTwo extra delegation modes for delegate_task, next to the built-in default. Model routes (delegation.backend: model_map): the agent picks a named model route per subagent from a list you define (e.g. fast, deep, local). Profile routes (delegation.backend: profile_routes): the agent runs a subagent as one of your Hermes profiles, with that profile's own model, credentials, skills and SOUL.md. Only route names and their one-line descriptions reach the model. Adds hermes delegation config (pick the mode and edit its routes; --show prints the setup) and the /delegation slash command (save a mode for the next session, or --now to apply it to the current chat). Needs Hermes 0.22.5 or newer, the first release with pluggable delegation providers; Hermes 0.22.0 to 0.22.4 refuses to install it, and on a core older than 0.22.0 it installs, logs one warning and does nothing. A model route can set daybreak: true to run its model with OpenAI's Daybreak trusted-access program; it is sent only from your own CLI, TUI or Desktop chats, on openai-codex, for models your Codex catalog lists, and a route that breaks a rule is refused. Disclosure — no Python dependencies and no network or model calls of its own, except that a Daybreak route checks the Codex catalog through core's cached lookup with your existing Codex login; subagents run through core's delegate_task on the routes you configured. Writes only delegation.backend and delegation.backends.* (model_map / profile_routes) in the active profile's config.yaml, through core's config writer. A model route's optional api_key is stored in config.yaml in plain text (provider: keeps keys in .env / auth.json). Listing a profile under profile routes lets this profile's subagents use that profile's credentials, SOUL.md and terminal policy.Officialtools676NousResearchagent-importershermes import-agent: import an OpenClaw (~/.openclaw, or legacy ~/.clawdbot / ~/.moltbot), Claude Code (~/.claude), Codex CLI (~/.codex), Cursor (~/.cursor), Grok Bot (a self-export the Bot writes from a prompt the importer prints) or OpenBot desktop (its openbot.db) setup into Hermes in one command; always previews first and asks before applying. Claude Code / Codex / Cursor: instructions, Cursor rules and memories become memory entries, Bash permission rules become command allow/deny lists, MCP servers land in config.yaml, skills are copied, and --sync re-imports sources that changed. OpenClaw (core's former hermes claw migrate; the plugin keeps that spelling, hermes claw cleanup and the openclaw-migration skill): persona, memories, skills, model and messaging settings, MCP servers and agent behaviour. Formerly built into Hermes core; hermes setup offers to install it when it finds one of these agents, and profiles with a registered sync source are migrated automatically. Disclosure — no Python dependencies, no network calls and no model calls. Claude Code / Codex / Cursor: reads those agents' local config trees (never their credential files; secret-looking MCP env vars and headers are stripped and listed) and writes only into the active profile (memories/MEMORY.md with a backup, config.yaml, skills/ and import-sync.json). OpenClaw: reads the OpenClaw dir (openclaw.json, its .env, workspace files such as SOUL.md / MEMORY.md / USER.md, skills); API keys and bot tokens come over only with --migrate-secrets (allowlisted names, shown in the preview). It writes into the active profile (config.yaml, .env, SOUL.md, memories/, skills/openclaw-imports/, a migration/openclaw/<time>/ report with item backups, and a backups/pre-migration-*.zip restore point), plus a workspace dir only when --workspace-target names one. It runs local pgrep / systemctl / tasklist checks to warn when OpenClaw or a Hermes gateway is still running, and hermes claw cleanup renames the OpenClaw dir to *.pre-migration after a confirmation. Grok Bot / OpenBot: instructions become SOUL.md, memories and user facts become memory entries, skills land in skills/<source>-imports/, scheduled routines become paused cron jobs (--activate-routines to start them) and event routines a notes file; credential-looking export keys refuse the file, and secret MCP env vars and headers are stripped and listed. OpenBot's database is opened read-only (or read from a scratch copy that is deleted after the read).Officialtools676NousResearchblenderOfficial Blender Lab MCP server over stdio, pinned to upstream v1.0.3, with a Blender workflow skill. Needs Git and uv; Blender 5.1+ is not needed at install. The skill opens Blender itself when a task needs it and, after you agree, installs Blender and Blender Lab's MCP add-on. First startup downloads Python dependencies; prepare the uv environment before connecting. Disclosure — tools execute arbitrary Python in Blender with your privileges; the skill starts Blender with online access for that session only (your saved preference is unchanged), and the add-on's local server on port 9876 has no password, so any program on this computer can use it while Blender is open; only after you agree does the skill download Blender from download.blender.org (about 400 MB, about 1.5 GB unpacked), check it against blender.org's sha256 list and install it in your own folder without administrator rights (Linux ~/.local/opt, macOS ~/Applications, Windows %LOCALAPPDATA%\Programs\Blender Foundation; never over an existing Blender), and download the v1.0.3 add-on, check its hash and install or enable it; first start downloads the pinned Blender Lab MCP server and its Python dependencies with uv. Server discovery does not prove scene readiness.Officialtools676

Developer Mode

Explore built-in Hermes toolsets and actions.

HermesAgent

Developer?

Create a Hermes extension for Desktop or agent workflows.

Developer Section