Safety & governance layer for AI agents
Project description
VasperaGuard Python SDK
The safety & governance layer for AI agents.
Installation
pip install vaspera-guard
Quick Start
from vaspera_guard import Guard
# Initialize with API key
guard = Guard(api_key="vg_...")
# Or set VASPERA_GUARD_API_KEY environment variable
# Check if a command is safe
result = guard.check("rm -rf /tmp/cache")
if result.allowed:
# Safe to execute
subprocess.run(command, shell=True)
elif result.requires_approval:
# Request human approval
approval = guard.request_approval(
result.check_id,
command,
channel="slack",
slack_channel="#devops"
)
print(f"Approval requested: {approval.approve_url}")
else:
# Command blocked
print(f"Blocked: {result.reason}")
print(f"Suggestions: {result.suggestions}")
Usage with AI Agents
from vaspera_guard import Guard, AgentContext
guard = Guard(
api_key="vg_...",
agent_id="my-coding-agent",
environment="production"
)
async def agent_execute(command: str):
"""Execute a command with VasperaGuard protection."""
# Check safety before execution
result = guard.check(
command,
context=AgentContext(
environment="production",
project="backend-api",
working_directory="/app"
)
)
if result.blocked:
return f"Command blocked: {result.reason}"
if result.requires_approval:
approval = guard.request_approval(
result.check_id,
command,
channel="slack",
slack_channel="#agent-approvals",
reason="Agent needs to run this for deployment"
)
# Wait for approval (max 5 minutes)
final = guard.wait_for_approval(approval.approval_id, timeout=300)
if not final.is_approved:
return "Approval denied"
# Execute the command
return subprocess.run(command, shell=True, capture_output=True)
Check and Execute Pattern
from vaspera_guard import Guard
guard = Guard()
def run_cmd(cmd):
return subprocess.run(cmd, shell=True, capture_output=True)
# Automatically check and execute
result = guard.check_and_execute(
"ls -la",
executor=run_cmd,
on_blocked=lambda r: print(f"Blocked: {r.reason}"),
on_approval_required=lambda r: print(f"Needs approval: {r.approval_url}")
)
Custom Policies
from vaspera_guard import Guard, PolicyRule
guard = Guard()
# Create a policy for production
policy = guard.create_policy(
name="production-safety",
description="Strict safety rules for production",
rules=[
PolicyRule(pattern="DROP TABLE", action="block"),
PolicyRule(pattern="rm -rf", action="require_approval"),
PolicyRule(pattern="chmod 777", action="warn"),
],
environments=["production"]
)
# Use the policy
result = guard.check("DROP TABLE users", policy_id=policy.policy_id)
# result.blocked == True
Audit Trail
# Get audit log
entries = guard.get_audit_log(
agent_id="my-agent",
risk_level="high",
limit=50
)
for entry in entries:
print(f"{entry.timestamp}: {entry.command} -> {entry.check_result}")
Part of the Vaspera Platform
VasperaGuard works best with the full Vaspera ecosystem:
- VasperaMemory - Persistent memory for AI agents
- VasperaMesh - Multi-agent orchestration
- VasperaShield - Security scanning
- VasperaProject - Spec-to-code tracking
API Reference
Guard
check(command, agent_id, context, policy_id)- Check command safetycheck_and_execute(command, executor, ...)- Check and execute if saferequest_approval(check_id, command, ...)- Request human approvalget_approval_status(approval_id)- Check approval statuswait_for_approval(approval_id, timeout)- Wait for approval decisioncreate_policy(name, rules, ...)- Create custom policylist_policies()- List all policiesget_audit_log(...)- Get audit trailget_stats()- Get usage statistics
Models
CheckResult- Result from safety checkApprovalResult- Result from approval requestAgentContext- Context about the agentPolicy- Safety policyPolicyRule- Rule in a policyAuditEntry- Audit log entry
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
vaspera_guard-0.2.1.tar.gz
(9.6 kB
view details)
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 vaspera_guard-0.2.1.tar.gz.
File metadata
- Download URL: vaspera_guard-0.2.1.tar.gz
- Upload date:
- Size: 9.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
01b65c5628e5399b007cf3420ee1fbb23ed6d8ce4b2a9de825b486f9e4c7f6b4
|
|
| MD5 |
345697dd4a020013fe413904ff1ca90d
|
|
| BLAKE2b-256 |
0c32a0a0cc23ed4c48864dae0c54abe2031e7f82147fbfe3c29e855149799d31
|
File details
Details for the file vaspera_guard-0.2.1-py3-none-any.whl.
File metadata
- Download URL: vaspera_guard-0.2.1-py3-none-any.whl
- Upload date:
- Size: 9.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a3ca697fb951ce6d5f92831dd02c9a9b71d04fb18e4bcf3aa9482e6846e32344
|
|
| MD5 |
a49242215f52789863b89528a9fa1d67
|
|
| BLAKE2b-256 |
4e47d528f3aac45e4eea4121da6eb519867a05c1cabe27eae7a737c156e4bf7a
|