- one spend-aware wrapper around an existing OpenAI client
- one per-request max-spend ingress for the first lane
- one explicit upgrade path into fuller NORNR control later
NORNR
Put NORNR in front of an existing provider client before the provider lane becomes a blind spot.
Provider wrapper / 6 minutes
Thin ingressHow to add a spend-aware wrapper to an OpenAI client.
Use NORNR as the policy boundary above an existing OpenAI-style client, then upgrade the consequential lane into governed runtime, MCP or browser control when the lane starts to matter outside engineering.
1. Install NORNR alongside the existing client
bash
pip install nornr-agentpay openai
2. Connect one NORNR wallet
python
import os
from openai import OpenAI
from agentpay import NornrWallet, create_spend_aware_openai_client
wallet = NornrWallet.connect(
api_key=os.environ["NORNR_API_KEY"],
base_url=os.getenv("NORNR_BASE_URL", "https://nornr.com"),
)
client = create_spend_aware_openai_client(
OpenAI(),
wallet,
max_spend_usd=2.5,
purpose="incident copilot lane",
model="gpt-5-mini",
)
response = client.responses.create(
model="gpt-5-mini",
input="Summarize the top three risky anomalies from today.",
max_output_tokens=300,
)
3. Treat the wrapper as the ingress, not the final architecture
The wrapper is great when the existing code path matters more than purity. It makes one provider lane spend-aware without forcing a rewrite. But it should still point to a better NORNR surface once the lane needs review ownership, counterparty posture and defended export.
4. Replay a named default pack before you widen the lane
Start with research-safe when the wrapped provider lane is still new. The wrapper becomes much more useful when the first lane already maps to one owner, one scope and one expected review posture.
5. Know when to upgrade out of the wrapper
- use governed runtime when the provider call is one named consequential action
- use MCP control server when the same issue appears in Claude Desktop, Cursor or another local tool surface
- use browser checkout governance when the risky moment is the last click, not the provider call itself
6. What good looks like
- You wrapped one existing provider lane quickly.
- The lane already has one owner and one named purpose.
- The lane replays a default pack before it widens.
- The lane upgrades into a fuller NORNR surface once review and proof must survive.