A uv-workspace monorepo of the shared Python libraries that Foundry-built
agents install and extend. Each package is independently versioned and
ships as a wheel attached to a GitHub Release; adopters host the wheels
in their own internal index. Composition roots like strands-base-agent
wire these libraries into a runnable service - they do not re-implement
what lives here.
| Package | Purpose | Depends on |
|---|---|---|
foundry-agent-core |
DI container, protocols, types, exceptions, lifecycle | (none) |
foundry-agent-config |
YAML loader with env-var overrides, bounded input controls | (none) |
foundry-agent-fastapi |
CORS / error / logging middleware, request models, health router | foundry-agent-core |
foundry-strands-agent |
AWS Strands SDK adapter - backend, factory, orchestrator, tool loader | foundry-agent-core, foundry-agent-config |
foundry-agent-core ◄── foundry-agent-fastapi
▲
├──────────────── foundry-strands-agent
│ ▲
foundry-agent-config ───────────┘
just setup # uv sync + pre-commit install
just check # full gate: ruff lint + format check + basedpyright + tests
just test # unit + integration tiers across all packages, looped per package
just test-unit # the `tests/unit/` tier only
just test-integration # the `tests/integration/` tier only; 0 collected is not a failureHTML coverage is always on, written per package to htmlcov/<module>/index.html
from each package's pytest addopts; there is no separate coverage recipe.
Per-package commands:
just test-pkg foundry-agent-core # test a single package
just check-pkg foundry-agent-core # lint + format + type-check + test, one package
just build foundry-agent-core # build a single wheeljust --list shows the full recipe surface, grouped as Setup & Dependencies,
Code Quality, Testing, and Building & Release - the same grouping and shared
recipe names used by the sibling temporal-packages repo.
| If you want to… | Read |
|---|---|
| Install the workspace and build a wheel | Quickstart |
| Run the daily developer loop | Local development |
| Understand the codebase (layout, packages, conventions) | AGENTS.md |
| See per-package summaries | Packages |
| Consume these packages from a downstream repo | Adopting |
| Contribute changes | CONTRIBUTING.md |
Releases ship as GitHub Releases - adopters host the wheels in their own internal index (no public PyPI yet).
- PRs to
develop→ CI runs (lint, type-check, test, dry-run build, bandit narrow set) - PRs to
main→ release validation runs - Tag a release on
main→ builds wheels + Syft SBOM + Grype scan per changed package and attaches them to the GitHub Release
See docs/foundry/releases/release-channels.md for internal RC/dev publishing and docs/foundry/releases/adopting.md for the adopter flow.