Skip to main content

Real-time governance and human-in-the-loop approval for AI agents.

Project description

Veto SDK (veto2)

🛡️ Real-time governance and human-in-the-loop approval for AI agents.

Veto allows you to secure your AI agent's tool calls by intercepting them and verifying them against a central policy engine. It supports blocking, monitoring, data masking, and human-in-the-loop approvals.

Installation

pip install veto2

Quick Start

1. Initialize the SDK

Initialize Veto at the start of your application. You can provide credentials directly or use environment variables.

import veto2 as sdk

sdk.init(
    api_key="your_api_key_here",
    agent_name="SupportAgent-01"
)

Environment Variables:

  • GOVERNANCE_API_KEY: Your Veto API Key.
  • GOVERNANCE_AGENT_NAME: Default agent name for this instance.
  • GOVERNANCE_BASE_URL: Custom backend URL (optional).

2. Protect Your Tools

Use the @sdk.guard() decorator on any function (tool) you want to monitor or control.

@sdk.guard()
def process_payment(amount: float, currency: str):
    # This code only runs if Veto policy allows it
    print(f"Processing {amount} {currency}")
    return True

How It Works

When a @sdk.guard() protected function is called:

  1. Intercept: The SDK captures the function name and all arguments.
  2. Verify: It sends this data to the Veto backend for policy evaluation.
  3. Action: Based on the policy set in the Veto Dashboard:
    • APPROVED: The original function executes immediately.
    • BLOCKED: Raises a PermissionDeniedError with an optional feedback message.
    • PAUSE (Human-in-the-loop): The SDK pauses execution and polls the backend until a manager approves or rejects the request via the Dashboard.

Core API

sdk.init(api_key, agent_name, base_url=None)

Initializes the global governance client.

  • api_key: (Required) Found in your Veto Dashboard settings.
  • agent_name: (Optional) Descriptors for your agent. Defaults to "DefaultAgent".
  • base_url: (Optional) The API endpoint of your Veto backend.

@sdk.guard(name=None)

The primary decorator for tool protection.

  • name: (Optional) Override the tool name sent to the dashboard. Defaults to the function's name.

sdk.ping()

Utility function to verify the connection to the Veto backend and validate the API key.

Policy Modes (Configured via Dashboard)

Veto is designed to be "Code-First, Policy-Second". You wrap your functions once, and manage behavior from the UI:

Mode Behavior
BLOCK Denies the request immediately.
SHADOW Allows the request but logs it as a warning for monitoring.
HUMAN_APPROVAL Pauses execution until a person clicks "Approve" in the Dashboard.
MASKING Redacts sensitive parameters from logs while allowing the original call.
FEEDBACK Blocks the call and returns a specific hint/instruction to the LLM.
RULES Dynamically chooses a mode based on argument values (e.g., amount > 1000).

Error Handling

Veto uses specific exceptions to help you manage governance violations:

from veto2 import PermissionDeniedError

try:
    sensitive_operation()
except PermissionDeniedError as e:
    # Log the violation or inform the user/LLM
    print(f"Action blocked by governance: {e}")

Plan-Based Timeouts (Human Approval)

When an action is paused for human review, the SDK will poll for a decision:

  • Basic Plan: Polls for up to 3 hours.
  • Pro Plan: Polls for up to 7 days.

Built for secure AI agent deployment. Get your API key

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

veto2-0.1.3.tar.gz (6.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

veto2-0.1.3-py3-none-any.whl (6.7 kB view details)

Uploaded Python 3

File details

Details for the file veto2-0.1.3.tar.gz.

File metadata

  • Download URL: veto2-0.1.3.tar.gz
  • Upload date:
  • Size: 6.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for veto2-0.1.3.tar.gz
Algorithm Hash digest
SHA256 29c33a9c11d239ed47869ce7dd66a5eb7a759ce4c4101708596aa5321ddee403
MD5 92aaad63ebd0d8b5ec3ba4120cc6286d
BLAKE2b-256 62ef0d64c86eda52f7a9b39922d52797199533e434b11ad91215be384e939293

See more details on using hashes here.

File details

Details for the file veto2-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: veto2-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 6.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for veto2-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c78babe1e6db275a930428b6dd7c85a3f4afe8679112b6299073adab5f20097a
MD5 caa3d0af79fa0bb27fcd61b06904d07a
BLAKE2b-256 473de09b46e3653323dd0643ad59dd5befd78a61632e3720536a6bed45f31aea

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page