一键导入
voice-engine-installer
Install, verify, and register Batshit TTS/STT speech engines from an outside coding agent using a Portable Skill Token.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Install, verify, and register Batshit TTS/STT speech engines from an outside coding agent using a Portable Skill Token.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Build, configure, and publish persistent mini-app artifacts in Batshit.
Create, update, test, and review Batshit CLI tools through a light Fabric-driven workflow.
Create, update, and refine Batshit skills and prompts that work well with any AI model.
Install, verify, and register Batshit TTS/STT speech engines through the server-owned Engine Manager.
Build, validate, update, and publish Batshit artifacts from an outside coding agent using a Portable Skill Token.
Create, update, validate, and review Batshit CLI Tools from an outside coding agent using a Portable Skill Token.
| name | voice-engine-installer |
| description | Install, verify, and register Batshit TTS/STT speech engines from an outside coding agent using a Portable Skill Token. |
| metadata | {"version":"0.1.0","batshitPortableSkill":true,"family":"voice-engines"} |
You are running outside Batshit. Your job is to help the user install, verify, and register local or self-hosted TTS/STT engines in their local Batshit instance.
This portable skill uses Batshit's HTTP API. Do not write Redis directly. Do not edit Batshit app source. Do not use BATSHIT_TOKEN, user passwords, or n8n callback tokens.
Before doing real work, establish:
http://127.0.0.1:5620Voice Engines scopeIf the user has not provided the token, ask them to create one in Batshit Settings -> Skills & Prompts -> Portable Skills and grant Voice Engines. A multi-scope token may be stored once in ~/.batshit/portable-skills/portable-skills.env; a skill-specific file such as voice-engine-installer.env is only needed when the user wants a narrower override token.
Use environment variables for shell calls so the token is not repeated in every command:
PORTABLE_SKILL_ENV_DIR="${BATSHIT_PORTABLE_SKILL_ENV_DIR:-$HOME/.batshit/portable-skills}"
PORTABLE_SKILL_ENV_FILE="${BATSHIT_PORTABLE_SKILL_ENV_FILE:-$PORTABLE_SKILL_ENV_DIR/portable-skills.env}"
if [ -z "${BATSHIT_PORTABLE_TOKEN:-${BATSHIT_PORTABLE_SKILL_TOKEN:-}}" ]; then
if [ -f "$PORTABLE_SKILL_ENV_FILE" ]; then
set -a
. "$PORTABLE_SKILL_ENV_FILE"
set +a
elif [ -f "$PORTABLE_SKILL_ENV_DIR/voice-engine-installer.env" ]; then
set -a
. "$PORTABLE_SKILL_ENV_DIR/voice-engine-installer.env"
set +a
fi
fi
export BATSHIT_BASE_URL="${BATSHIT_BASE_URL:-http://127.0.0.1:5620}"
export BATSHIT_PORTABLE_TOKEN="${BATSHIT_PORTABLE_TOKEN:-${BATSHIT_PORTABLE_SKILL_TOKEN:-}}"
If BATSHIT_PORTABLE_TOKEN is missing or still equals the placeholder value, stop and ask the user for the token or env-file path before making API calls.
Run this before any install, mutation, or registration.
curl -sS "$BATSHIT_BASE_URL/api/health"
Require ok: true. If Batshit is not reachable, stop and tell the user to start Batshit or provide the correct base URL.
curl -sS "$BATSHIT_BASE_URL/api/controls/use" \
-H "Content-Type: application/json" \
-H "x-batshit-portable-token: $BATSHIT_PORTABLE_TOKEN" \
--data '{"controlId":"sys.runtime_addon.status","input":{"addonId":"voice-engines"}}'
Require a successful response. If the response says the token lacks scope, stop and tell the user to rotate or create a token with Voice Engines.
In the in-app skill references, any instruction to call a Fabric control maps to this portable HTTP shape:
curl -sS "$BATSHIT_BASE_URL/api/controls/use" \
-H "Content-Type: application/json" \
-H "x-batshit-portable-token: $BATSHIT_PORTABLE_TOKEN" \
--data '{
"controlId": "sys.voice.engine.complete_local_setup",
"input": {}
}'
Portable Skill Tokens are the standing approval for the granted family. The server applies allowRisky: true for portable-token calls after family scope passes, so do not add parallel approval workarounds.
~/.batshit/installs/<engine-id>/ with an engine-local .venv for Batshit-managed Python engines.launch.env.HF_HOME inside the engine install root, usually ~/.batshit/installs/<engine-id>/hf-home, before any download or helper launch. If the user explicitly wants to reuse an existing shared cache, set launch.env.HF_HOME or launch.env.HF_HUB_CACHE to that exact path and set launch.env.BATSHIT_ALLOW_SHARED_HF_CACHE = "true".deleteLocalFiles: true only when the user explicitly wants Batshit-managed local install/runtime files removed too; do not use it for connected existing or user-managed installs.host.docker.internal.Follow this order:
references/runtime-preflight.md.references/expression-contract.md.references/registration-patterns.md.sys.voice.engine.complete_local_setup when the install is Batshit-managed.Always read:
references/runtime-preflight.mdreferences/expression-contract.mdreferences/registration-patterns.mdRead engine or path references as needed:
references/chatterbox-turbo.mdreferences/dots-tts-soar-mlx.mdreferences/fish-speech-s2.mdreferences/kyutai-local-tts.mdreferences/nemotron-asr-mlx.mdreferences/mlx-audio-apple-silicon.mdreferences/local-self-hosted-engines.mdreferences/local-stt-readiness.mdreferences/openai-compatible-adapter.mdreferences/open-source-engine-research.mdreferences/failure-handling.mdEnd with:
byo:<engineId>Do not call the setup done if any proof step failed.