argos
Agent-friendly once / soak test framework. Humans or coding agents run cases locally; optionally stream live status to a self-hosted dash instance.
| PyPI | argospy (CLI command: argos, import: argos) |
| Docs | https://lpythu.github.io/argos/ |
| Agent skill | https://lpythu.github.io/argos/skill.md |
| SDK | https://lpythu.github.io/argos/sdk.md |
| Git | https://github.com/lpythu/argos (library); https://acahti.saidc.ai/saidc/argos-dash (dash) |
Agents: Install https://lpythu.github.io/argos/skill.md then drive the same CLI. Cases live in a pack repo (entry points), not in this framework repo.
Two ways to run
A — Local only (default)
No dash required.
flowchart LR
user["Human or agent"]
cli["argos CLI"]
out["out/ artifacts"]
user --> cli --> out
pip install argospy
# install your pack (entry points under argos.packs), then:
argos list
argos run <id>
argos run <id> --env office # e2e cases need --env
argos run <id> --soak --for 8h
While running, the terminal shows case banners, steps, and PASS/FAIL. When finished, open out/<stamp>__<slug>/report.html (also report.md / report.json). Details and examples: Local run.
B — Stream to a dash instance (optional)
Dash must already be deployed. Download dash.env from that instance’s CLI page (/cli): it contains ARGOS_DASH_URL + ARGOS_TOKEN.
flowchart LR
dashUI["Dash /cli page"]
envFile["dash.env"]
cli["argos run --dash"]
out["out/"]
dashUI -->|download| envFile
envFile --> cli
cli --> out
cli -->|ingest| dashUI
cli -->|"GET /report-view"| dashUI
# after downloading dash.env from https://<your-dash>/cli
argos run <id> --dash ./dash.env
# or import into the environment
set -a && source ./dash.env && set +a
argos run <id> --dash
# one-shot URL (token still from env / secrets)
argos run <id> --dash https://dash.example.com
# upload a finished local run
argos push out/<stamp>__<slug> --dash ./dash.env
Put dash.env under secrets/ (gitignored) or ~/.argos/. Do not commit it. There is no default dash URL in the library.
Install
pip install argospy
argos packs # lists packs registered via entry points
Python ≥ 3.12. Do not use uv run argos.
Write a case
Minimal example (full API: sdk.md):
from argos.case import ONCE, Context, Spec
from argos.runner import CaseFn
def foo(ctx: Context) -> None:
ctx.step("check", "running")
ctx.check(True, "unreachable")
ctx.step("check", "ok")
def cases() -> list[CaseFn]:
return [CaseFn(Spec("foo", "short title", "live", ("e2e",), (ONCE,)), foo)]
New product pack: pack.py exporting pack() -> Pack, plus [project.entry-points."argos.packs"] in pyproject.toml. No __init__.py under case dirs.
Docs map
| Read | Where |
|---|---|
| This README | Human / agent overview |
| Architecture | https://lpythu.github.io/argos/architecture/ |
| Ingest (CLI → dash) | https://lpythu.github.io/argos/ingest/ |
| Agent contract | https://lpythu.github.io/argos/skill.md |
Terminal & out/ |
https://lpythu.github.io/argos/local/ |
| Python API | https://lpythu.github.io/argos/sdk.md |
| Connect this dash | https://<dash>/cli and https://<dash>/skill.md |
Repo layout
This repository is the library (argospy). Product cases belong in a pack repo. Dash is optional infrastructure in argos-dash (Acahti); the library does not require it. See Architecture.
Metadata
Release files for argospy 0.6.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| argospy-0.6.1.tar.gz | 35.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| argospy-0.6.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 65.0 kB
Release files / argospy-0.6.1.tar.gz
| Download URL | argospy-0.6.1.tar.gz |
|---|---|
| Size | 35.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e28697337b5f1897dc6cf2df43c00e9947090958d52c80826efedd535cd08793
|
|
BLAKE2b-256 checksum How to use checksums |
93ff1a6098f9ab1f0e9acfc067b5b62edf76af5711f0a6b6de499cd41dbbf255
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","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 / argospy-0.6.1-py3-none-any.whl
| Download URL | argospy-0.6.1-py3-none-any.whl |
|---|---|
| Size | 29.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cb2a50af5edc0fd8938a365df9f02c3e979b9bc5bd583cfb0a33063cd3cb729f
|
|
BLAKE2b-256 checksum How to use checksums |
8035a9b0fd5dbf915dd6fff26427e22af78f4a9629f44f468c97e874a75db303
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","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}
|