Four new Agentic AI Foundation projects, each put to work on a small, realistic task you can run yourself.
The Announcement · Quick Start · Report a Bug
The Agentic AI Foundation welcomed four new projects. Each folder here gives one of them a real job, and every check in it has to pass for the run to succeed.
- Packages an accounts-receivable procedure as an Agent Skill (from Anthropic): an
invoice-agingskill that turns an invoice CSV into an overdue follow-up list, validated with the officialskills-reftool. - Exchanges a tool call over Open Responses (from OpenAI): the model asks to look up incident INC-4821, the application answers from its own CSV, and the model writes the on-call handoff.
- Scores an agent's incident triage in an OpenEnv environment (from Hugging Face): page, queue or dismiss, with rewards, an episode score and a penalty for invalid actions.
- Runs an invoice reconciliation inside an OpenSandbox container (from Alibaba): the code, the invoices and the ledger go in, a report of duplicates, gaps and mismatches comes back, and the sandbox is destroyed.
Each example is a folder with a run.sh that downloads the project's latest release, verifies its published checksum, runs the task and prints every check. The first three need only a Linux shell with Python 3 and Node 22, so the official Node image is all you need:
git clone https://github.com/hummusonrails/aaif-agent-stack-examples.git
cd aaif-agent-stack-examples
docker run --rm -v "$PWD/agent-skills:/work" -w /work node:22-bookworm bash run.sh
docker run --rm -v "$PWD/open-responses:/work" -w /work node:22-bookworm bash run.sh
docker run --rm -v "$PWD/openenv:/work" -w /work node:22-bookworm bash run.shOpenSandbox creates containers of its own, so it runs where a Docker engine is available, on a Linux host or VM with Python 3 and Docker:
cd opensandbox
bash run.shEvery folder has a sample-output.txt with the output of the run shown in the video.
| Example | Project | Language | What runs |
|---|---|---|---|
agent-skills |
Agent Skills, skills-ref from PyPI |
Python | The skill is validated and turned into an agent's skill catalog, then its bundled script builds the follow-up list |
open-responses |
The published Open Responses OpenAPI spec | JavaScript | A two-request tool call against a local model provider that speaks the spec |
openenv |
openenv from PyPI |
Python | An OpenEnv server hosting a custom triage environment, stepped through by its client |
opensandbox |
opensandbox-server and opensandbox from PyPI |
Python | The OpenSandbox server on Docker, creating a python:3.12 sandbox for the reconciliation |
Prerequisites
- Docker to run the examples in the
node:22-bookwormimage, or any Linux shell withbash,curl, Python 3.11+ and Node 22 - For OpenSandbox: a Linux host or VM with a running Docker engine, Python 3 and
bash4+ - Internet access: each
run.shdownloads the project's current release from PyPI or its official site
agent-skills/invoice-aging/SKILL.md is the whole interface an agent sees: a name and description for discovery, then the steps, the inputs it expects and what it must never do (send messages or change accounting records). The bundled script lists invoices unpaid and past due on a reporting date, oldest first.
overdue check: passed, 5 invoices, USD 3914.50
exclusions check: passed, paid, due today, and future-due invoices absent
historical payment check: passed, payment after as-of date retained
open-responses/demo.mjs declares a lookup_incident tool, reads the model's function_call, answers it from incidents.csv and sends a function_call_output back with the same call_id. The model provider is a local server that speaks the spec (mock-provider.mjs), so it runs without an account; point endpoint at any provider that implements Open Responses to run it against a real model.
Tool call: lookup_incident {"incident_id":"INC-4821"}
On-call handoff: INC-4821: checkout-api P1 open, 843 customers affected. Page Maya Chen.
openenv/triage_env/server/environment.py implements reset, step and state. Production incidents with 1,000 or more affected users should be paged, other production incidents queued, and anything outside production dismissed. A correct call earns 1, paging the qualifying incident first earns 1.5, a wrong call costs 1, and an invalid action costs 1 without using a step.
step 1: INC-2841, page, reward 1.5, done False
step 2: INC-2842, queue, reward 1.0, done False
step 3: INC-2843, dismiss, reward 1.0, done True
episode score: 3.5
opensandbox/demo.py creates a sandbox from python:3.12, writes the reconciliation program and both CSVs into it, runs the program there, reads the report back and destroys the sandbox in a finally block.
Sandbox stdout: {"amount_mismatches": [{"invoice_id": "INV-1045", "invoice_usd": "62.00", "ledger_usd": "60.00"}], "duplicate_invoice_ids": ["INV-1044"], "invoice_total_usd": "455.50", "missing_in_ledger": ["INV-1046"], "unmatched_ledger_ids": ["INV-1099"]}
Reconciliation checks: passed
aaif-agent-stack-examples/
├── agent-skills/
│ ├── invoice-aging/
│ │ ├── SKILL.md # the skill: discovery metadata and instructions
│ │ ├── assets/invoices.csv
│ │ └── scripts/age_invoices.py
│ ├── setup.py # installs skills-ref from PyPI, checksum verified
│ └── run.sh
├── open-responses/
│ ├── demo.mjs # the tool-call exchange
│ ├── mock-provider.mjs # a local provider that speaks the spec
│ ├── incidents.csv
│ └── run.sh
├── openenv/
│ ├── triage_env/ # models, client and server for the environment
│ ├── demo.py # steps through an episode
│ ├── incidents.csv
│ ├── setup.py
│ └── run.sh
└── opensandbox/
├── demo.py # creates the sandbox and runs the reconciliation
├── reconcile.py # the code that runs inside the sandbox
├── invoices.csv
├── ledger.csv
├── fetch.py # downloads uv and the OpenSandbox packages, checksums verified
└── run.sh
Found a bug or have an idea for another realistic task? Open an issue or send a pull request.