Tenant SDK for the AuspexAI volunteer compute network
Project description
AuspexAI Tenant SDK
The researcher surface of the AuspexAI volunteer compute network: everything a research tenant needs to author an experiment, submit it to the live coordinator, drive it to convergence, and walk away holding a cryptographically verified copy of the data — receipts, a Rekor-anchored attestation, and a signed custody record included.
Python ≥ 3.11, Apache-2.0. Install from a GitHub release or git:
pip install "auspexai-tenant @ git+https://github.com/auspexai/tenant-sdk.git@v0.5.1"
# with the analysis surface (pandas/Parquet evidence loader):
pip install "auspexai-tenant[analysis] @ git+https://github.com/auspexai/tenant-sdk.git@v0.5.1"
New researcher? The full front door — install, apply for a tenant via
auspexai-tenant apply (GitHub device flow, no key material to paste), and
your first verified run — is ONBOARDING.md.
The researcher lifecycle
The SDK covers the whole arc. Each stage works today against the live
coordinator (https://coord.auspexai.network).
1. Author
- Published wire contracts (JSON Schema + CDDL, immutable per the honor-forever versioning policy) for manifests, work units, executor output, results, reducer decisions, and receipts — with strict Pydantic models for all of them. Tenants may consume the SDK or implement the published contract independently.
ExecutorHarness— wrap your science in arun_one(unit, models_dir) -> dictfunction and the harness handles the worker invocation contract (a working tenant is ~30 lines; seeexamples/synthetic_tenant/).ReducerHarness— same pattern for custom reduction.auspexai_tenant/lite.py— a zero-dependency, stdlib-only, Python 3.10-safe mirror of the harness, designed to be vendored into your package so your executor runs in the worker sandbox without installing the SDK there. IncludesInferenceClientfor LLM-inference tenants: deterministic chat against the model the worker serves over a sandbox-local socket (temperature pinned to 0 by the worker; seed/num_predict/num_ctx whitelisted).- Static work-unit packing (
tar_writer/tar_reader) and package-digest helpers that match the worker's verification byte-for-byte.
2. Sign & submit
- Ed25519 tenant keypair (
key generate/key pubkey); every API call is signed (RFC 9421 HTTP message signatures) — no passwords, no tokens. manifest validate→manifest sign→manifest upload. Manifests are immutable once submitted (manifest-swap protection: work units bind the manifest hash); a maintainer approves the experiment before any work is scheduled.- Demand signals:
model request/model catalog(ask the network for a model; volunteers elect to host it) andsoftware request/software list(ask for a worker-baseline capability; tracked through an assessed, audited review pipeline).
3. Drive
run_until— the autonomic driver: submit a round, fold results into a checkpointable aggregate (Counter/Mean/Histogramor your own) as they arrive, test your convergence condition, generate the next batch. Resumable via a round-atomic journal; wakes on an SSE doorbell instead of hot-polling; pluggable stall policy (abort / finalize-partial / keep waiting).- CLI:
experiment run <id> --driver yourmodule:builddrives a whole adaptive experiment headlessly.experiment reducebatch-reduces a completed consensus set.
4. Watch
experiment list/status/results(consensus by default,--rawfor all replicas) /receipts, plus an anonymized activity rollup (contributor counts, replication fill — never volunteer identities).
5. Verify — the part you can't get from a rented GPU
Every completed experiment yields a result-set attestation: a Merkle root over the per-unit consensus set, COSE-signed by the network's published key and anchored in the public Sigstore Rekor transparency log. The SDK verifies all of it independently:
experiment attestation --check-rekor --verify-against-results— recompute the root from your own pulled results, check the signature against the published signer roster, and confirm public log inclusion.- v1 attestations additionally bind each work unit's input hash into the leaves: "result R was produced from parameters P" is cryptography, not a database row.
- Per-result worker signatures — the only signatures in the chain not made by the coordinator — verify from the bundle alone.
6. Take custody & analyze
experiment export --verifydownloads the evidence bundle — results + work-unit inputs + receipts + attestation + Rekor proof + a signed proof-of-transfer — and runs the full verification chain on receipt. Collection transfers data custody to you: the network can re-verify your bundle forever, but after age-off it never re-delivers. Your verified copy is the durable copy.bundle verify <file>— re-verify a saved bundle any time, offline, with no coordinator. Hand the file and the command to a reviewer.evidence.load_verified(bundle)— run the chain, then get a tidy pandas DataFrame (inputs asinput.*columns, outputs asoutput.*). There is deliberately no force flag: analysis begins from a verified dataset or it doesn't begin.bundle table <file> -o results.parquetis the no-Python path to Excel/Tableau/R. Seeexamples/evidence_loader.ipynb.
CLI quick reference
| Group | What it does |
|---|---|
key |
Ed25519 tenant keypair (generate, pubkey) |
manifest |
validate, sign, upload an experiment manifest |
experiment |
list, status, run (autonomic driver), results, receipts, attestation, reduce, export |
bundle |
verify a saved evidence bundle offline; write it as a CSV/Parquet table |
model |
network model catalog + BYOM model requests |
software |
worker-capability requests (the code-plane demand board) |
receipts |
decode/pretty-print CBOR receipts |
Every command has --help with the full contract.
Examples
examples/synthetic_tenant/— the minimal tenant (integer doubler): manifest, executor, reducer in ~30 lines.examples/synth_geometry/— a real numeric workload with an adaptiverun_untildriver.examples/evidence_loader.ipynb— export → verify → DataFrame → Parquet.
Status
Closed beta. The coordinator is live and the first tenant's experiments run on real volunteer hardware end-to-end (work-unit dispatch, consensus, receipts, live Rekor anchoring, evidence-bundle custody). Tenant registration is maintainer-gated during the beta — there is no self-serve signup yet. Interested in running research on the network? Email contact@auspexai.network.
Scope & license boundary
The Tenant SDK is the contract between tenant research code and the AuspexAI
platform. It is intentionally a thin client over a published data +
subprocess contract: tenants consume the SDK's stable surface (or
implement the published contract independently); the AGPL-3.0 platform
(auspexai/platform, auspexai/worker) runs on the other side of that
contract. Tenant project modules authoring against the SDK are not
derivative works of the AGPL platform — the split follows the
published-contract pattern used by MongoDB drivers, Grafana plugins, and
Sentry SDKs (copyleft on the server, permissive on the SDK). See the
AuspexAI Principles & Scope §5.2 for the structural argument.
Apache-2.0 for the SDK. Tenants license their own research code however suits them.
Governance & policies
- Governance — roles, decision rules, recruitment, conflict of interest
- Code of Conduct — community standards, reporting, escalation pathway
- Contributing — DCO sign-off, PR workflow, RFC requirement for substantial changes
- Research Ethics Policy — what research can run on the network and how it's reviewed
- Tenant Terms — including the results-custody model this SDK implements
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 auspexai_tenant-0.5.4.tar.gz.
File metadata
- Download URL: auspexai_tenant-0.5.4.tar.gz
- Upload date:
- Size: 120.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
39a7824b5e47156a9343ef7b0f3687b8fb709786179c1e8ef3561509cd6ee091
|
|
| MD5 |
a4a231ebfd7aa29918ea1122974c22bf
|
|
| BLAKE2b-256 |
ebf09d06940114f6156643b8aec71f0323e0b8cd506d007dba184f874d9239a0
|
Provenance
The following attestation bundles were made for auspexai_tenant-0.5.4.tar.gz:
Publisher:
release.yml on auspexai/tenant-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
auspexai_tenant-0.5.4.tar.gz -
Subject digest:
39a7824b5e47156a9343ef7b0f3687b8fb709786179c1e8ef3561509cd6ee091 - Sigstore transparency entry: 1803808071
- Sigstore integration time:
-
Permalink:
auspexai/tenant-sdk@34949b445a019203656675de2daebcafd2406099 -
Branch / Tag:
refs/tags/v0.5.4 - Owner: https://github.com/auspexai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@34949b445a019203656675de2daebcafd2406099 -
Trigger Event:
push
-
Statement type:
File details
Details for the file auspexai_tenant-0.5.4-py3-none-any.whl.
File metadata
- Download URL: auspexai_tenant-0.5.4-py3-none-any.whl
- Upload date:
- Size: 95.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e342a60b08517360b4d79c547a8d55fc7ef0aa1e5f418fa72b3c75231ce417a
|
|
| MD5 |
7ef0745d0278df8b24790f5f23dad7b7
|
|
| BLAKE2b-256 |
681546cc2a6449421c15f73f9d06c68bb4282031f211287b474b86158fe421bd
|
Provenance
The following attestation bundles were made for auspexai_tenant-0.5.4-py3-none-any.whl:
Publisher:
release.yml on auspexai/tenant-sdk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
auspexai_tenant-0.5.4-py3-none-any.whl -
Subject digest:
6e342a60b08517360b4d79c547a8d55fc7ef0aa1e5f418fa72b3c75231ce417a - Sigstore transparency entry: 1803808096
- Sigstore integration time:
-
Permalink:
auspexai/tenant-sdk@34949b445a019203656675de2daebcafd2406099 -
Branch / Tag:
refs/tags/v0.5.4 - Owner: https://github.com/auspexai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@34949b445a019203656675de2daebcafd2406099 -
Trigger Event:
push
-
Statement type: