| name | hydra-head |
| description | Hydra Head guidance: setup, keys, peers, lifecycle. Best practices from hydra.family. Use operator skill for execution. |
| allowed-tools | ["Read"] |
| user-invocable | true |
| context | ["!hydra-node --version 2>&1 | head -3"] |
| metadata | {"openclaw":{"emoji":"🐉","requires":{"anyBins":["hydra-node","docker"],"bins":["curl"]},"install":[{"id":"brew","kind":"brew","formula":"colima docker docker-compose curl","bins":["colima","docker","docker-compose","curl"],"label":"Install Docker runtime (Colima) + Docker CLI + Compose + curl (brew)","os":["darwin","linux"]}]}} |
hydra-head
This is a guidance skill. Provides best practices and templates. For execution, use hydra-head-operator.
When to use
- Setting up or operating hydra-node
- Understanding Hydra Head lifecycle
- Debugging connectivity or configuration issues
Operating rules (must follow)
- Confirm network (mainnet/preprod/preview/devnet)
- Use hydra.family docs as source of truth
- Never execute—only provide guidance
- Treat all
.sk files as secrets
Docker fallback mode
If hydra-node is not installed locally, use the wrapper script in this skill folder to run hydra-node inside Docker (Hydra upstream recommends Docker images for quickest start).
chmod +x {baseDir}/scripts/hydra-node.sh
{baseDir}/scripts/hydra-node.sh --help
{baseDir}/scripts/hydra-node.sh gen-hydra-key --output-file hydra
For full multi-node Head demos, prefer the hydra.family Docker Compose demo (it's the canonical "known-good" setup).
Key concepts
Key roles
- Cardano keys: Identify participant on L1, pay tx fees
- Hydra keys: Multi-sign snapshots inside the head
Lifecycle
Init → Commit → Open → [L2 transactions] → Close → Contest → Fanout
Important parameters
- Contestation period: Safety window for contesting after Close
- Deposit period: Window for recognizing deposits
Setup guide
1. Generate keys
cardano-cli conway address key-gen \
--verification-key-file cardano.vk \
--signing-key-file cardano.sk
hydra-node gen-hydra-key --output-file hydra
chmod 600 *.sk
2. Exchange keys with peers
Each participant needs:
- Their own
cardano.sk and hydra.sk
- All peers'
cardano.vk and hydra.vk
3. Get scripts tx id
4. Configure hydra-node
hydra-node run \
--node-id "alice" \
--persistence-dir ./hydra-data \
\
--node-socket /path/to/node.socket \
--testnet-magic 1 \
--blockfrost blockfrost.txt \
\
--cardano-signing-key cardano.sk \
--hydra-signing-key hydra.sk \
\
--cardano-verification-key bob-cardano.vk \
--hydra-verification-key bob-hydra.vk \
--peer "bob.example.com:5001" \
\
--hydra-scripts-tx-id <scripts-tx-id> \
--contestation-period 120s \
\
--api-host 0.0.0.0 \
--api-port 4001 \
--host 0.0.0.0 \
--port 5001
Head operations
Open a head
hydra-tui --connect localhost:4001
curl -X POST localhost:4001/init
curl -X POST localhost:4001/commit \
-H "Content-Type: application/json" \
-d '{"utxo": {...}}'
L2 transactions
curl -X POST localhost:4001/submit \
-H "Content-Type: application/json" \
-d '{"transaction": "..."}'
Close and fanout
curl -X POST localhost:4001/close
curl -X POST localhost:4001/fanout
Examples
Example: 2-party head on preprod
User request: "Set up a 2-party Hydra head on preprod"
Response:
mkdir -p ~/hydra/alice && cd ~/hydra/alice
cardano-cli conway address key-gen \
--verification-key-file cardano.vk \
--signing-key-file cardano.sk
hydra-node gen-hydra-key --output-file hydra
chmod 600 *.sk
SCRIPTS_TX_ID="..."
hydra-node run \
--node-id "alice" \
--persistence-dir ./data \
--node-socket $CARDANO_NODE_SOCKET_PATH \
--testnet-magic 1 \
--cardano-signing-key cardano.sk \
--hydra-signing-key hydra.sk \
--cardano-verification-key bob-cardano.vk \
--hydra-verification-key bob-hydra.vk \
--peer "bob-host:5001" \
--hydra-scripts-tx-id $SCRIPTS_TX_ID \
--contestation-period 120s \
--api-port 4001 \
--port 5001
curl -X POST localhost:4001/init
hydra-tui --connect localhost:4001
Verification checklist
Common issues
See hydra-head-troubleshooter skill for:
- "No head observed"
- "Head doesn't make progress"
- "Peer out of sync"
- AckSn/PeerConnected issues
Safety / key handling
- Never share
.sk files
- Keep separate directories per participant
- Test on devnet/preprod first
- Back up persistence directory
References
shared/PRINCIPLES.md
hydra-head-operator (for execution)
hydra-head-troubleshooter (for debugging)
- See
reference/sources.md for doc provenance