Secure, observable, multi-tenant infrastructure for building and validating AI workflow systems.
The testbed is designed to validate AI workflow systems under realistic constraints:
- strict tenant isolation
- policy-aware tool execution
- auditable traces and evidence
- reproducible quality and security gates
It provides a practical environment for architecture hardening, scenario validation, and production-readiness checks.
- Node.js 18+
- Python 3.11+ (recommended)
- Git
- Docker (optional, for full local stack)
git clone https://github.com/provability-fabric/pf-testbed.git
cd pf-testbed
npm ci
python -m pip install -r requirements.txt
python -m pip install -r testbed/tools/reporter/requirements.txtnpm run validate:workflows
npm run retrieval:contract-check
npm run ci:verifymake up
make statusCore endpoints:
- Gateway:
http://localhost:3003 - Ingress:
http://localhost:3001 - Ledger:
http://localhost:3002 - Grafana:
http://localhost:3100 - Prometheus:
http://localhost:9090
| Area | Purpose |
|---|---|
testbed/runtime/gateway |
Orchestration, routing, decision-path traces, metering |
testbed/ingress/selfserve |
Self-serve onboarding and request validation |
testbed/runtime/ledger |
Safety case packaging and evidence workflows |
testbed/runtime/retrieval-gateway |
Retrieval contracts, tenant isolation, signed receipts |
testbed/runtime/egress-firewall |
Sensitive content detection and egress certificates |
testbed/runtime/policy-kernel |
Policy kernel (tests currently excluded; see CI notes) |
testbed/tools |
Security gates, probes, metering, reporting |
testbed/scenarios |
End-to-end business and technical journey fixtures |
npm run validate:workflows
npm run retrieval:contract-check
npm run ci:verify
npm run typecheckmake up
make down
make logs
make statusnpm run security:test
make evidenceThis is the primary Node/TypeScript quality gate. It runs, in order:
npm run validate:workflows— Python check that workflow references resolvenpm run lint— ESLint on gateway, ingress self-serve, and ledger entrypointsnpm run format:check— Prettier ontestbed/**/*.{ts,js,json,md}npm run typecheck—tscfor gateway, ingress self-serve, and ledger projectsnpm test— Jest tests undertestbed/
After ci:verify passes locally, also run npm run retrieval:contract-check before pushing; the GitHub Actions workflow runs both plus Python reporter tests.
Two suites are listed in testPathIgnorePatterns in jest.config.js because they target APIs that have diverged from the current runtime (AgentRunner / PolicyKernel). Re-enable them by aligning implementations or updating tests.
Workflows live under .github/workflows/. The main continuous integration job is ci.yml (workflow integrity, ci:verify, retrieval contract validation, reporter pytest, security). Use that file as the source of truth for what runs in CI.
- Contract-first boundaries between modules and services
- No imports from private internals across package boundaries
- Tenant isolation and signed evidence by default
- Deterministic local and CI behavior
docs/quickstart.md— standard onboarding pathdocs/quickstart_byo_agent.md— bring-your-own-agent integration
Licensed under Apache 2.0. See LICENSE.