Skip to main content

Oris Python SDK

Compliant payment infrastructure + Oris Trust Protocol verifier client for autonomous AI agents. Oris provides wallets, identity verification (KYA), spending controls, compliance monitoring, and the L8 verifier client (oris.protocol) for any agentic payment network that consumes Oris compliance bundles.

Installation

pip install oris-sdk

Oris Trust Protocol (oris.protocol, v0.2.0)

For any network that consumes Oris compliance bundles (Base, x402, Coinbase Agent, Stripe MPP, Visa Tap, AWS AgentCore — Base shipped in v1, others v2):

from oris.protocol import OrisProtocol

p = OrisProtocol(network="base-sepolia")

# 1. Fetch the live verifier pubkey
pubkey = p.verifier.get_pubkey()

# 2. Build a 112-byte tx_intent preimage
tx_intent_hex = p.adapter.encode_tx_intent_hex(
    counterparty="0x" + "11" * 20,
    amount_usd_e6=1_000_000,
    stablecoin="USDC",
    category="0x" + "00" * 32,
    nonce="0x" + "ab" * 32,
    expires_at=9_999_999_999,
)

# 3. Verify a compliance bundle against the live verifier
verdict = p.verifier.verify(
    bundle_bytes_hex=bundle_hex,
    tx_intent_hex=tx_intent_hex,
    signer_pubkey_hex=agent_pubkey_hex,
)

# 4. Independently verify the verdict's Ed25519 signature offline
ok = p.verifier.verify_response_signature(verdict, pubkey.pubkey_hex)

The legacy OrisClient / Agent surface is unchanged in 0.2.0; the oris.protocol namespace is purely additive.

For local source installation:

git clone https://github.com/fluxaventures/useoris.git
cd useoris
pip install -e .

Quick Start

Send your first autonomous, compliant payment in under 10 lines of code.

from oris import OrisClient

# 1. Initialize client
client = OrisClient(api_key="YOUR_API_KEY", private_key="YOUR_PRIVATE_KEY")

# 2. Register and verify agent
agent = client.agents.register(name="Researcher-01", description="Data procurement agent")
client.agents.verify(agent.id)

# 3. Create an ERC-4337 Smart Account
wallet = client.wallets.create(agent_id=agent.id, chain="polygon")

# 4. Set a spending policy
client.policies.create(
    agent_id=agent.id,
    daily_limit_usd=100.0,
    allowed_contracts=["0xDatasetProviderAddress"]
)

# 5. Execute autonomous payment
tx = client.payments.send(
    agent_id=agent.id,
    to_address="0xDatasetProviderAddress",
    amount=1.0,
    chain="polygon",
    token="POL"
)

print(f"Transaction settled. Hash: {tx.transaction_hash}")

Authentication

Oris enforces Ed25519 request signing with strict replay protection (30s window). The SDK handles all cryptographic signing and rate-limit retries automatically.

Provide your credentials directly or via environment variables (ORIS_API_KEY, ORIS_PRIVATE_KEY).

Agent Lifecycle

The Oris infrastructure requires agents to follow a strict compliance lifecycle before accessing on-chain liquidity:

  1. Registration: Agent identity is recorded.
  2. KYA (Know Your Agent) Verification: Agent undergoes AML and risk screening.
  3. Wallet Creation: Counterfactual deployment of an ERC-4337 smart account.
  4. Policy Attachment: Hardcoded on-chain and off-chain spending limits.
  5. Execution: Gas-abstracted, sponsored transaction routing.

Core Methods Reference

Agents

client.agents.register(name: str, description: str) -> Agent
client.agents.verify(agent_id: str) -> bool
client.agents.get_profile(agent_id: str) -> AgentProfile

Wallets

client.wallets.create(agent_id: str, chain: str) -> Wallet
client.wallets.get_balance(wallet_id: str) -> Balance
client.wallets.get_wallets(agent_id: str) -> list[Wallet]

Policies

client.policies.create(agent_id: str, **kwargs) -> Policy
client.policies.simulate_payment(agent_id: str, amount: float) -> SimulationResult

Payments

client.payments.send(agent_id: str, to_address: str, amount: float, chain: str, token: str) -> PaymentResult
client.payments.get_payment(payment_id: str) -> PaymentStatus

Async Support

Every synchronous method has an asynchronous counterpart for high-concurrency environments.

import asyncio
from oris import AsyncOrisClient

async def main():
    client = AsyncOrisClient(api_key="...", private_key="...")
    tx = await client.payments.asend(...)
    print(tx.transaction_hash)

asyncio.run(main())

Error Handling

The SDK provides a structured exception hierarchy.

from oris.exceptions import OrisAuthError, OrisRateLimitError, OrisComplianceError

try:
    client.payments.send(...)
except OrisComplianceError as e:
    print(f"Transaction blocked by Veris compliance engine: {e}")
except OrisRateLimitError as e:
    print(f"Rate limit exceeded. Retry after {e.retry_after}s")

Supported Chains

Oris currently manages RPC routing and bundler infrastructure for the following networks:

Chain Identifier Support Type
Polygon polygon Native / ERC-4337
Base base Native / ERC-4337
Ethereum ethereum Native / ERC-4337
Arbitrum arbitrum Native / ERC-4337
Optimism optimism Native / ERC-4337
Avalanche avalanche Native / ERC-4337
BSC bsc Native / ERC-4337
Celo celo Native / ERC-4337

Metadata

Release files for oris-sdk 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for oris-sdk 0.3.0
File Size Uploaded
oris_sdk-0.3.0.tar.gz 45.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for oris-sdk 0.3.0
File Interpreter ABI Platform
oris_sdk-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 87.6 kB

Release files / oris_sdk-0.3.0.tar.gz

Download URL oris_sdk-0.3.0.tar.gz
Size 45.4 kB
Tags Source
SHA-256 checksum
How to use checksums
4ee6cd1239aebff948d79ea8d2ce8d1a94048829244d305e69090663f19c5b9d
BLAKE2b-256 checksum
How to use checksums
506f7fc449336ceb9ba0e7e548305e7d94b8d6272743fc87ad03a95aaa52eee5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Release files / oris_sdk-0.3.0-py3-none-any.whl

Download URL oris_sdk-0.3.0-py3-none-any.whl
Size 42.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
04978a3e1b7331d1d79c766d56c20853123a7685210aeb1631845286e6e3382e
BLAKE2b-256 checksum
How to use checksums
5febb76ec2f93757aa3939ee9b9abce4050eb5c4f4f46672b59c6917ae11dbf6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.0

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page