Skip to main content

Cinchor Python SDK (cinchor)

Accountability for autonomous agents on Omne — the capability + attestation layer over the Omne base SDK (omne-sdk). Two verbs:

  • enforce(action) — authorize-or-refuse a consequential action. The substrate is the Policy Enforcement Point: an out-of-scope action commits no state change.
  • attest(decision) — commit a tamper-evident, independently-verifiable record of a decision and its context.

Plus the capability lifecycle (mint / revoke / update / allow-counterparty) and audit reads. Parity-matched with the TS @cinchor/sdk: capability ids, counterparty keys, context hashes, and addresses derive identically across SDKs.

Proprietary — © DoneUp, Inc. All rights reserved. Not open source.

Install

Distributed via git (no public registry — Cinchor is proprietary). Both repos are private, so this needs git access to OmneDAO/omne-sdks + cinchor-hq/cinchor. Install the Omne base SDK first, then Cinchor:

# 1) Omne base SDK (dependency)
pip install "git+ssh://git@github.com/OmneDAO/omne-sdks.git@python/v0.1.0#subdirectory=python"
# 2) Cinchor
pip install "git+ssh://git@github.com/cinchor-hq/cinchor.git@sdk-py/v0.1.0#subdirectory=sdk-py"

(Use git+https://… instead of git+ssh://… if your git auth is HTTPS-based.)

Local development:

pip install -e ../../omne/sdk/python   # the Omne base SDK
pip install -e .                       # from sdk-py/

Quickstart

from omne_sdk import Wallet
from cinchor import CinchorClient, CinchorConfig, NetworkConfig, ContractConfig

principal = Wallet.from_mnemonic("…").get_account(0)
agent     = Wallet.from_mnemonic("…").get_account(0)

cinchor = CinchorClient.connect(CinchorConfig(
    network=NetworkConfig("ignis", 3, "http://127.0.0.1:26657"),
    contract=ContractConfig(name="cinchor_permissions", address="om1z…"),
))

cap = cinchor.mint_capability(principal=principal, agent=agent.address,
                              max_spend=100, ttl_seconds=3600)["capability_id"]
out = cinchor.enforce(capability=cap, agent=agent, amount=40)   # out.allowed / out.reason
att = cinchor.attest(capability=cap, agent=agent, context={"decision": "…"})
ok  = cinchor.verify_attestation({"decision": "…"}, att["attestation_id"])["ok"]

Layout

Module Responsibility
config.py network/contract config, export_prefix_for, BURN_SENTINEL
types.py CapabilityStatus / EnforcementCode / Verdict + state dataclasses
ids.py derive_capability_id, counterparty_key (om1z, on the base SDK)
attestation.py canonical-JSON context hashing, derive_attestation_id, verify
registry.py CapabilityRegistry — typed contract calls on OmneClient
client.py CinchorClient — the two verbs + lifecycle + audit reads

Validate

examples/full_flow.py drives the full lifecycle against a live node: python full_flow.py <rpc> <contract> <wallets.json> — mint → enforce (in-bounds ×2, over-budget refused) → attest + verify (tamper-evident) → revoke → refused.

Release files for cinchor 0.1.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 cinchor 0.1.0
File Size Uploaded
cinchor-0.1.0.tar.gz 14.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cinchor 0.1.0
File Interpreter ABI Platform
cinchor-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 29.4 kB

Release files / cinchor-0.1.0.tar.gz

Download URL cinchor-0.1.0.tar.gz
Size 14.2 kB
Tags Source
SHA-256 checksum
How to use checksums
896019758022b334ae93d1f8c86f13aca190511231cc1d7002c8c7edfa54bf75
BLAKE2b-256 checksum
How to use checksums
1f01101a045ba8f78d1e2c9e48d04302d364ef41c9c9150a55cc826e0ec147ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release files / cinchor-0.1.0-py3-none-any.whl

Download URL cinchor-0.1.0-py3-none-any.whl
Size 15.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
792efabd9348597e1f0efb898c9c6f169cabfdc158f429bc958cf46e0059460a
BLAKE2b-256 checksum
How to use checksums
6b350a58bf58261d7de9cc575216b87a55158fbbca0d5dae96e5aa5587eea4ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

0.1.0 This release

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