This release is a pre-release and may not be stable for production use.
Use Undercurrent from Python
The aixand-undercurrent-sdk package provides an async Python 3.11+ client for
starting local terminal sessions, delivering input, reading output, observing
state, and stopping processes. Import it as undercurrent. These pages describe
release 0.1.0-beta in this checkout. Python packaging normalizes that same
release to 0.1.0b0. Use the daemon and uc-python-bridge built
from the same revision.
Python owns the connection and observation helpers. The external daemon owns sessions, durable state, and process supervision. Closing a client detaches; stopping a session is an explicit operation. Application success, agent identity, credentials, and workflow budgets remain the caller's responsibility.
await client.stop(session_id, graceful_only=True) requests a graceful stop
without automatic forced escalation. It requires a daemon supporting the
graceful_only stop field and cannot be combined with force=True. Inspect or
wait for terminal lifecycle before treating a process as stopped; a timeout
does not establish termination.
Choose a reading path
| Reader | Start here | Continue with |
|---|---|---|
| User running local tasks | Install and run a complete example | Recover and clean up |
| SDK integrator | Control sessions and deliver input | Wait for observed state, consume output and streams |
| Maintainer | Trace the implementation and extend it | Source owners and SDK comparison |
Setup and examples
Follow the Linux quickstart to install the package, select matching native executables, and start an isolated daemon. Installing the Python package alone does not install Rust binaries.
The maintained input round trip demonstrates
async with Client(), starting a child, an application acknowledgment, output
pagination, and cleanup. Wait for state,
observe a session, and
copy retained output without changing its process.
The API does not start a daemon, compile a bridge, or replay a failed mutation automatically. Preserve session IDs and delivery IDs and follow the operation-specific recovery rules. The repository overview and Rust SDK orientation provide wider context.
Connection ownership
This diagram shows the runtime boundaries relevant to a Python caller.
%%{init: {"flowchart": {"useMaxWidth": false}}}%%
flowchart TD
accTitle: Python client context
accDescr: An asyncio application communicates with its child bridge over standard IO. The bridge uses the public Rust SDK to reach the external daemon over authenticated local IPC. The daemon supervises sessions independently of the Python connection.
P[Python application and<br/>async Client] -->|private JSON lines over<br/>stdio| B[uc-python-bridge child]
B -->|public Rust SDK and<br/>authenticated local IPC| D[uc-daemon]
D -->|supervises through<br/>runtime| S[Managed terminal<br/>sessions]
D -->|owns durable records| R[(Runtime home)]
The bridge is a client adapter; neither the Python package nor its bridge embeds the daemon or reads its database. See the maintainer source map.
Metadata
Release files for aixand-undercurrent-sdk 0.1.0b0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| aixand_undercurrent_sdk-0.1.0b0-py3-none-any.whl | Python 3 | none | any | Details for aixand_undercurrent_sdk-0.1.0b0-py3-none-any.whl |
Release files / aixand_undercurrent_sdk-0.1.0b0-py3-none-any.whl
| Download URL | aixand_undercurrent_sdk-0.1.0b0-py3-none-any.whl |
|---|---|
| Size | 18.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4c452a067f41e0c6878f9b03ae8035a06ae484c0c16ec6b1fb372d2a76a88990
|
|
BLAKE2b-256 checksum How to use checksums |
89c3e73a306db423f150adbd4e2bbe1c3a14c016ddf128603a88af9dfe495c01
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.7 {"installer":{"name":"uv","version":"0.12.7","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}
|
Security for aixand-undercurrent-sdk 0.1.0b0
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.