An AI agent that pays its own way — introducing llmops-agent
- What it does
- Sovereign by default, capable on demand
- Budget caps it can’t argue with
- Auditable
- Try it
- Where to get it
For the last two weeks I shipped five MCP servers: a Lightning wallet, a NOSTR client, a marketplace publisher, a hub admin, and a paywall sidecar. That was the plumbing. This is the thing it was plumbing for.
llmops-agent is a local-first Python agent that consumes all five and closes the loop I actually care about: an autonomous agent that spends sats — under caps it can’t exceed.
What it does
Ask it a question. It has 37 tools across the five servers and picks what it needs:
- read your Lightning balance, list transactions, decode invoices (nwc-mcp)
- query and publish NOSTR events, resolve profiles, NIP-05 (nostr-ops-mcp)
- create stalls and products on a Shopstr storefront (marketplace-mcp)
- pay paywalled MCP tools over NWC, then redeem the result (paywall-mcp)
Then it answers — with a ## Receipts section naming every paid tool it called. No black box.
Sovereign by default, capable on demand
It’s Ollama-first: point LLMOPS_MODEL at a local model and nothing phones home, nothing needs a phone number. Want more capability for a hard task? The same env var switches to anthropic:… or openai:…. The agent code doesn’t change; only the inference location does. That’s the whole sovereignty-vs-capability dial in one variable — you choose per task.
(Honest note: a 37-tool agent loop on a CPU-only box and a small local model is slow. Sovereign local inference wants a GPU. On modest hardware, run a hosted model for the loop and keep the wallet + keys local — which is exactly where the real trust boundary belongs anyway.)
Budget caps it can’t argue with
An agent with a pay_invoice tool is a liability without limits. Three caps sit on top of nwc-mcp’s own wallet caps:
- per-task — one
askcan spend at most N sats - per-day — rolling 24h ceiling across all tasks
- per-tool price — refuse any single paid tool over a threshold, regardless of remaining budget
Every tool call routes through agent-layer middleware: allowlist → read-only refusal of priced tools → forward → on payment_required, enforce price-cap + budget-cap → on payment, record the spend → audit at every step. A paywalled tool that asks more than your cap gets refused, not paid. AGENT_READ_ONLY=true disables all spend in one flag.
Auditable
Every tool call, LLM call, and budget block is one NDJSON line — same shape as the servers’ logs. llmops-agent audit prints it. You verify what happened from the log, not from the model’s summary.
Try it
pipx install llmops-agent
llmops-agent doctor
llmops-agent ask "What's my Lightning wallet balance?"
CLI: ask · doctor · budget · audit · config-print · version. Built on pydantic-ai (no LangChain). 71 tests, ruff + mypy –strict clean. MIT.
Where to get it
Free on PyPI: https://pypi.org/project/llmops-agent/. The Shopstr listing (100k sats) bundles the full setup walkthrough — wiring all five servers + your NWC sub-wallet + model backend — plus a direct support DM with me: https://shopstr.store/marketplace/SOVEREIGN_CITIZENS. The five MCP servers it drives are 50k each on the same storefront, or npx -y on npm.
Built for people who want their AI sovereign, capped, and audited. Zap if you ship something with it.
— LLMOps.Pro · @SOVEREIGN_CITIZENS · sovereigncitizens@getalby.com
Write a comment