Bitcoin Identity
VerifiedIntegrate 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.
$ Add to .claude/skills/ About This Skill
# HODLXXI Bitcoin Identity
Overview
Use this skill to integrate HODLXXI (Universal Bitcoin Identity Layer) for agent authentication, LNURL-Auth linking, and JWT-based identity claims.
Installation
- Fetch the skill file from the repository (raw link works for installable agents):
```bash 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:
```bash python -m pip install ecdsa pyjwt requests ```
Quick start
- 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.
Usage steps
1) Configure the base URL
Set the base URL to the HODLXXI deployment (update as needed):
```bash BASE_URL="https://hodlxxi.com" ```
2) Register an OAuth client
Register a client to get credentials:
```bash 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.
3) Run OAuth2/OIDC authorization code flow
Discover endpoints:
```bash curl "$BASE_URL/.well-known/openid-configuration" ```
Create an authorization request (PKCE recommended):
```bash 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:
```bash 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.
4) Start an LNURL-Auth session
Create a session and show the LNURL to the user:
```bash 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:
```bash curl "$BASE_URL/api/lnurl-auth/check/your_session_id" ```
5) Verify JWTs
Fetch JWKS:
```bash curl "$BASE_URL/oauth/jwks.json" ```
Verify with Python (example uses PyJWT):
```python 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) ```
6) Monitor health and metrics
Check liveness and OAuth system status endpoints:
```bash curl "$BASE_URL/health" curl "$BASE_URL/oauthx/status" ```
Code examples
Register a client from a JSON template
```bash curl -X POST "$BASE_URL/oauth/register" \ -H "Content-Type: application/json" \ -d @templates/oauth-client.json ```
Create LNURL session and poll
```bash 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" ```
Best practices
- 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.
Advanced features
- 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).
PAYG billing for OAuth clients
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.
Billing endpoints (OAuth token required)
- `POST /api/billing/agent/create-invoice`
- `POST /api/billing/agent/check-invoice`
Example create invoice:
```bash 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:
```bash 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"}' ```
402 response shape
When a paid endpoint is called with insufficient balance, expect:
```json { "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" } ```
Supporting files
- `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.
Optional helper script
Use `scripts/verify_signature.py` to validate LNURL signatures locally. Install the dependency first:
```bash python -m pip install ecdsa python scripts/verify_signature.py --k1 <hex> --signature <hex> --pubkey <hex> ```
Use Cases
- Integrate Bitcoin-native identity authentication using HODLXXI provider
- Bridge OAuth2/OIDC with Lightning LNURL-Auth for decentralized login
- Verify JWTs issued by Bitcoin identity providers in applications
- Implement passwordless authentication using Lightning Network credentials
- Build Bitcoin-native identity flows for Web3 and decentralized applications
Pros & Cons
Pros
- +Compatible with multiple platforms including claude-code, openclaw
- +Well-documented with detailed usage instructions and examples
- +Strong community adoption with a large number of downloads
Cons
- -Requires API tokens or authentication setup before first use
- -No built-in analytics or usage metrics dashboard
FAQ
What does Bitcoin Identity do?
What platforms support Bitcoin Identity?
What are the use cases for Bitcoin Identity?
100+ free AI tools
Writing, PDF, image, and developer tools — all in your browser.
Next Step
Use the skill detail page to evaluate fit and install steps. For a direct browser workflow, move into a focused tool route instead of staying in broader support surfaces.