From 8755eb4e3be49216204fc644cbfa8d3bfd5576c3 Mon Sep 17 00:00:00 2001 From: MerchantGuardOps <194741315+MerchantGuardOps@users.noreply.github.com> Date: Wed, 27 May 2026 21:04:16 -0500 Subject: [PATCH] Add AgentGuard Spend to the app directory AgentGuard Spend is a zero-data-plane SDK that wraps OpenAI-compatible clients with local-runtime spend caps, capability-gated model routing, and Ed25519-signed audit receipts. Customers point their existing OpenAI client at OpenRouter's base URL and wrap with `withSpendGuard`. Prompts, API keys, and signing keys never leave the customer process. OpenRouter is our recommended integration path. Our docs at https://agentguard.run/docs/openrouter-quickstart lead with the OpenRouter pattern because the unified-API + one-key model lets a customer's CFO assign which models which teams can use for which tasks. Evidence of traction: - Published on npm (@agentguard-run/spend) and PyPI (agentguard-spend), latest v0.2.2 - 1,200+ npm downloads in launch week (May 22-27, 2026) - 6 U.S. patent provisionals filed protecting the spend-cap + capability-gate + cryptographic-attestation architecture - Public receipt verifier at https://agentguard.run/verify - Open source at github.com/MerchantGuardOps/agentguard-site --- apps/agentguard-spend/app.yaml | 9 +++++++++ apps/agentguard-spend/logo.png | Bin 0 -> 20565 bytes 2 files changed, 9 insertions(+) create mode 100644 apps/agentguard-spend/app.yaml create mode 100644 apps/agentguard-spend/logo.png diff --git a/apps/agentguard-spend/app.yaml b/apps/agentguard-spend/app.yaml new file mode 100644 index 0000000..3f811a9 --- /dev/null +++ b/apps/agentguard-spend/app.yaml @@ -0,0 +1,9 @@ +name: "AgentGuard Spend" +description: "Local-runtime spend caps + capability-gated model routing for AI agents. Bring your OpenRouter key, set per-task budgets, and get Ed25519-signed audit receipts on every call." +url: "https://agentguard.run" +docs: "https://agentguard.run/docs/openrouter-quickstart" +tags: + - productivity + - coding +open_source: "https://github.com/MerchantGuardOps/agentguard-site" +date_added: "2026-05-27" diff --git a/apps/agentguard-spend/logo.png b/apps/agentguard-spend/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..286c92d1ea7c953bbc6e8e13ec0f32faef6b0832 GIT binary patch literal 20565 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�Z@=zrF>X(=141#W3eBv#&#p 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 JQtuX;`8OZ!eJKC{ literal 0 HcmV?d00001