scitrera-aether-ag2
ag2 (AutoGen 2) adapter for Scitrera Aether, the distributed control plane for
multi-agent systems. Wrap any ConversableAgent, host it on Aether, and reach
it from another process as if it were local — or let Aether spin it up on demand
when a message arrives for an offline agent.
Install
# from the sdk/python-ag2 directory
pip install scitrera-aether-client # Aether Python client
pip install -e ".[dev]" # this package + dev deps
Build aetherlite
The examples and E2E tests need the aetherlite binary (a single-binary
all-in-one Aether gateway for local development). You can get from the latest release, or build from source:
cd ../../server
go build -o aetherlite ./cmd/aetherlite
The binary is expected at server/aetherlite relative to the repo root.
Override with AETHERLITE_BIN=/path/to/binary.
Quickstart
The two_agent_remote example spawns its own gateway, hosts an EchoAgent,
and calls it over Aether in under 10 seconds:
cd sdk/python-ag2
./.venv/bin/python -m scitrera_aether_ag2.examples.two_agent_remote
Expected output:
Reply from remote agent: echo: hi
Source: scitrera_aether_ag2/examples/two_agent_remote.py
Concepts
-
AetherAgentHost — server side. Wraps a
ConversableAgent, connects to Aether as an agent principal, and dispatches incomingRequestEnvelopemessages to ag2'sAgentService. Optionally persists conversation history via checkpoints and emits telemetry metrics. -
AetherRemoteAgent — client side. Implements the ag2
Agentprotocol locally; ona_receive()it serialises the conversation turn into aRequestEnvelope, sends it over Aether to the host, streams responses back, and handles tool-call continuations and HITL prompts. -
AetherAg2Orchestrator — lazy spin-up. Extends the Python SDK's
MultiprocessOrchestrator. When Aether's dispatcher sends aTaskAssignmentfor an offline agent, the orchestrator readslaunch_params["factory"](amodule:callablestring), builds an env dict, and callsspawn_module()to launchpython -m scitrera_aether_ag2.host_entrypointas a subprocess.
HITL, tool-calls, streaming
HITL: pass hitl_mode="sender" to AetherRemoteAgent to forward
human-input prompts to sender.get_human_input(), or "auto_skip" to
silently skip them. Default "raise" raises HITLRequired.
Tool calls: AetherRemoteAgent detects tool calls in the remote reply that
name tools registered on the sender, executes them locally, and sends a
continuation request automatically (up to max_continuations=8).
Streaming: set iostream_streaming=True (default) to forward streaming
text chunks to ag2's IOStream as StreamEvents as they arrive.
Tests
# Unit tests only (no gateway needed):
cd sdk/python-ag2
./.venv/bin/python -m pytest
# Full E2E suite (spawns aetherlite):
AETHER_RUN_E2E=1 ./.venv/bin/python -m pytest -v
Status
Alpha. The v1 surface is stable enough for experimentation. Known gaps and
deferred items are tracked in .slop/ag2-adapter-tech-debt.md.
Metadata
Release files for scitrera-aether-ag2 0.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| scitrera_aether_ag2-0.0.2.tar.gz | 46.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| scitrera_aether_ag2-0.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 85.5 kB
Release files / scitrera_aether_ag2-0.0.2.tar.gz
| Download URL | scitrera_aether_ag2-0.0.2.tar.gz |
|---|---|
| Size | 46.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e2cb2cc260279fe38f59716910e32653a4029e4d83af953cdb8351cc2b485c82
|
|
BLAKE2b-256 checksum How to use checksums |
5fc4abdcc2532dabdfb19f3d5cad4fcade17aadfbe6656f6cececb6df7721f54
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.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 Jul 25, 2026.
Transparency logRelease files / scitrera_aether_ag2-0.0.2-py3-none-any.whl
| Download URL | scitrera_aether_ag2-0.0.2-py3-none-any.whl |
|---|---|
| Size | 38.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
06429c6a0f32ad80453e81b0d231feb28996bf107bbc4f6d4002c65461e9be3a
|
|
BLAKE2b-256 checksum How to use checksums |
dbc790cc7e61667da9c5da050ae25a57445e07ebb886bd7abbd919f1d25e271b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.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 Jul 25, 2026.
Transparency log