Skip to main content

a13n Envd Client

a13n-envd-client is the low-level Python client for Envd's Environment Interaction Protocol (EIP). The import package is a13n_envd_client. Python 3.13 or later is required.

Use this package when implementing an Environment Provider or a trusted EIP integration. Most applications should start with a13n-harness, whose Environment Providers own Provider adaptation and target lifecycle.

Public surface

  • Generated EIP 0.1 models, codecs, method metadata, and typed EIPClient operations for every protocol method in a13n_envd_client.eip.v1.
  • EIPDeviceConnection: Device initialization, descriptor and directory discovery, independent Session acquisition, and physical transport ownership.
  • EIPSession: fixed-cwd execution scope, readiness, keepalive, monotonic descriptor refresh, clean close, abort, and transfer helpers.
  • StdioTransport, HttpTransport, and AcceptedWebSocketTransport over trusted Host-provided pipes, an authenticated HTTP(S) endpoint, or an already-authenticated reverse-WebSocket connection.
  • EIPFileReader and EIPFileWriter: bounded binary transfer, integrity evidence, explicit commit, and staged-writer abort.
  • EIPOutputReader and EIPOutputPage: contiguous retained-output paging and producer/completeness evidence.
  • RequestCoordinator: bounded concurrent request correlation, data-frame routing, cancellation, and typed errors.
  • EIPTransport, frame types, and WebSocketConnection for custom carrier adapters.

The package does not install or launch Envd, allocate its required private runtime directory, issue credentials, or start a WebSocket listener. Those responsibilities belong to the Provider or Host.

Connect to an existing daemon

import asyncio
import os

from a13n_envd_client import EIPDeviceConnection, HttpTransport


async def main() -> None:
    transport = HttpTransport(
        endpoint=os.environ["ENVD_ENDPOINT"],
        credential=os.environ["ENVD_CREDENTIAL"],
    )
    device = await EIPDeviceConnection.initialize(
        transport,
        expected_device_id=os.environ["ENVD_DEVICE_ID"],
    )
    async with device:
        async with await device.open_session() as session:
            descriptor = await session.describe()
            print(descriptor.device_id, descriptor.generation, descriptor.session_id)


if __name__ == "__main__":
    asyncio.run(main())

This example requires an existing configured daemon and its credential. The endpoint is its base URL. Initialization creates no Session. open_session() establishes readiness; closing a Session preserves its siblings. The Device owner separately closes the carrier, without destroying the external workspace or daemon.

The Python EIP client guide covers every transport/session option, all error classes, explicit writer commit, output paging, timeout semantics, and the complete generated method reference. The Envd operator guide owns standalone bootstrap, including A13N_ENVD_RUNTIME_DIR.

Failure semantics

A carrier timeout, cancellation, or connection failure does not prove an already dispatched mutation failed or was absent. The client does not automatically retry ambiguous operations. Reconcile with the same operation ID and semantic request where permitted, a receipt, or native-state inspection.

Operations with context.timeout_ms get their operation budget plus response allowance; without a configured coordinator timeout the allowance is 30 seconds. HTTP control reads follow the same operation-plus-allowance model while retaining their separate connect/write/pool timeouts. Initialization and readiness have their own enclosing deadlines.

Validate

uv run --locked pytest packages/a13n-envd-client/tests

Versioning and generation

The client and native daemon share one Envd stable X.Y.Z or RC X.Y.Z-rc.N release identity. Python metadata uses PEP 440 X.Y.ZrcN; native artifacts retain SemVer spelling. EIP's negotiated major/minor is independent of the package release.

The IDL and repository generator own the wire artifacts. Do not hand-edit generated Python models or methods. See protocol source and generation.

License

Apache License 2.0.

Metadata

Release files for a13n-envd-client 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 a13n-envd-client 0.1.0
File Size Uploaded
a13n_envd_client-0.1.0.tar.gz 88.5 kB Details

Built distribution (wheel)

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

Total release size: 147.9 kB

Release files / a13n_envd_client-0.1.0.tar.gz

Download URL a13n_envd_client-0.1.0.tar.gz
Size 88.5 kB
Tags Source
SHA-256 checksum
How to use checksums
ce3bbb401903e78f0cda8d641aed83b8393c1b7756ab7fdcf988c39f8d8c8051
BLAKE2b-256 checksum
How to use checksums
532bc471a4ac8391cde2a649960e9550980f2ff8aec085b924fba56d452c23f1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

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

Download URL a13n_envd_client-0.1.0-py3-none-any.whl
Size 59.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2e0b0c510f61cf3ec1dadf5921472be94ca50e4dd9a5c4d6d3d0eff9390d709a
BLAKE2b-256 checksum
How to use checksums
6b44b02ad06416e45aa8b182e9feb3f13b1cb4b771871faf2d0453f087e3eef7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.19 {"installer":{"name":"uv","version":"0.12.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

0.3.0

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

This release

0.1.0 This release

2 release files

0.0.40

2 release files

0.0.33

2 release files

0.0.10

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

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