HivemindOS manual
Tailnet Generation Skills
Generation skills teach agents how to use your private image, speech, and other generation services, on the same machine or on another machine in your Tailnet. They are instructions, not the services themselves: how to call an endpoint, check the output, and add new providers.
Setup copies the bundled templates into your vault’s Skills/ folder, and agents find them in the shared skill index. The templates hold only placeholders. You add your own addresses, models, and settings to your vault copy; existing copies are never overwritten.
Bundled skills
| Skill | Covers |
|---|---|
tailscale-generation-skill-authoring |
How to add or update generation skills, where each provider belongs, and a provider-block template. |
comfyui-image-generation |
Image providers such as ComfyUI and Z-Image, with Tailnet and local templates. |
localtts |
Speech providers such as Qwen3-TTS, with Tailnet and local templates. |
The localtts template expects a basic endpoint set: /health, /v1/models, GET /v1/voices, /voices, /v1/voices/<voice-id>, POST /v1/voices, /v1/audio/speech, /tts/synthesize, /synthesize, /api/tts, /openapi.json, and /docs.
Where a provider belongs
Organize providers by what they make, not by model or machine. Add a provider block to the matching skill instead of creating one skill per model.
| Output | Skill |
|---|---|
| Images (ComfyUI, Z-Image, Flux, SDXL, Stable Diffusion, inpainting, editing) | comfyui-image-generation |
| Speech (Qwen3-TTS, Kokoro, Chatterbox, Dia, Orpheus, XTTS) | localtts |
| Video | A dedicated skill, for example local-video-generation |
| 3D models | A dedicated skill, for example local-3d-generation |
| Music and songs | A separate music skill, not localtts |
Tailnet mode and local mode
Each skill covers both ways of reaching a provider:
- Tailnet mode: the generator runs on another HivemindOS machine. The agent needs only the Tailnet URL or MagicDNS name, the model or preset ID, the request shape, and how to check the output.
- Local mode: the generator runs on this machine. The skill can also note the local URL, service folder, how it is started, model paths, hardware limits, and logs.
Label local-only details clearly, so agents on other machines don’t try to run service diagnostics they can’t reach.
Provider block template
### <Provider name>
Use this block for ...
**Route modes**
- Tailnet mode: `http(s)://<tailnet-host>:<port>` (preferred when the provider runs on another machine)
- Local mode: `http://127.0.0.1:<port>` (only on the service's own machine)
**Client configuration**
- URL: `<BASE_URL>`
- Model or default preset: `<MODEL_ID>`
- Output extension: `.png`, `.wav`, `.mp4`, `.glb`, etc.
- Auth: environment variable name only. Never include secret values.
**Preflight**
```bash
curl -fsS --max-time 5 http://<host>:<port>/health
curl -fsS --max-time 5 http://<host>:<port>/v1/models
```
**Generate and verify**
```bash
curl -fsS -X POST http://<host>:<port>/<generation-endpoint> \
-H 'Content-Type: application/json' -d '{...}' -o /tmp/output.ext
file /tmp/output.ext
```
**Service machine only**
- Service folder, service manager (`launchctl`, `systemctl`, `docker`), logs, known failures.
Keep it private
- Don’t put private Tailnet IPs, machine names, prompts, voice samples, transcripts, or local paths into shared templates. Keep them in your own vault copy.
- Prefer MagicDNS or a stable Tailscale Serve name over raw
100.xaddresses, which can change. - Keep generation services private to your Tailnet unless you deliberately choose to expose them.