Releases: gpu7/agent-bitcoin
Release list
Agent-to-Agent Lightning payment
Python SDK plus L402 merchant tools (Bitcoin / Lightning / Nostr JSON, typically 100 sats). 8081 stays allowlisted (/32); not a public catalog.
Remote client pack — Neutrino LND on the client, client-hello.json, private channel to AWS, setup.sh / client_pack.py, 100-sat smoke (mempool-feerate).
Swarms — 2-agent and 8-agent demos share one Mac payer; they choose who pays Aperture. Winner: hash, fee-sats puzzle, or optional Grok llm-gate (XAI_API_KEY, never committed). --no-llm remains the free path. Test hook: SWARM_LLM_FORCE_VOTE.
Agent-to-agent Lightning — two LND nodes (examples/a2a_ln_pay.md): AWS invoices, Mac (or Ubuntu) pays. Not the swarm.
Docs — channel close → on-chain Bitcoin; README features; Grok / Ollama examples.
Rebuild origin and restart Aperture if you need new paid routes. Details: CHANGELOG.md, docs/l402-tools.md, docs/l402-client-pack.md.
Eight-agent swarm demo
Eight autonomous agents (roles a1–a8) with Nostr ids share one Mac LND wallet and the existing private channel to AWS. They negotiate on a local file bus; the highest score pays one L402 call (typically GET /paid/finance/mempool-feerate at 100 sats).
Mock: --offline-bus on one host.
Live: all eight processes on the Mac; Aperture invoice on AWS; pay from agent-bitcoin-lnd-*. Do not pay from the AWS invoice node (self-pay). Set AGENT_BITCOIN_ALLOW_MAINNET=1 and AGENT_BITCOIN_ALLOW_AUTOPAY=1 for mainnet.
Launcher: ./examples/swarm_l402_8_all.sh (one terminal). Per-role: ./examples/swarm_l402_8.sh --role a1.
Guide: examples/swarm_l402_8.md.Python 3.12 + .venv-nostr. Clear .nostr-poc/bus/ before a run. Check Mac lncli listpayments for ~100 sat SUCCEEDED. The two-agent demo is unchanged.
What's Changed
- Docs: wallets and chain backends by @gpu7 in #133
- Examples: eight-agent swarm L402 by @gpu7 in #134
- Docs: lab EIP 3.90.159.146 by @gpu7 in #135
- Docs: eight-agent swarm setup like two-agent by @gpu7 in #136
- Docs: swarm negotiate score by @gpu7 in #137
- Release: 26.6.0 for PyPI / tag v.26.6.0 by @gpu7 in #138
Full Changelog: v.26.5.0...v.26.6.0
Two-agent swarm demo
Example of two autonomous AI agents with Nostr ids that talk on a local file bus, pick who pays, and settle one L402 tool call.
Mock: --offline-bus on one host (including AWS). No Lightning. Good for ids + negotiate.
Live: both agent processes on the Mac, Aperture invoice on AWS, pay from Mac LND (agent-bitcoin-lnd-*). Typical call: GET /paid/finance/mempool-feerate at 100 sats. Paying from the AWS invoice node fails (self-payments not allowed).
Setup uses Python 3.12 and .venv-nostr (.[nostr]). Do not use uv run python on 3.14. Clear .nostr-poc/bus/ before a new run.
Engineer guide: examples/swarm_l402.md. Wrapper: examples/swarm_l402.sh.
Check a live pay on the Mac: lncli listpayments — expect ~100 sat SUCCEEDED.
Add agent tools
Notes:
Paid HTTP tools for autonomous agents on the existing Aperture L402 gateway (typically 100 sats). After Lightning payment the origin returns a small JSON digest. Minimum invoice amount is 100 sats. These do not replace mempool.space, a Lightning node UI, or a Nostr client.
Bitcoin
GET /paid/finance/mempool-feerate — fast / medium / slow sat/vB
GET /paid/finance/mempool-backlog — how full the mempool is
GET /paid/finance/fee-for-vsize — total fee sats from vbytes
GET /paid/finance/confirm-target — wait window → sat/vB
GET /paid/finance/btc-usd — BTC/USD pass-through
Lightning
POST /paid/finance/ln-path-fee-hint — routing fee hint from AWS LND
POST /paid/finance/ln-invoice-decode — inspect a BOLT11
POST /paid/finance/ln-invoice-preflight — allow/reject before pay
Nostr
README documents existing identity / NWC
POST /paid/nostr/event-verify — id + signature check
POST /paid/nostr/npub-decode — bech32 → hex (nsec rejected)
POST /paid/nostr/zap-receipt-inspect — NIP-57 receipt inspect, not a wallet
Rebuild origin and restart Aperture to pick up new routes. Details: docs/l402-aperture.md and CHANGELOG.md.
Add mempool-feerate
mempool-feerate is a small paid HTTP endpoint (GET /paid/finance/mempool-feerate, 100 sats via L402). After Lightning payment it returns JSON with three on-chain fee bands — fast / medium / slow — in sats per virtual byte, plus a timestamp and a short cache TTL.
It pulls public estimates from mempool.space’s recommended-fees API, digests them into those three integers, and caches the result for 15–60 seconds. It does not replace mempool.space, scrape the website, or help with Lightning-only invoice pays. It is for an agent that is about to send on-chain bitcoin (sweep, channel open/close, on-chain pay) and needs a current fee hint so it neither underpays nor overpays.
v.26.2.0
What's Changed
- Publish agent-bitcoin to PyPI and drop TestPyPI by @gpu7 in #91
- Align package version 26.2.0 for PyPI by @gpu7 in #92
Full Changelog: v.26.2.0...v26.2.0
L402 gateway
Remove transaction fee
Removed transaction fee (platform fee).
Cleanup project
What's Changed
- Add NIP-44 v2 and public-relay NWC (Mac/AWS) by @gpu7 in #71
- Harden NWC public relay list (skip 503s) by @gpu7 in #72
- Drop offchain.pub from default NWC relays by @gpu7 in #73
- Stop NWC public-relay listen from hanging on connect by @gpu7 in #74
- Keep NWC listen SUB alive across poll cycles by @gpu7 in #75
- Set default platform fee to 21 sats by @gpu7 in #76
- Bump docker/setup-buildx-action from 3 to 4 by @dependabot[bot] in #1
- Bump docker/build-push-action from 6 to 7 by @dependabot[bot] in #4
- Bump actions/setup-python from 5 to 7 by @dependabot[bot] in #5
- Bump astral-sh/setup-uv from 5 to 7 by @dependabot[bot] in #3
- Bump softprops/action-gh-release from 2 to 3 by @dependabot[bot] in #2
- Bump aiohttp from 3.14.1 to 3.14.3 by @dependabot[bot] in #48
- Bump setuptools from 82.0.1 to 83.0.0 by @dependabot[bot] in #45
- Bump cryptography from 49.0.0 to 50.0.0 by @dependabot[bot] in #47
- Pin trivy-action so Docker CI can resolve by @gpu7 in #77
- Release v.26.0.0 by @gpu7 in #78
New Contributors
- @dependabot[bot] made their first contribution in #1
Full Changelog: v.25.0.0...v.26.0.0