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.5.tar.gz (6.5 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.5-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: veto2-0.1.5.tar.gz
  • Upload date:
  • Size: 6.5 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.5.tar.gz
Algorithm Hash digest
SHA256 a94dc46a444e750e60c03ec7816a09f47d538340e48af5399ab4b381d943588b
MD5 d55266910c1a35a2fe072336654673a3
BLAKE2b-256 4acc8a18b49cb4a1a2d9bebea22ea17b22924c46fc2719bcec4d5b53ae10f17d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: veto2-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 7.2 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.5-py3-none-any.whl
Algorithm Hash digest
SHA256 40b9c7dcc5f008cf5307585a68dbcd4bbcf207be0cf1f4dc0cc672a953e178df
MD5 7a89d232f0ceedb6747b851ad0a6257a
BLAKE2b-256 480686411eeb9779b40181d8079601177d5e8e3f3bc174b3e0c54d5926d33a05

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