vintraa-agent
vintraa-agent is the Python SDK for native Vintraa agent integrations, with
a framework-neutral core and an optional FastAPI adapter.
This package is an alpha release. Its API may change before 1.0.0.
python -m pip install vintraa-agent
# FastAPI and Redis adapters:
python -m pip install 'vintraa-agent[fastapi,redis]'
See the Vintraa developer guide and public API reference. Using the SDK is optional and does not itself certify an agent.
from vintraa_agent import (
AsyncInMemoryIdempotencyStore,
HostedPublicKeyProvider,
InvocationExecutor,
SuccessResult,
)
from vintraa_agent.fastapi import create_fastapi_router
async def generate_roster(invocation):
return SuccessResult(
output={
"workspaceId": invocation.envelope.context.workspace.id,
}
)
async def authorize(invocation):
return "ROSTER_MANAGER" in invocation.envelope.context.user.roles
executor = InvocationExecutor(
public_keys=HostedPublicKeyProvider(),
idempotency=AsyncInMemoryIdempotencyStore(), # use Redis in production
handlers={"roster.generate": generate_roster},
authorize=authorize,
)
app.include_router(create_fastapi_router(executor))
The FastAPI adapter streams and bounds the untouched request body before
verification; tune max_body_bytes only when the signed protocol limit changes. Use
AsyncRedisIdempotencyStore with redis.asyncio in multi-process production;
the in-memory store is development-only. PublisherClient.register_draft
remains a compatibility alias. PublisherClient is an equivalent async client
for canonical contract 2026-09-05.11: device identity, scoped credentials,
ownership verification, publishers, applications, releases, conformance,
private test creation, publisher-safe review responses, certification reads,
controlled activation/deprecation/withdrawal, deployment upgrade/rollback,
principal-owned import/conformance jobs, governed assets and asset sets,
conformance history, signed publisher webhook lifecycle/history, ETags, cursors,
and Operations.
Publisher analytics add the closed event dictionary, privacy-gated summary and
timeseries reads, plus idempotent aggregate-only exports with a dedicated typed
operation poll. Suppressed values remain None, unknown optional SDK coverage
remains UNKNOWN, and truncation is explicit.
Successful analytics responses are hard-bounded to 1,000 cells or rows and use
a dedicated bounded decoder so the contract maximum remains consumable.
It validates manifest v2 before mutations; review and certification remain
server-authoritative. See the raw HTTP operation guide.
Publisher webhook verification requires the untouched request bytes:
from vintraa_agent import verify_publisher_webhook
verified = verify_publisher_webhook(
raw_body,
request_headers,
{current_secret_prefix: current_secret},
)
Persist verified.event_id in a durable inbox before side effects. HMAC and
freshness verification do not themselves deduplicate retries or order events.
Anonymous discovery uses MarketplaceClient, which deliberately sends no
bearer credentials:
from vintraa_agent import MarketplaceClient
marketplace = MarketplaceClient()
page = await marketplace.search_applications(category="productivity", limit=25)
passport = await marketplace.get_application(page["items"][0]["appId"])
Authenticated install and reputation mutations remain on PublisherClient;
workspace role, acknowledgement, eligibility, and moderation stay
server-authoritative.
Hosted signing-key discovery uses a bounded negative cache, a refresh cooldown, a rolling fetch-rate cap, and one in-flight refresh so attacker-controlled key identifiers cannot amplify registry traffic.
For a developer-hosted customer UI, use
create_external_experience_exchange_proof on the server that receives
Vintraa's top-level launch POST. Keep both the private key and exchanged access
token out of browser JavaScript and browser storage.
Metadata
Release files for vintraa-agent 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| vintraa_agent-0.1.3.tar.gz | 209.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vintraa_agent-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 324.8 kB
Release files / vintraa_agent-0.1.3.tar.gz
| Download URL | vintraa_agent-0.1.3.tar.gz |
|---|---|
| Size | 209.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
348733806b3a261f48c21f191e642ca21afe339d9ad7edd147352aa0fef7d635
|
|
BLAKE2b-256 checksum How to use checksums |
2b97003fa1ae83e10770b9615cb7e6b0045b3ac4807a02f748b4253c26e23c89
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 6, 2026.
Transparency logRelease files / vintraa_agent-0.1.3-py3-none-any.whl
| Download URL | vintraa_agent-0.1.3-py3-none-any.whl |
|---|---|
| Size | 115.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cb79b69e5233f3f65345dd827e7600ec3aae1d733edd73b0318859fe8bbff57c
|
|
BLAKE2b-256 checksum How to use checksums |
3b8c690f50798386c1c76ec68e69811617ea01db07213413f2a025990df5d08b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 6, 2026.
Transparency log