Monitor and protect yourself with AI agent budget controls, approval workflows, and anomaly detection.
Project description
AgentGuard Python SDK
Monitor and protect yourself with AI agent budget controls, approval workflows, and anomaly detection.
AgentGuard sits between your AI agent and its actions. Every action is validated before it runs, checking budgets, rate limits, and approval thresholds in real-time.
Install
pip install agentguard
Quick Start
from agentguard import AgentGuard
guard = AgentGuard(api_key="ag_your_api_key") # Get this from app.agent-guard.io
# Wrap any function for automatic protection
chat = guard.wrap(
my_chat_function,
action="openai_chat",
provider="openai",
model="gpt-4",
estimated_cost=0.05,
get_cost=lambda r: r.usage.total_cost,
)
# This automatically:
# ✓ Checks if agent is active
# ✓ Checks budget limits
# ✓ Checks approval thresholds
# ✓ Runs your function (only if allowed)
# ✓ Logs the result
result = chat("Hello!")
Decorator Style
@guard.protect(action="openai_chat", estimated_cost=0.05)
def chat(prompt):
return openai.chat(prompt=prompt)
result = chat("Hello!")
Core Methods
guard.check(action, estimated_cost) — Pre-action validation
result = guard.check("openai_chat", estimated_cost=0.05)
if result.allowed:
response = openai.chat(prompt="Hello")
else:
print(f"Blocked: {result.message}")
guard.log(action, ...) — Log an action
guard.log(
"api_call",
provider="openai",
model="gpt-4",
cost=0.05,
status="SUCCESS",
input_tokens=10,
output_tokens=25,
)
guard.track(action) — Track duration
done = guard.track("openai_chat", provider="openai")
result = openai.chat(prompt="Hello")
done(cost=0.05, response=result)
# Duration is calculated automatically
Budget Management
# Get current budget status
budget = guard.get_budget()
print(f"Spent: ${budget.budget_spent} / ${budget.budget_limit}")
# Check if a specific cost is within budget
check = guard.check_budget(0.50)
if not check.allowed:
print("Would exceed budget")
# Raise if over budget
guard.ensure_budget(0.50) # raises BudgetExceededError if over
Approval Workflows
# Request approval for a high-cost action
approval = guard.request_approval(
"send_bulk_email",
description="Send marketing email to 10,000 users",
estimated_cost=45.00,
)
# Wait for human decision (polls every 5 seconds)
try:
decided = guard.wait_for_approval(approval.id, timeout=3600)
print("Approved! Proceeding...")
except AgentGuardError:
print("Rejected or expired")
Error Handling
from agentguard import (
AgentGuardError, # Base error
AgentPausedError, # Agent is paused
AgentBlockedError, # Agent is blocked (kill switch)
BudgetExceededError, # Budget limit hit
ApprovalRequiredError, # Needs human approval
)
try:
result = chat("Hello!")
except AgentPausedError:
print("Agent paused — stopping gracefully")
except BudgetExceededError:
print("Budget exceeded — waiting for reset")
except ApprovalRequiredError as e:
print(f"Approval needed: {e.approval_id}")
Configuration
guard = AgentGuard(
api_key="ag_your_api_key", # Required
base_url="https://api.agent-guard.io", # Optional
timeout=10, # Optional: seconds (default: 10)
debug=False, # Optional: debug logging (default: False)
)
Dashboard
Manage your agents, view logs, approve actions, and monitor budgets at app.agent-guard.io
Links
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agentguard_py-0.1.1.tar.gz.
File metadata
- Download URL: agentguard_py-0.1.1.tar.gz
- Upload date:
- Size: 10.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3fd4cde20205277d3ef726219ce6480a19a73ae0ec8fc241d87b5e4050287d95
|
|
| MD5 |
ffe15a1546dc7a6f852c3743f99c551a
|
|
| BLAKE2b-256 |
b0a3343e91f0a0ba395bb4db39776f9353fb5e98935107d7a50073f1f43411b1
|
File details
Details for the file agentguard_py-0.1.1-py3-none-any.whl.
File metadata
- Download URL: agentguard_py-0.1.1-py3-none-any.whl
- Upload date:
- Size: 9.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9a9db3aa642b8046e146d6f44e57ddb26590641d8e1cff2d80649c492df83996
|
|
| MD5 |
c800d4ee73812b417de28372a8d4f9c4
|
|
| BLAKE2b-256 |
83ddae366b5caeb904fba3ae8abcce5d615f1690ae34d65600abde3cbdd1a0c7
|