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.
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 scitrera_aether_ag2-0.0.2.tar.gz.
File metadata
- Download URL: scitrera_aether_ag2-0.0.2.tar.gz
- Upload date:
- Size: 46.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e2cb2cc260279fe38f59716910e32653a4029e4d83af953cdb8351cc2b485c82
|
|
| MD5 |
2d99beef5737b79125e344e8b6e6c196
|
|
| BLAKE2b-256 |
5fc4abdcc2532dabdfb19f3d5cad4fcade17aadfbe6656f6cececb6df7721f54
|
Provenance
The following attestation bundles were made for scitrera_aether_ag2-0.0.2.tar.gz:
Publisher:
publish-python.yml on scitrera/aether
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
scitrera_aether_ag2-0.0.2.tar.gz -
Subject digest:
e2cb2cc260279fe38f59716910e32653a4029e4d83af953cdb8351cc2b485c82 - Sigstore transparency entry: 2254449305
- Sigstore integration time:
-
Permalink:
scitrera/aether@04aff1cfd91d0df49f2ca51cb6a996da7f3f1faa -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/scitrera
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-python.yml@04aff1cfd91d0df49f2ca51cb6a996da7f3f1faa -
Trigger Event:
push
-
Statement type:
File details
Details for the file scitrera_aether_ag2-0.0.2-py3-none-any.whl.
File metadata
- Download URL: scitrera_aether_ag2-0.0.2-py3-none-any.whl
- Upload date:
- Size: 38.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
06429c6a0f32ad80453e81b0d231feb28996bf107bbc4f6d4002c65461e9be3a
|
|
| MD5 |
9bcd35cf32107e0a7ea0f30a1ef93f0e
|
|
| BLAKE2b-256 |
dbc790cc7e61667da9c5da050ae25a57445e07ebb886bd7abbd919f1d25e271b
|
Provenance
The following attestation bundles were made for scitrera_aether_ag2-0.0.2-py3-none-any.whl:
Publisher:
publish-python.yml on scitrera/aether
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
scitrera_aether_ag2-0.0.2-py3-none-any.whl -
Subject digest:
06429c6a0f32ad80453e81b0d231feb28996bf107bbc4f6d4002c65461e9be3a - Sigstore transparency entry: 2254449325
- Sigstore integration time:
-
Permalink:
scitrera/aether@04aff1cfd91d0df49f2ca51cb6a996da7f3f1faa -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/scitrera
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-python.yml@04aff1cfd91d0df49f2ca51cb6a996da7f3f1faa -
Trigger Event:
push
-
Statement type: