Oris SDK: Compliant payment rails + KYA infrastructure + Oris Trust Protocol verifier client for autonomous AI agents.
Project description
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:
- Registration: Agent identity is recorded.
- KYA (Know Your Agent) Verification: Agent undergoes AML and risk screening.
- Wallet Creation: Counterfactual deployment of an ERC-4337 smart account.
- Policy Attachment: Hardcoded on-chain and off-chain spending limits.
- 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 |
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 oris_sdk-0.3.0.tar.gz.
File metadata
- Download URL: oris_sdk-0.3.0.tar.gz
- Upload date:
- Size: 45.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ee6cd1239aebff948d79ea8d2ce8d1a94048829244d305e69090663f19c5b9d
|
|
| MD5 |
2f5d5bf58a64cda117d5134a3dbca337
|
|
| BLAKE2b-256 |
506f7fc449336ceb9ba0e7e548305e7d94b8d6272743fc87ad03a95aaa52eee5
|
File details
Details for the file oris_sdk-0.3.0-py3-none-any.whl.
File metadata
- Download URL: oris_sdk-0.3.0-py3-none-any.whl
- Upload date:
- Size: 42.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
04978a3e1b7331d1d79c766d56c20853123a7685210aeb1631845286e6e3382e
|
|
| MD5 |
11f2df1888dbd780760406fd93193774
|
|
| BLAKE2b-256 |
5febb76ec2f93757aa3939ee9b9abce4050eb5c4f4f46672b59c6917ae11dbf6
|