Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Manage TrueNAS SCALE via API. Check pool health, manage datasets and snapshots, monitor alerts, control services, manage apps, orchestrate Dockge container stacks, and manage bookmarks. Use when the user asks about their NAS, storage, backups, containers, bookmarks, or homelab services.
Manage TrueNAS SCALE via API. Check pool health, manage datasets and snapshots, monitor alerts, control services, manage apps, orchestrate Dockge container stacks, and manage bookmarks. Use when the user asks about their NAS, storage, backups, containers, bookmarks, or homelab services.
This item is timing out or returning errors right now. Review the source page and try again later.
Use the source page and any available docs to guide the install because the item is currently unstable or timing out.
I tried to install a skill package from Yavira, but the item is currently unstable or timing out. Inspect the source page and any extracted docs, then tell me what you can confirm and any manual steps still required. Then review README.md for any prerequisites, environment setup, or post-install checks.
I tried to upgrade a skill package from Yavira, but the item is currently unstable or timing out. Compare the source page and any extracted docs with my current installation, then summarize what changed and what manual follow-up I still need. Then review README.md for any prerequisites, environment setup, or post-install checks.
Manage a TrueNAS SCALE server and its apps via the TrueNAS API and Dockge Socket.IO.
TRUENAS_URL โ TrueNAS base URL (e.g., https://10.0.0.5:444) TRUENAS_API_KEY โ API key from TrueNAS UI โ API Keys
TRUENAS_VERIFY_TLS โ Set to "1" to enforce TLS certificate validation (default: skip for self-signed certs)
DOCKGE_URL โ Dockge URL (e.g., http://10.0.0.5:5001) DOCKGE_USER โ Dockge login username DOCKGE_PASS โ Dockge login password
See the references/ directory for per-service env vars. Common ones: SONARR_URL, SONARR_API_KEY โ TV show management RADARR_URL, RADARR_API_KEY โ Movie management PROWLARR_URL, PROWLARR_API_KEY โ Indexer management OVERSEERR_URL, OVERSEERR_API_KEY โ Media request UI PLEX_URL โ Media server (no auth on LAN) TAUTULLI_URL, TAUTULLI_API_KEY โ Plex analytics QBITTORRENT_URL โ Torrent client (no auth) SABNZBD_URL, SABNZBD_API_KEY โ Usenet client AUDIOBOOKSHELF_URL, AUDIOBOOKSHELF_API_KEY NTFY_URL โ Push notifications SYNCTHING_URL, SYNCTHING_API_KEY โ File sync N8N_URL, N8N_API_KEY โ Workflow automation NOCODB_URL, NOCODB_API_KEY โ Database CHANGEDETECTION_URL, CHANGEDETECTION_API_KEY CRAFTY_URL, CRAFTY_API_KEY โ Game servers LAZYLIBRARIAN_URL, LAZYLIBRARIAN_API_KEY METUBE_URL โ YouTube downloader KARAKEEP_URL, KARAKEEP_API_KEY โ Bookmarks with AI tagging
HTTPS REQUIRED: TrueNAS auto-revokes API keys used over HTTP. REST API Deprecation Notice: The REST API (/api/v2.0/) is deprecated in TrueNAS 25.04 and fully removed in 26.04. Use the WebSocket API (via scripts/truenas-ws.mjs) as the forward-compatible method. REST examples below still work on 24.10 and 25.x.
curl -sk "$TRUENAS_URL/api/v2.0/[endpoint]" \ -H "Authorization: Bearer $TRUENAS_API_KEY" The -k flag is needed for self-signed certificates (common on home servers).
The WebSocket API uses a DDP-like protocol (Meteor style). REST paths become dot notation: /api/v2.0/app โ app.query, /api/v2.0/system/info โ system.info. // Connect: wss://<host>/websocket (rejectUnauthorized: false for self-signed) // 1. Handshake send: {"msg": "connect", "version": "1", "support": ["1"]} recv: {"msg": "connected", "session": "..."} // 2. Authenticate send: {"id": "1", "msg": "method", "method": "auth.login_with_api_key", "params": ["API_KEY"]} recv: {"id": "1", "msg": "result", "result": true} // 3. Call methods send: {"id": "2", "msg": "method", "method": "system.info", "params": []} send: {"id": "3", "msg": "method", "method": "app.query", "params": []} Use the helper script for WebSocket calls: node scripts/truenas-ws.mjs <method> [params_json]
Self-signed certificates: TLS verification is skipped by default (curl -k, rejectUnauthorized: false) because homelab servers typically use self-signed certs. Set TRUENAS_VERIFY_TLS=1 to enforce strict TLS validation. API key scope: Use a read-only or least-privilege API key when possible. TrueNAS lets you scope keys to specific endpoints. Credentials stay local: All env vars are read at runtime and sent only to the configured service endpoints. Nothing is phoned home.
curl -sk "$TRUENAS_URL/api/v2.0/system/info" -H "Authorization: Bearer $TRUENAS_API_KEY"
# All pools with health status curl -sk "$TRUENAS_URL/api/v2.0/pool" -H "Authorization: Bearer $TRUENAS_API_KEY" \ | jq '.[] | {name, healthy}' # Or via WebSocket node scripts/truenas-ws.mjs pool.query '[]' The API returns a .healthy boolean per pool. For deeper status, inspect the full pool object.
curl -sk "$TRUENAS_URL/api/v2.0/alert/list" -H "Authorization: Bearer $TRUENAS_API_KEY" \ | jq '.[] | {level, formatted}'
curl -sk "$TRUENAS_URL/api/v2.0/service" -H "Authorization: Bearer $TRUENAS_API_KEY" \ | jq '.[] | select(.state == "RUNNING") | .service'
curl -sk "$TRUENAS_URL/api/v2.0/pool/dataset" -H "Authorization: Bearer $TRUENAS_API_KEY" \ | jq '.[] | {name, type, used: .used.parsed, available: .available.parsed}'
curl -sk -X POST "$TRUENAS_URL/api/v2.0/pool/dataset" \ -H "Authorization: Bearer $TRUENAS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"name": "pool/path/new-dataset"}'
# Destructive โ confirm with user first curl -sk -X DELETE "$TRUENAS_URL/api/v2.0/pool/dataset/id/DATASET_ID" \ -H "Authorization: Bearer $TRUENAS_API_KEY"
# WebSocket (required on 25.10+, /api/v2.0/zfs/snapshot returns 404) node scripts/truenas-ws.mjs zfs.snapshot.query '[]'
node scripts/truenas-ws.mjs zfs.snapshot.create '[{"dataset": "pool/dataset", "name": "manual-YYYY-MM-DD"}]'
curl -sk "$TRUENAS_URL/api/v2.0/pool/snapshottask" -H "Authorization: Bearer $TRUENAS_API_KEY" \ | jq '.[] | {dataset, schedule, enabled}'
curl -sk "$TRUENAS_URL/api/v2.0/replication" -H "Authorization: Bearer $TRUENAS_API_KEY" \ | jq '.[] | {name, state: .state.state}'
TrueNAS Apps are the official marketplace for installing containerized services.
curl -sk "$TRUENAS_URL/api/v2.0/app" -H "Authorization: Bearer $TRUENAS_API_KEY" \ | jq '.[] | {name, state, version}'
curl -sk "$TRUENAS_URL/api/v2.0/app" -H "Authorization: Bearer $TRUENAS_API_KEY" \ | jq '.[] | select(.upgrade_available) | .name'
See references/app-installation.md for the full installation guide covering: Checking app templates and storage requirements Creating datasets with proper ACLs Installing with correct storage mappings Handling apps with multiple storage mounts
curl -sk "$TRUENAS_URL/api/v2.0/app?name=APP_NAME" -H "Authorization: Bearer $TRUENAS_API_KEY" \ | jq '.[0] | {name, state, portals}'
Dockge is a companion UI for Docker Compose stacks not in the TrueNAS Apps catalog. It uses Socket.IO, not REST. Use the provided scripts.
npm install # in this skill's root directory
node scripts/dockge-list.mjs
# Update all running stacks node scripts/dockge-update.mjs # Update specific stacks node scripts/dockge-update.mjs mystack1 mystack2
Dockge uses Socket.IO with WebSocket transport. Status codes: 1 = inactive/exited 3 = running 4 = updating Key events: login โ authenticate with username/password stackList โ get all stacks (received via agent event) agent, "", "updateStack", stackName โ trigger pull + restart Note: Stacks prefixed with ix- are TrueNAS-managed apps visible to Dockge โ skip those when updating.
Run these commands for a quick health overview: # Pool health curl -sk "$TRUENAS_URL/api/v2.0/pool" -H "Authorization: Bearer $TRUENAS_API_KEY" \ | jq '.[] | {name, healthy}' # Active alerts curl -sk "$TRUENAS_URL/api/v2.0/alert/list" -H "Authorization: Bearer $TRUENAS_API_KEY" \ | jq '.[] | {level, formatted}' # Running services curl -sk "$TRUENAS_URL/api/v2.0/service" -H "Authorization: Bearer $TRUENAS_API_KEY" \ | jq '.[] | select(.state == "RUNNING") | .service' # App updates available curl -sk "$TRUENAS_URL/api/v2.0/app" -H "Authorization: Bearer $TRUENAS_API_KEY" \ | jq '.[] | select(.upgrade_available) | .name' # Replication status curl -sk "$TRUENAS_URL/api/v2.0/replication" -H "Authorization: Bearer $TRUENAS_API_KEY" \ | jq '.[] | {name, state: .state.state}'
This skill includes reference files for common homelab service categories. Each covers API patterns, env vars, and common agent tasks for services that typically run alongside TrueNAS: ReferenceServicesFileMedia managementOverseerr, Sonarr, Radarr, Prowlarr, Plex, Tautullireferences/media-management.mdApp installationTrueNAS native app install guidereferences/app-installation.mdDownload clientsqBittorrent, SABnzbd, FlareSolverrreferences/downloads.mdHomelab servicesntfy, Syncthing, n8n, NocoDB, ChangeDetection, Craftyreferences/homelab-services.mdBooks & mediaAudiobookshelf, LazyLibrarian, Calibre-Web, MeTubereferences/books-and-media.mdBookmarksKarakeep (AI-powered bookmark manager)references/bookmarks.md Load the relevant reference file when the user asks about a specific service category.
Run the monitoring checklist above. Summarize pool states, alerts, and any pending updates.
# TrueNAS apps curl -sk "$TRUENAS_URL/api/v2.0/app" -H "Authorization: Bearer $TRUENAS_API_KEY" \ | jq '.[] | select(.state == "RUNNING") | .name' # Dockge stacks (if configured) node scripts/dockge-list.mjs
Follow the guide in references/app-installation.md: Check app template for storage requirements Create dataset(s) under the apps pool Set ACL with apps preset Install app with correct storage mappings
node scripts/truenas-ws.mjs zfs.snapshot.create '[{"dataset": "pool/dataset", "name": "manual-snapshot-name"}]'
See references/downloads.md for qBittorrent and SABnzbd API commands.
See references/media-management.md for Overseerr request workflow.
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.