Zing for Hermes Agent
Turn a local episode into short clips, study a reference video, render drafts
and make memes through Hermes. This portable Agent Plugins v1 package starts
your installed zing serve-mcp command over stdio and adds one skill. It exposes
Zing's existing 44 tools. It contains JSON, Markdown and a license, with no code
or runtime installer.
It pairs with the Uoink plugin for saved references and local breakdown notes.
Install
Use Hermes 0.23.0 or later. Install Zing first with Python 3.11 or later and uv. Zing 1.0.0rc1 is a release candidate. This command installs the pinned package with the media extras, including MCP support.
uv tool install "myzing[all]==1.0.0rc1"
uv tool update-shell
Or use pipx install "myzing[all]==1.0.0rc1". For only the MCP connection,
replace [all] with [mcp] and keep the version pin. That does not install
the media extras. The install guide also covers source checkouts.
Install FFmpeg and ffprobe 6.0 or later with libx264 and libass, and put both on
PATH. The OS install guide gives the commands. Reopen
your terminal and run zing doctor to see which features are ready.
Factory rendering also needs Node.js 20 or later and Chrome or Edge. Run
zing factory setup to install the bundled Node sidecar, then run
zing factory doctor. See factory setup.
Set ZING_BROWSER_PATH if browser detection needs help. Model downloads need
separate consent; installing the package does not fetch model weights.
Then install and enable the plugin.
hermes plugins install ryanbiddy/zing/plugins/hermes-zing --no-enable
hermes plugins enable zing
Restart Hermes and ask it to call zing_status. If tools are missing, check
hermes plugins list and zing doctor in the terminal that starts Hermes.
Remove a duplicate zing MCP entry only if you want this package's settings;
a user-configured server with the same name takes precedence.
Hermes checks for zing on PATH, then %USERPROFILE%/.local/bin/zing.exe on
Windows or ~/.local/bin/zing on macOS and Linux. Missing Zing hides the tools.
The fallback paths check presence; keep zing on PATH so the stdio command can
start. No minimum Zing version is declared because Hermes has no command-based
version probe for this executable.
Permissions and long calls
The server is untrusted because it writes files and starts jobs. Hermes gates
calls without readOnlyHint: true. All 44 Zing tools now declare hints, with
14 marked read-only, including factory_status, factory_prompt, get_prompt
and the list tools. Those calls can run without an approval prompt under this
rule. zing_status, get_breakdown, get_render and match_status remain gated
because they can update stale job state. zing_studio writes temporary preview
media and remains gated too. See Tool hints
for every tool. Hermes can remember approval per tool; unanswered approvals
fail closed in unattended runs.
The call timeout is 7200 seconds. Study, match, factory runs and EDL renders
return jobs to poll. factory_edit can synchronously re-render every shape;
it has no fixed internal deadline. The two-hour budget allows long edits but
cannot guarantee completion on every machine. A timeout is not cancellation.
Check the saved state before retrying a write.
Disclosures
- Network requests come from installed Zing when you request work. Study fetches
media from the URL you name; saved Uoink media can fall back to its source URL.
Taste setup can fetch selected references. Online factory runs search and
download visuals from Wikidata, Wikimedia Commons, NASA, Library of Congress,
Internet Archive and Openverse, and can visit the named entity's site. Optional
Pexels, Pixabay and Exa keys enable those services. Use
offline=truefor a factory project that must fetch nothing. - A named meme template can download its blank image from
api.memegen.link. Ordinary study can fetch missing OCR weights. Explicit speech setup downloads models. Ask before these downloads. The MCP tools do not publish or upload source videos or rendered clips to a remote service. - MCP factory runs use Hermes as the judge. The separate CLI's optional Claude
judge sends prompts and public contact sheets to Anthropic. Other CLI features
can use YouTube API credentials or
GEMINI_API_KEY; Gemini notes send a public YouTube URL and a rubric to Google. These CLI features are not exposed by this package. It does not forward those keys or run the Claude CLI. - Hermes' model provider can receive tool text, transcripts and images.
get_frames,generate_thumbnailsand visual-pickfactory_promptcalls return images. Local rendering does not make the AI conversation local. - Hermes starts
zing serve-mcp. Zing starts background study, match, studio and render workers, and local FFmpeg, Node and browser subprocesses as needed. Work can take minutes or longer. A disconnected or timed-out call does not guarantee child processes have stopped. No scheduler is installed. - Zing reads the source files and folders you select outside the plugin folder.
Studies, profiles and caches live in
ZING_HOME, defaulting to~/.zing. Factory projects, prompts, answers, logs, receipts and renders use the project and output paths you supply. Files remain after uninstalling the plugin. - Uoink is optional. Health checks and library operations contact its local
helper.
push_to_uoinkwrites a breakdown note only when requested. SupplyUOINK_URLandUOINK_TOKENthrough Hermes; the plugin never reads token files. - The plugin stores no credentials. Its optional environment placeholders pass
workspace, sidecar, browser, Uoink and visual-service settings from the user's
shell or Hermes profile. Unset values are omitted. Installed Zing can also
read stock-service keys from Windows user environment variables. Never paste
secrets into
mcp.jsonor a conversation. - Zing and this plugin have no telemetry. The plugin does not update itself or fetch code at startup. The catalog pin covers the plugin files; the separately installed Zing command and its dependencies are outside that pin.
Example session
Ask Hermes to make three vertical clips from episode.mp4, using episode.vtt
and only local assets, under a new clips folder. It calls factory_new with
moments=3, shapes=["9x16"] and offline=true, then factory_run. It polls
factory_status, reads each factory_prompt, supplies its own factory_answer
and resumes. When the clips are ready, it returns the review page and receipts.
Ask it to fix a caption word or shorten a clip. It uses factory_edit for the
word, or factory_clip and another run for the trim. Review the new render and
any context flags before choosing a clip to post.