PSI shell for inspecting, mounting, and serving application packages.
Project description
AAAX
AAAX is the PSI shell for package-shaped agent systems.
Use it to inspect a PsiHub package, mount its tactics and channels, bind local handlers, open a small FastAPI surface, and hand that surface to a human, script, or coding agent. The feel is intentionally shell-like: name the package, see the resources, run one command, and get a callable system.
$ aaax inspect packages/analyst-pack
analysis-pack: Demo analyst package.
package analysis-pack psi://demo/analysis-pack
tactic echo psi://demo/analysis-pack/tactics/echo
channel events psi://demo/analysis-pack/channels/events
$ aaax serve packages/analyst-pack --port 8400
Uvicorn running on http://127.0.0.1:8400
AAAX does not replace LLLM, SSSN, PsiHub, Codex, Claude Code, schedulers, sandboxes, or deployment platforms. It is the thin shell where those pieces are named, mounted, served, and handed off.
Install
python -m pip install aaax
For local PSI composition:
python -m pip install "aaax[integrations]" lllm-core sssn psihub
Mount A PsiHub Package
If a folder contains psi.toml, AAAX can serve it directly:
aaax serve packages/analyst-pack --port 8400
AAAX reads the manifest and mounts:
- package metadata and card hints;
- schemas, tactics, services, runs, and config;
- SSSN channels and snapshots;
- docs, examples, and assets.
Python tactic entrypoints become /tactics/{name}/run. Channels are backed by a
local SSSN store and exposed through /channels/{name}/events. Services that
point at one tactic are invokable as resources.
curl -X POST http://127.0.0.1:8400/tactics/finance_baseline/run \
-H 'content-type: application/json' \
-d '{"input": {"records": []}, "context": {"request": "demo"}}'
Append and query channel events:
curl -X POST http://127.0.0.1:8400/channels/events/events \
-H 'content-type: application/json' \
-d '{"input": {"kind": "record", "payload": {"text": "hello"}}}'
curl http://127.0.0.1:8400/channels/events/events?limit=10
Write A Shell Script
For larger systems, write a strategy.py. A strategy is the shell script: it
mounts packages, assigns local names, and optionally defines /run.
from aaax import Strategy
def build_strategy() -> Strategy:
shell = Strategy(
"analyst-shell",
description="Mount source channels and analyst tactics.",
)
shell.use_package("packages/source-channels", prefix="sources")
shell.use_package("packages/analyst-tactics", prefix="analysts")
@shell.runner
def run(input_value, *, context=None):
return {
"input": input_value,
"resources": [resource.ref for resource in shell.resources],
"context": context or {},
}
return shell
aaax serve strategy.py --port 8400
Surface
Useful endpoints:
GET /healthGET /strategyGET /resourcesGET /packagesGET /tacticsPOST /tactics/{name}/runGET /channelsPOST /channels/{name}/eventsGET /channels/{name}/eventsPOST /runPOST /resources/{name}/invoke
Project details
Release history Release notifications | RSS feed
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 aaax-0.2.0.tar.gz.
File metadata
- Download URL: aaax-0.2.0.tar.gz
- Upload date:
- Size: 20.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e9dcdb3caac7a34fad29a6718fc2dc7b4d062c607761eeafb4b482331fcfc118
|
|
| MD5 |
96fece030df20592e58da4f29db15f97
|
|
| BLAKE2b-256 |
de20341ec34e872db440b7d25331ac2d0b9c40b9f6742d80d34484d75841ed78
|
File details
Details for the file aaax-0.2.0-py3-none-any.whl.
File metadata
- Download URL: aaax-0.2.0-py3-none-any.whl
- Upload date:
- Size: 17.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f4a7507a9b4e4def55e5e85a263cc854efb52548c47c8e27fef2c505b9eabe42
|
|
| MD5 |
4d097b4353a9a0819711d2a6e5f6540b
|
|
| BLAKE2b-256 |
0cf9c76c8591348200591fee53e62d3e2992fd0fd0f4a9db4acf4cc887c818ff
|