v0.9.0 — $OBOL is money
The obol or obolus (Ancient Greek: ὀβολός) was a form of ancient Greek currency and weight. - Wikipedia
This release introduces the Hermes agent framework by NousResearch, along with support for $OBOL gasless payments on mainnet in obol sell commands, and introduces some demo services to sell for new users to quickly host some sample local agent services they can iterate on later.
Get started selling services from your stack with obol sell demo. Tag @Obol_Collective on X with your storefront and maybe we'll check it out.
Warning
This software is early alpha, you could lose what you put in. Please use caution when it comes to (non-testnet) assets.
Install / Upgrade
# Install the latest versions
OBOL_RELEASE=v0.9.0 bash <(curl -s https://stack.obol.org)
# Run the stack
obol stack init && obol stack up
# Try out selling some demo 'Hello World' services
obol sell demo
# And if you want to hand over to your Claude
claude
/plugin marketplace add ObolNetwork/skills
/plugin install obol@obol
"Hey Claude, help me sell services on the Obol Stack that people want to pay for. Make no mistakes."Release Highlights
🤝 obol sell demo — your first paid endpoint, in one command
The headline of v0.9.0 obol sell demo deploys a small HTTP service into the cluster, gates it behind x402, registers it on a Cloudflare quick tunnel, waits for the offer to reach Ready=True, and prints copy-paste try-it instructions for both curl and the Python x402 SDK.
obol sell demo # hello @ 1 OBOL/req on Ethereum mainnetUse it as the canonical "Hello World" for agent commerce. Once you've watched a paid request settle end-to-end, the same machinery (obol sell inference / obol sell http) wraps anything in your cluster.
💸 $OBOL micropayments with sponsored gas on mainnet
Buyers paying in $OBOL on Ethereum mainnet sign an EIP-2612 permit off-chain. The Obol-operated x402 facilitator (x402.gcp.obol.tech) batches that permit with the on-chain transfer at settlement time. Buyers never spend ETH on gas and skip the one-time approve(Permit2, max) step that most ERC-20 payment flows require. Sellers receive $OBOL directly into their agent wallet.
This is the most concretely better-than-card UX the stack ships: sign a message, pay in OBOL, neither party touches a gas token. Combined with obol sell demo, it's the shortest path to a working agent-to-agent commerce loop. Now its time for agentic founders to build the digital services of the next economy.
🤖 Hermes is now the default agent runtime
Obol Stack 0.9.0 makes Hermes the default Obol Agent. obol stack up provisions a hermes-obol-agent namespace with its own Ethereum signing wallet, a built-in skill set, and an interactive chat TUI:
obol hermes chat # interactive chat with the default agent
obol hermes setup # wire up Telegram / Discord / Slack messaging
obol hermes skills list # live skill catalogueobol hermes <anything> is a passthrough to the in-cluster Hermes binary. OpenClaw remains supported as an alternate runtime — obol agent new --runtime openclaw if you want one.
🧩 Claude Code plugin — ObolNetwork/skills
If you use Claude Code, you can now install the Obol skills as a plugin and let Claude drive your stack:
/plugin marketplace add ObolNetwork/skills
/plugin install obol@obol
The run-obol-stack skill teaches Claude how to install, bring up, debug, and operate the stack — including walking through obol sell demo, registering on ERC-8004, and resolving stuck pods. Source: github.com/ObolNetwork/skills.
Smaller wins
obol model setup custom— point LiteLLM at any OpenAI-compatible endpoint (vLLM, sglang, mlx-lm, a remote GPU box). The setup flow validates the endpoint and rewires the default agent to it in one command.- Auto-configured LiteLLM during
stack up— host Ollama models are detected and registered with sensible ranking (chat-capable models ahead of:cloudaliases, embedding models last). No more "agent picked an unusable cloud model on first boot." - Public storefront refresh — Next.js + Tailwind landing page on the tunnel hostname showing live
ServiceOffers with try-it code snippets. - Preserving public tunnels —
obol stack upnow detects an active Cloudflare quick tunnel and skips redeployingcloudflaredif one's healthy
What's Changed
- chore(openclaw): bump remote-signer chart to 0.3.1 by @bussyjd in #374
- Harden release smoke flows by @bussyjd in #376
- chore: trim duplication and dead code ahead of v0.9.0 by @bussyjd in #375
- ci(x402): fix Trivy security-scan tag mismatch by @bussyjd in #356
- chore: bump frontend image to v0.1.17-rc.4 by @bussyjd in #382
- chore: bump frontend image to v0.1.17-rc.5 by @bussyjd in #383
- Integrate PR #377 (OBOL Permit2) + PR #381 (Hermes runtime), harden flows, add flow-13 dual-stack OBOL by @bussyjd in #386
- First commit towards a demo sell command by @OisinKyne in #355
- Move agent lifecycle UX under obol agent by @bussyjd in #385
- test(flows): tighten live OBOL smoke by @bussyjd in #401
- Update buy/sell skill to be more than just inference by @OisinKyne in #403
- feat(model): enable Anthropic prompt caching by default by @bussyjd in #404
- fix(flows): route OBOL QA through explicit LLM endpoint by @bussyjd in #405
- improve demo sell command by @OisinKyne in #407
- Allow hermes messaging by @OisinKyne in #408
- fix(store): being served old docker images and not detecting a new one by @OisinKyne in #409
- fix: simplify Hermes recreation lifecycle by @bussyjd in #413
- rc8: reconcile stack QA fixes by @bussyjd in #417
- feat(storefront): link previews and metadata by @OisinKyne in #420
- fix(tunnel): warn before invalidating active quick tunnel URL by @bussyjd in #424
- feat(model): auto-discover local OpenAI-compatible inference servers by @bussyjd in #422
- Updates from rc9 test pass by @OisinKyne in #427
- feat(buyer): if a user requests html, give them html by @OisinKyne in #428
- Update with fixes by @OisinKyne in #431
- Fix base registrations, pretty cli sell status by @OisinKyne in #433
- fix(litellm): forgetting api keys on restart by @OisinKyne in #436
- Feedback from another obol buy by @OisinKyne in #438
- Hanan/fix bugs by @HananINouman in #437
New Contributors
- @HananINouman made their first contribution in #343
Full Changelog: v0.8.1...v0.9.0

