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.3.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.3.tar.gz.
File metadata
- Download URL: vaspera_guard-0.2.3.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 |
7b46a7e42e2e650bf4720c69dfcbd4020d04443dac15c26ef3adb4b84e86a7f9
|
|
| MD5 |
81b48a3b6932a2a8b8814ceacb09508f
|
|
| BLAKE2b-256 |
f50d1b995493241f5aad718939206d8fa4b0980a680ad68c02bf0f93dd9930d4
|
File details
Details for the file vaspera_guard-0.2.3-py3-none-any.whl.
File metadata
- Download URL: vaspera_guard-0.2.3-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 |
7a3eb646eac2f78045ffec12bf1c2de41d556f51459de9773c49c951d41493c1
|
|
| MD5 |
40d2f60a13593c7196a0e7aceb8e59b1
|
|
| BLAKE2b-256 |
877be622bb57477f4bf8ca93dbc7ef00acbcb9cae43a9321688e33ff6876d2b2
|