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.
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3fff82987194d0ca92d324273b561cce011e763e184e4690b74df790dd2dcba1
|
|
| MD5 |
d6b0cf8970fd8f795e1972747c04625f
|
|
| BLAKE2b-256 |
a2e53c3505d0a3278ed1a588a115b0576e06ec4fec6cdbfe90152a29074c9ca0
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f426fe50eafe4e890f057265a9a76a69f2ec95cc09a59fb8a4d03bb742c69765
|
|
| MD5 |
50f58ac1e97c1d1719ca1039ee4ebb5c
|
|
| BLAKE2b-256 |
d62a860ced34e728cfe45a2cdb2e14f334d0646ba48c4c89aee0e2595bfd32c6
|