Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Integrate HODLXXI as a Bitcoin-native identity provider that bridges OAuth2/OIDC and Lightning LNURL-Auth for client registration, authorization flows, JWT verification, and health monitoring.
Integrate HODLXXI as a Bitcoin-native identity provider that bridges OAuth2/OIDC and Lightning LNURL-Auth for client registration, authorization flows, JWT verification, and health monitoring.
This item's current download entry is known to bounce back to a listing or homepage instead of returning a package file.
Use the source page and any available docs to guide the install because the item currently does not return a direct package file.
I tried to install a skill package from Yavira, but the item currently does not return a direct package file. Inspect the source page and any extracted docs, then tell me what you can confirm and any manual steps still required.
I tried to upgrade a skill package from Yavira, but the item currently does not return a direct package file. Compare the source page and any extracted docs with my current installation, then summarize what changed and what manual follow-up I still need.
Use this skill to integrate HODLXXI (Universal Bitcoin Identity Layer) for agent authentication, LNURL-Auth linking, and JWT-based identity claims.
Fetch the skill file from the repository (raw link works for installable agents): curl -L -o SKILL.md \ https://raw.githubusercontent.com/hodlxxi/Universal-Bitcoin-Identity-Layer/main/skills/public/hodlxxi-bitcoin-identity/SKILL.md Install helper dependencies for local verification scripts: python -m pip install ecdsa pyjwt requests
Set a base URL for the HODLXXI deployment. Register an OAuth client to obtain client_id and client_secret. Run the OAuth2/OIDC authorization code flow (PKCE recommended). Start an LNURL-Auth session for Lightning wallet login. Verify JWTs with the JWKS endpoint.
Set the base URL to the HODLXXI deployment (update as needed): BASE_URL="https://hodlxxi.com"
Register a client to get credentials: curl -X POST "$BASE_URL/oauth/register" \ -H "Content-Type: application/json" \ -d '{"client_name": "YourAgentName", "redirect_uris": ["https://your-callback-url"], "scopes": ["openid", "profile"]}' Store client_id and client_secret securely.
Discover endpoints: curl "$BASE_URL/.well-known/openid-configuration" Create an authorization request (PKCE recommended): curl "$BASE_URL/oauth/authorize?client_id=your_client_id&redirect_uri=your_callback&response_type=code&scope=openid%20profile&code_challenge=your_challenge&code_challenge_method=S256" Exchange the authorization code for tokens: curl -X POST "$BASE_URL/oauth/token" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=authorization_code&code=received_code&redirect_uri=your_callback&client_id=your_client_id&code_verifier=your_verifier" Expect an access token, ID token (JWT), and optional refresh token.
Create a session and show the LNURL to the user: curl -X POST "$BASE_URL/api/lnurl-auth/create" \ -H "Accept: application/json" Poll for completion after the user scans the LNURL with a Lightning wallet: curl "$BASE_URL/api/lnurl-auth/check/your_session_id"
Fetch JWKS: curl "$BASE_URL/oauth/jwks.json" Verify with Python (example uses PyJWT): import jwt import requests jwks = requests.get("https://your-hodlxxi-deployment.com/oauth/jwks.json", timeout=10).json() public_key = jwt.algorithms.RSAAlgorithm.from_jwk(jwks["keys"][0]) claims = jwt.decode(your_jwt, public_key, algorithms=["RS256"], audience="your_audience") print(claims)
Check liveness and OAuth system status endpoints: curl "$BASE_URL/health" curl "$BASE_URL/oauthx/status"
curl -X POST "$BASE_URL/oauth/register" \ -H "Content-Type: application/json" \ -d @templates/oauth-client.json
session_json=$(curl -s -X POST "$BASE_URL/api/lnurl-auth/create") session_id=$(python3 -c 'import json,sys; print(json.loads(sys.argv[1])["session_id"])' "$session_json") curl "$BASE_URL/api/lnurl-auth/check/$session_id"
Always use HTTPS and verify TLS certificates in production. Keep client secrets in a secrets manager or environment variables. Use PKCE for public clients and rotate secrets for confidential clients. Treat LNURL sessions as single-use and enforce short TTLs. Validate aud, iss, and exp claims for JWTs.
Use /oauthx/docs for live OAuth/OIDC API documentation. Use /oauthx/status to monitor database and LNURL session health. Rotate JWKS keys via the server configuration (JWKS directory + rotation days).
Paid API calls are billed per OAuth client_id (agent/app), not per session pubkey. When balance or free quota is exhausted, paid endpoints return HTTP 402 with a Lightning top-up path.
POST /api/billing/agent/create-invoice POST /api/billing/agent/check-invoice Example create invoice: curl -X POST "$BASE_URL/api/billing/agent/create-invoice" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{"amount_sats": 1000}' Example check invoice: curl -X POST "$BASE_URL/api/billing/agent/check-invoice" \ -H "Authorization: Bearer $ACCESS_TOKEN" \ -H "Content-Type: application/json" \ -d '{"invoice_id": "your_invoice_id"}'
When a paid endpoint is called with insufficient balance, expect: { "ok": false, "error": "payment_required", "code": "PAYMENT_REQUIRED", "client_id": "your_client_id", "cost_sats": 1, "balance_sats": 0, "create_invoice_endpoint": "/api/billing/agent/create-invoice", "hint": "Top up via Lightning PAYG" }
scripts/verify_signature.py validates LNURL-Auth signatures locally. HEARTBEAT.md describes periodic health checks for the deployment. templates/oauth-client.json provides a ready client registration payload.
Use scripts/verify_signature.py to validate LNURL signatures locally. Install the dependency first: python -m pip install ecdsa python scripts/verify_signature.py --k1 <hex> --signature <hex> --pubkey <hex>
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.