Skip to content

Release v0.16.0

Choose a tag to compare

@github-actions github-actions released this 14 Oct 13:16
· 4 commits to main since this release
v0.16.0
d1bd75f

Obol banner

v0.16.0 - Leaner, safer, easier to watch

v0.16 makes the stack lighter and easier to trust. Agents carry half the built-in skills, so every turn is cheaper and faster. Paid offers are locked down so a payment buys exactly one answer from the model you chose, and never an empty one. The stack now tells you how it's doing: obol doctor finds what's wrong and prints the fix, obol network status shows whether your nodes are synced, and Grafana comes built in, with dashboards for the stack, your Ethereum nodes, Charon and LLM performance.

Start with obol doctor after upgrading.

Warning

This software is early alpha, you could lose what you put in. Please use caution when it comes to non-testnet assets. Back up before upgrading: obol stack export --file backup.tar.gz. If you still run an OpenClaw agent, back up its wallet with v0.15 first (see Breaking changes).

Note

Testnets have reached Gloas. Sepolia forked on 2026-10-06 and Hoodi forks on 2026-10-26 at 17:42 UTC. The stable releases of Lighthouse (the default) and Grandine don't support Gloas yet, so on Sepolia and Hoodi install with --consensus-client teku, lodestar, nimbus or prysm. Every execution client in this release is Gloas-ready.

Install / Upgrade

# Fresh install
curl -fsSL https://stack.obol.org/v0.16.0 | bash
obol stack init && obol stack up

# Upgrade an existing stack
curl -fsSL https://stack.obol.org/v0.16.0 | bash
obol upgrade
obol network sync --all   # bring existing nodes onto the new clients, metrics and permissions

# Check everything
obol doctor

Release Highlights

Leaner agents

Hermes used to load 22 built-in skills on every turn. It now loads 11, which means a smaller system prompt, quicker responses and lower token cost for every agent on the stack:

  • agent-factory, buy-x402, discovery, ethereum-local-wallet, ethereum-networks, inspect, obol-stack, sell, sub-agent-business and swap;
  • ethereum-reference, which merges the ten former reference skills (addresses, gas, L2s, standards, wallets and so on) into one, with a guide per topic.

Everything else is opt-in from ObolNetwork/skills, pinned to a release and checked by content digest. Syncing skills only ever removes ones obol installed, so skills you added by hand stay put.

obol agent skills list --available
obol agent skills add distributed-validators
obol agent skills add dv-steward       # Hermes watches a DV node running on the stack

Sub-agents take them through obol agent new … --skills or obol agent update <name> --skills +<skill>.

OpenClaw is gone too: Hermes is the one agent runtime (see Breaking changes for wallet migration).

Paid offers you can trust

Selling access through the stack is safer for both sides:

  • The seller picks the model. obol sell http --upstream litellm requires --model, and the gateway enforces it: buyers can't switch models through the request body, query string or headers. Change it with obol sell update <name> --model <model>.
  • A payment reaches only what's for sale. LiteLLM offers reach chat, completions and embeddings, never the admin API. Agent offers reach only POST /v1/chat/completions, and every paid request gets its own Hermes session, so buyers never see each other's conversations.
  • No charge for an empty reply. A request is settled only if the reply delivered content, reasoning or tool calls. Unsettled replies carry X-Payment-Settled: false.
  • One completion per payment. n and best_of are removed from paid requests.

LiteLLM also moves to v1.105.0 (from v1.87), which fixes two upstream security advisories.

Find and fix problems: obol doctor

One command checks the things that usually go wrong, and prints the exact fix for each:

  • Host: Docker memory, disk space, the obol.stack name and the ingress ports.
  • Versions: obol and its pinned tools.
  • Cluster: the cluster and its kubeconfig, node pressure, unhealthy pods and Helm releases.
  • Services: models, LiteLLM drift, Ollama, the x402 CA bundle, the tunnel and wallet addresses.
obol doctor
obol doctor --fix       # safe repairs only: missing tools, stale kubeconfig, empty CA bundle

--offline skips network checks, --strict fails on warnings too, and -o json gives machine-readable output.

Know your nodes are synced

