Skip to content

Argos

Repeatable checks. Evidence an agent and a human can both review.

Docs and skills: argos.benchyard.com

CI PyPI License: Apache-2.0

Documentation · Agent skill · SDK · Runnable cases · Dashboard

pip install argospy

Agents: Install https://argos.benchyard.com/skill.md.

Argos is a small Python framework for once checks and repeated soak runs. People and coding agents use the same CLI and case API. Each run produces local HTML, JSON and Markdown reports with steps, timings, assertions and operation records showing what was expected and what actually happened.

The package is argospy; the command and Python import are argos. Python 3.12+ is required. The framework has no runtime dependencies and no model API requirement.

flowchart LR
  Agent[Person or coding agent] --> CLI[Argos CLI]
  CLI --> Pack[Your case pack]
  Pack --> Target[App / API / environment]
  Pack --> Evidence[Local HTML + JSON + Markdown]
  CLI -. optional .-> Dash[Self-hosted Argos Dash]

Why use it

  • Evidence beyond a green badge: record operations, expected/actual values, artifacts and metrics alongside assertions.
  • One case, two schedules: run once during development or repeatedly to observe stability over time.
  • Local first: reports stay on disk; accounts and a dashboard are optional.
  • Agent-friendly: the skill and SDK describe the same operations available to a human, with explicit case selectors and environment selection.

Argos complements unit-test frameworks and observability systems. It does not prove correctness automatically, run an agent, or turn every recorded metric into an assertion. Cases define their own acceptance criteria.

Try a real pack

python3 -m venv .venv
. .venv/bin/activate
pip install argospy

git clone https://github.com/benchyard/argos-pack.git
pip install -e ./argos-pack
python -m http.server 8765 --bind 127.0.0.1 --directory argos-pack/examples/site

In another terminal with the same virtual environment active:

argos list pack:webdemo
argos run pack:webdemo --env local
argos run web:health --env local --soak --for 30s --pause 2s

Open the run's report.html from the printed output directory. See the example pack for a Skheri live-preview check and intentionally failing test coverage. Use the installed argos command; a separate transient environment may not discover your installed packs.

Write a case

from argos.case import ONCE, SOAK, Context, Spec
from argos.runner import CaseFn

def check_service(ctx: Context) -> None:
    ctx.step("health", "running")
    actual = 200  # replace with the result from your system under test
    ctx.operation("health response", kind="http",
                  operation={"method": "GET", "path": "/health"},
                  expected={"status": 200}, actual={"status": actual})
    ctx.check(actual == 200, "service must be healthy")
    ctx.step("health", "ok")

def cases() -> list[CaseFn]:
    return [CaseFn(Spec("app:health", "Service health", "api", ("e2e",),
                        (ONCE, SOAK)), check_service)]

Register a Pack via the argos.packs Python entry-point group. Complete runnable registration is in argos-pack; API details are in the SDK.

For acceptance gates, explicitly assert every required condition. ctx.threshold records and returns a boolean; pass it to ctx.check to enforce failure. A skipped case is not proof of success, so required checks should fail when prerequisites are missing rather than silently skip.

Share results with your team

Deploy Argos Dash, sign in, and download a connection file from its /cli page. Keep it outside Git:

argos run web:health --env local --dash /path/to/dash.env
argos push out/YOUR_RUN_DIRECTORY --dash /path/to/dash.env

The dashboard receives evidence; it does not execute your cases. There is no default cloud service or embedded dashboard token in the library. Review report content before sharing: arbitrary test output may contain sensitive application data.

Product group

Use Argos independently, or combine it with Skheri for live-preview checks, Acahti for commit checks, and Benchyard for team tasks. The stack guide describes the boundaries.

Develop

python3 -m pip install build
python3 -m build

Case implementations belong in packs, not in the framework. Contributions should keep the local runner dependency-free and preserve the documented report format. Apache-2.0; see LICENSE.