Hetzner Storage Box

SkillFiles & storage

Read and operate Hetzner Storage Boxes through Hetzner API management calls and WebDAV file requests with gateway-injected credentials.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Hetzner Storage Box skill

What this skill tells your AI

The instructions your AI receives, as published by hybridaione/hybridclaw in skills/hetzner-storage-box/SKILL.md and read by ahel’s review.

Use this skill for Storage Box inventory, lifecycle and snapshot management, plus WebDAV file reads and guarded uploads/archives.

Default Workflow

  1. Use Hetzner API reads (list-storage-boxes, get-storage-box) for inventory and metadata.
  2. Use WebDAV reads (list-files, download-file) for file inspection.
  3. Use plan before any management, file write, or public-link request.
  4. Treat hetzner_storage_box.cjs as the API/WebDAV wrapper. Do not handcraft Hetzner Storage Box API URLs, WebDAV URLs, JSON bodies, tiers, or secret refs from memory.
  5. For prompt/user testing, stop after plan or after helper payload generation. Do not call the built-in http_request tool.
  6. For real user requests that need live Storage Box API or WebDAV reads, pass the helper-emitted httpRequest object unchanged to http_request. The bearerSecretName or secretHeaders field is the secret reference; do not rewrite it, preflight it, inspect it, or ask the model for the secret.
  7. If a live http_request call returns 401 or 403, stop after that first failure. Do not retry, do not fan out to more endpoints or paths, and ask the operator to set or verify the relevant secret.
  8. Require explicit operator grant before creating boxes, changing settings, snapshots, uploads, archives, directory creation, public sharing, or deletes.
  9. Never paste, print, or inspect HETZNER_API_TOKEN or Storage Box passwords. The gateway injects API bearer tokens and WebDAV Basic auth server-side.

Secret Setup

API management calls use HETZNER_API_TOKEN. Set or update it in this order:

  1. Browser admin: open the active HybridClaw admin URL ending in /admin/secrets.
  2. Browser /chat or TUI fallback: /secret set HETZNER_API_TOKEN "<hetzner-console-api-token>".
  3. Local console fallback:
hybridclaw secret set HETZNER_API_TOKEN "<hetzner-console-api-token>"

HETZNER_API_TOKEN is the Hetzner Console token for Cloud and Storage Box management APIs. DNS uses its own HETZNER_DNS_API_TOKEN because Hetzner DNS is served by a separate DNS API and Auth-API-Token header.

WebDAV file operations use a Basic-auth secret containing only the base64 encoded username:password payload. Set it in the same order:

  1. Browser admin: open the active HybridClaw admin URL ending in /admin/secrets.
  2. Browser /chat or TUI fallback: /secret set HETZNER_STORAGE_BOX_BASIC_AUTH "<base64-username-password>".
  3. Local console fallback:
printf '%s' 'u00000:storage-box-password' | base64
hybridclaw secret set HETZNER_STORAGE_BOX_BASIC_AUTH "<base64-username-password>"

See references/operator-setup.md for operator setup, scope, and autonomy defaults.

Command Contract

node skills/hetzner-storage-box/hetzner_storage_box.cjs --help

Build management API requests:

node skills/hetzner-storage-box/hetzner_storage_box.cjs --format json http-request list-storage-boxes
node skills/hetzner-storage-box/hetzner_storage_box.cjs --format json http-request get-storage-box --box-id 123456
node skills/hetzner-storage-box/hetzner_storage_box.cjs --format json http-request create-snapshot --box-id 123456 --description "pre-archive" --operator-grant

Build WebDAV file requests:

node skills/hetzner-storage-box/hetzner_storage_box.cjs --format json webdav-request list-files \
  --host u00000.your-storagebox.de --path /archives

node skills/hetzner-storage-box/hetzner_storage_box.cjs --format json webdav-request upload-text \
  --host u00000.your-storagebox.de --path /archives/q4-invoices/manifest.txt \
  --body "Archived Q4 invoices" --operator-grant

node skills/hetzner-storage-box/hetzner_storage_box.cjs --format json public-url \
  --host u00000.your-storagebox.de --path /archives/q4-invoices.zip

node skills/hetzner-storage-box/hetzner_storage_box.cjs --format json share-public-link \
  --host u00000.your-storagebox.de --path /archives/q4-invoices.zip \
  --expires-at 2026-06-30 --operator-grant

Working Rules

  • Prefer read-only API tokens and read-only Storage Box subaccounts for file inspection.
  • Treat delete-storage-box, delete-snapshot, and delete-path as red-risk actions requiring exact target confirmation.
  • Use WebDAV over HTTPS for file operations unless the operator explicitly asks for SFTP/rsync outside this helper.
  • public-url only constructs the URL for a path that is already public. share-public-link is the guarded operator handoff for publishing a path and recording its intended expiration. Storage Box file access is credentialed by default, so do not present a path as public until the operator confirms the serving configuration.
  • Cost per assistant run is recorded by HybridClaw UsageTotals; helper output includes costMeasurement.system = "UsageTotals" for eval verification.

Eval Suite

node skills/hetzner-storage-box/hetzner_storage_box.cjs --format json eval-scenarios

The fixture at evals/scenarios.json contains 10 scenarios covering inventory, snapshots, WebDAV list/download/upload/archive, public links, and deletes.

Validation

python3 skills/skill-creator/scripts/quick_validate.py skills/hetzner-storage-box
node skills/hetzner-storage-box/hetzner_storage_box.cjs --help
node skills/hetzner-storage-box/hetzner_storage_box.cjs --format json eval-scenarios

Signals

GitHub stars
134
Forks
13
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
hetzner-storage-box
Source
github.com/hybridaione/hybridclaw