obol network list shows your installed nodes (network, clients, mode), straight from disk, so it works with the cluster down. obol network status adds a section per local Ethereum node: pod health, execution and consensus sync, peers, versions, and a one-line verdict (synced, syncing, waiting, degraded, el_offline, unreachable or not_deployed). Problems are spelled out plainly, such as a pod that ran out of memory; --verbose shows the full detail.

Local nodes also stay wired into the RPC gateway: obol stack up keeps every healthy node registered with eRPC, so http://obol.stack:8080/rpc/<network> keeps using your own node first.

obol network list
obol network status ethereum/hoodi
obol -o json network status ethereum/hoodi

The default Hermes agent can now read pods, logs, events and workloads across the cluster, so you can ask it "is my node synced?" or "why is this pod restarting?". Secrets and ConfigMaps stay out of reach.

Grafana, built in

Grafana is at http://obol.stack:8080/grafana, with no login and read-only access. Like the dashboard, it's only reachable on obol.stack, never through the tunnel. It comes with four dashboards:

  • Stack overview;
  • Ethereum node, for every supported client (/grafana/d/obol-eth-node?var-namespace=ethereum-<id>);
  • Charon;
  • LLM performance: time to first token, tokens per second, latency and errors per model, so you can compare models and providers on your own hardware. flows/llm-bench.sh sends the same load to each model for a fair comparison.

Prometheus now keeps 8 days of metrics on disk (it kept 2 days in memory), and collects eRPC, Traefik, cloudflared and Ethereum client metrics as well.

Nodes that stay current

obol network sync now renders each node from the templates built into the binary, not the copy made at install, so client updates and fixes reach existing nodes. Your values.yaml is kept, and a failed sync leaves the deployment as it was.

This release ships geth v1.17.8, Nethermind 2.1.0, Teku 26.10.0, Nimbus v26.10.0 and Lodestar v1.50.0.


Smaller wins

  • Quieter model commands - obol model setup, remove, sync and prefer print one line instead of the full agent install banner and raw kubectl output, so "Primary model is now …" stands out.
  • Add models without re-entering keys - obol model setup --provider openrouter --model openrouter/auto reuses the key already configured (or the provider's env var, such as OPENROUTER_API_KEY), and obol model setup <provider> works as a positional.
  • Grandine installs - its image is pinned; installing it used to fail.
  • Old nodes sync - Ethereum nodes installed before v0.10 get a default mode on sync.

Breaking changes / Migration notes

  • OpenClaw is removed: obol openclaw … and --runtime openclaw now fail with a migration hint.
    • Before upgrading, back up an OpenClaw wallet with v0.15: obol agent wallet backup --runtime openclaw <id> --file w.json.
    • That backup restores into Hermes on v0.16: obol agent wallet restore --runtime hermes --input w.json --force. Back up the Hermes wallet first.
    • obol stack up lists any leftover openclaw-* namespaces, with their keystore paths.
  • LiteLLM offers need a model: existing sell http --upstream litellm offers stay not-ready until you run obol sell update <name> -n <ns> --model <model>. obol sell status shows the exact command.
  • Agent offers: clients calling any Hermes path other than POST /v1/chat/completions now get a 404.
  • obol domain and obol tunnel login are removed, along with tunnel setup --management local. An existing locally managed tunnel keeps running, but you can't add hostnames to it. Move to a dashboard-managed tunnel with obol tunnel setup <connector-token>.
  • ethereumjs is removed as an execution client (nightly images only, not Gloas-ready). Syncing an existing ethereumjs node stops with a message; reinstall with --execution-client reth, geth, nethermind, besu or erigon.
  • Skills: the ten reference skills are now the single ethereum-reference skill. distributed-validators is opt-in: obol agent skills add distributed-validators.
  • Nethermind 1.39 → 2.1: the next obol network sync moves Nethermind nodes to a new major version.
  • Prometheus moves onto a volume, which recreates it once, so up to 2 days of earlier metrics are lost.
  • Per-request prices don't limit max_tokens; price your offers with that in mind.

Known issues

  • Gloas on testnets: see the note at the top. Lighthouse and Grandine move to Gloas-ready versions once their stable releases ship.
  • dv-pod 0.22 isn't published yet: the opt-in dv-steward skill, and the DV pod flow it watches, depend on the dv-pod 0.22 chart.

What's Changed

  • fix(network): sync renders the built-in network files by @OisinKyne in #885

Full Changelog: v0.15.0...v0.16.0