Command Palette

Search for a command to run...

UnylyUnyly
Browse all

bmdhodl/agent47

FreeNot checked

Runtime guardrails and incident read access for coding agents. Query AgentGuard traces, alerts, usage, costs, and budget health.

GitHubEmbed

About

Runtime guardrails and incident read access for coding agents. Query AgentGuard traces, alerts, usage, costs, and budget health.

README

Stop runaway agents before they burn money.

Zero-dependency Python kill switch for AI agents. Hard budget caps. Loop detection. Local traces. MIT.

PyPI Downloads Python CI License: MIT

pip install agentguard47

Getting started

1. Install and verify

pip install agentguard47
agentguard doctor   # package ok?
agentguard demo     # offline proof (no API keys)

2. Guard an OpenAI client

from agentguard import BudgetGuard, LoopGuard, Tracer, patch_openai

budget = BudgetGuard(max_cost_usd=5.00, warn_at_pct=0.8)
loop = LoopGuard(max_repeats=3)
tracer = Tracer(service="my-agent", guards=[loop])

patch_openai(tracer, budget_guard=budget)
# every OpenAI call is now traced + budget-enforced

When spend crosses the hard limit, BudgetExceeded is raised and the run stops.

3. Cap a single task

Session budget can still have headroom. One goal can still be killed:

with budget.goal("refund", max_cost_usd=0.50, warn_at_pct=0.8) as g:
    g.attempt()
    budget.consume(cost_usd=0.12)
    # BudgetExceeded names the goal when it crosses

4. Read the local proof

agentguard report .agentguard/traces.jsonl
agentguard incident .agentguard/traces.jsonl

Or scaffold a starter file:

agentguard quickstart --framework raw --write
python agentguard_raw_quickstart.py

What it stops

Problem Guard Exception
Spend blowup BudgetGuard BudgetExceeded
Same tool forever LoopGuard LoopDetected
Fuzzy / A-B-A-B loops FuzzyLoopGuard LoopDetected
Retry storms RetryGuard RetryLimitExceeded
Hung runs TimeoutGuard TimeoutExceeded
Spam calls RateLimitGuard

Not a dashboard. Not a model router. An in-process exception that kills the bad run mid-flight.

Features

  • Hard stops — exceptions inside your process, not after-the-fact alerts
  • Task-level budgetsBudgetGuard.goal(...) for sub-task caps + warn hooks
  • Local traces — JSONL by default; no network unless you opt in
  • Zero deps — stdlib only; Python 3.9+
  • Provider patchespatch_openai / patch_anthropic
  • Framework hooks — LangChain, LangGraph, CrewAI (optional extras)

Local by default

  • No API key required for local proof
  • No network unless you configure HttpSink
  • MIT licensed

The SDK is the free local proof path. Start local. Add hosted ingest later only if you want retained history, alerts, team visibility, spend trends, hosted decision history, or dashboard-managed remote kill signals. Local guards remain authoritative. HttpSink mirrors trace and decision events; it does not execute remote kill signals by itself.

Integrations

OpenAI · Anthropic · LangChain · LangGraph · CrewAI · raw agent loops

pip install "agentguard47[langchain]"   # optional extras as needed

Docs

Links


MIT · Built for people who ship agents and hate surprise bills.

from github.com/bmdhodl/agent47

Installing bmdhodl/agent47

This server has no published package — it is built from source. Open the repository and follow its README.

▸ github.com/bmdhodl/agent47

FAQ

Is bmdhodl/agent47 MCP free?

Yes, bmdhodl/agent47 MCP is free — one-click install via Unyly at no cost.

Does bmdhodl/agent47 need an API key?

No, bmdhodl/agent47 runs without API keys or environment variables.

Is bmdhodl/agent47 hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install bmdhodl/agent47 in Claude Desktop, Claude Code or Cursor?

Open bmdhodl/agent47 on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare bmdhodl/agent47 with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All development MCPs