Skip to main content

Official Python SDK for Vorim AI — AI Agent Identity, Permissions & Audit

Project description

vorim

Official Python SDK for Vorim AI — the identity, permissions, and audit layer for AI agents.

Vorim AI provides cryptographic agent identities (Ed25519), fine-grained permissions (7 scopes), immutable audit trails, and trust scoring (0-100) for production AI agent deployments. EU AI Act compliant out of the box.

PyPI Python License

vorim.ai — Create a free account and get your API key in 30 seconds. Documentation — Full API reference, framework integrations, and examples. Quick Start — Set up in under 5 minutes.

Install

pip install vorim

With framework integrations:

pip install vorim[langchain]    # LangChain / LangGraph
pip install vorim[crewai]       # CrewAI
pip install vorim[openai]       # OpenAI Agents SDK
pip install vorim[all]          # All integrations

Requires Python 3.10+.

Quick Start

from vorim import Vorim

vorim = Vorim(api_key="agid_sk_live_...")

# Register an agent (returns Ed25519 keypair, private key shown once)
result = vorim.register(
    name="invoice-processor",
    capabilities=["read_documents", "extract_data"],
    scopes=["agent:read", "agent:execute"],
)
print(result.agent.agent_id)    # agid_acme_a1b2c3d4
print(result.agent.trust_score) # 50

# Check permissions (<5ms via Redis)
check = vorim.check(result.agent.agent_id, "agent:execute")

if check.allowed:
    # Emit audit event
    vorim.emit(
        agent_id=result.agent.agent_id,
        event_type="tool_call",
        action="process_invoice",
        resource="INV-2026-0042",
        result="success",
        latency_ms=142,
    )

# Verify any agent's trust (public, no auth required)
trust = vorim.verify(result.agent.agent_id)
print(f"Trust score: {trust.trust_score}/100")

Async Client

from vorim import AsyncVorim

async with AsyncVorim(api_key="agid_sk_live_...") as vorim:
    result = await vorim.register(
        name="my-agent",
        capabilities=["search"],
        scopes=["agent:read"],
    )

    trust = await vorim.verify(result.agent.agent_id)
    print(f"Trust score: {trust.trust_score}/100")

API Reference

Vorim(api_key, base_url?, timeout?)

Method Description
register(name, capabilities, scopes) Register an agent with Ed25519 keypair
check(agent_id, scope) Check if agent has permission (sub-5ms)
emit(agent_id, event_type, action, ...) Emit an audit event
emit_batch(events) Emit up to 1,000 audit events
verify(agent_id) Verify agent identity and trust score (public)
get_agent(agent_id) Get agent details
list_agents(status?, page?, per_page?) List agents with filtering
revoke(agent_id) Permanently revoke an agent
grant(agent_id, scope, valid_until?, rate_limit?) Grant a permission scope
sign(payload, private_key_pem) Sign payload with Ed25519 key

AsyncVorim has the same interface with await on all methods.

Permission Scopes

Scope Description
agent:read Read data on behalf of owner
agent:write Write or modify data
agent:execute Trigger actions or tool calls
agent:transact Financial or contractual actions
agent:communicate Send messages or emails
agent:delegate Sub-delegate to other agents
agent:elevate Request permission elevation

Framework Integrations

LangChain / LangGraph

from vorim import Vorim
from vorim.integrations.langchain import vorim_tool, VorimCallbackHandler

vorim = Vorim(api_key="agid_sk_live_...")

@vorim_tool(vorim, agent_id="agid_acme_...", permission="agent:execute")
def search(query: str) -> str:
    """Search documents."""
    return f"Results for {query}"

# search() is now a standard LangChain tool with built-in permission checks + audit

CrewAI

from vorim import Vorim
from vorim.integrations.crewai import register_crew

vorim = Vorim(api_key="agid_sk_live_...")

crew = register_crew(vorim, {
    "crew_name": "content-pipeline",
    "members": [
        {
            "role": "researcher",
            "name": "crew-researcher",
            "capabilities": ["web_search"],
            "scopes": ["agent:read", "agent:execute"],
        },
    ],
})

OpenAI Function Calling

from openai import OpenAI
from vorim import Vorim
from vorim.integrations.openai_agents import VorimToolRegistry

vorim = Vorim(api_key="agid_sk_live_...")
client = OpenAI()

registry = VorimToolRegistry(vorim=vorim, agent_id="agid_acme_...")
registry.add(
    name="search",
    description="Search documents",
    parameters={"type": "object", "properties": {"query": {"type": "string"}}},
    execute=lambda args: f"Results for {args['query']}",
)

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Search for AI papers"}],
    tools=registry.to_openai_tools(),
)

# Permission checked + audited automatically
tool_messages = registry.execute_tool_calls(
    response.choices[0].message.tool_calls or []
)

Resources

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

vorim-3.1.0.tar.gz (25.8 kB view details)

Uploaded Source

Built Distribution

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

vorim-3.1.0-py3-none-any.whl (25.4 kB view details)

Uploaded Python 3

File details

Details for the file vorim-3.1.0.tar.gz.

File metadata

  • Download URL: vorim-3.1.0.tar.gz
  • Upload date:
  • Size: 25.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for vorim-3.1.0.tar.gz
Algorithm Hash digest
SHA256 3fff82987194d0ca92d324273b561cce011e763e184e4690b74df790dd2dcba1
MD5 d6b0cf8970fd8f795e1972747c04625f
BLAKE2b-256 a2e53c3505d0a3278ed1a588a115b0576e06ec4fec6cdbfe90152a29074c9ca0

See more details on using hashes here.

File details

Details for the file vorim-3.1.0-py3-none-any.whl.

File metadata

  • Download URL: vorim-3.1.0-py3-none-any.whl
  • Upload date:
  • Size: 25.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for vorim-3.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f426fe50eafe4e890f057265a9a76a69f2ec95cc09a59fb8a4d03bb742c69765
MD5 50f58ac1e97c1d1719ca1039ee4ebb5c
BLAKE2b-256 d62a860ced34e728cfe45a2cdb2e14f334d0646ba48c4c89aee0e2595bfd32c6

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