This repository is a small practice project for learning the codex-multiagent-development workflow on a real but low-risk codebase.
The lab goal is to build a simple FastAPI service with:
GET /healthGET /tasksPOST /tasks
Use this repository together with CODEX_MULTIAGENT_LAB.md. If you are running a team workshop, also use FACILITATOR_GUIDE.md.
Use Python 3.11 through 3.13 for this lab. Python 3.14 is not recommended for the current pinned FastAPI and Pydantic stack.
- The multi-agent workflow files from
codex-multiagent-development - A minimal Python project file
- A bootable FastAPI app with
GET /health - A passing smoke test for the health endpoint
docs/tech.mdfor research notes
The application is intentionally incomplete. The team should use Codex to:
- create a spec
- plan the task groups
- implement the remaining API behavior
- review it
- QA it
- document it
The lab work still to be done is:
GET /tasksPOST /tasks- task input validation
- tests for the task endpoints
- review, security review, QA, and documentation artifacts for the new work
This repository also includes a seeded lab spec at .codex/specs/2026-07-14-task-api-lab/ if you want to start from a prepared workshop plan instead of asking Codex to draft one from scratch.
This repo starts from a known-good baseline so the workshop does not get derailed by setup issues. The team should learn the multi-agent workflow on top of a runnable app, not spend the first half debugging environment problems.
The included Makefile prefers python3.13, then python3.12, then python3.11, and only falls back to python3 if needed.
For Windows, use the included setup.ps1 / run.ps1 or setup.bat / run.bat helpers instead of make.
macOS / Linux:
make setup
source .venv/bin/activate
make test
make runWindows PowerShell:
.\setup.ps1
.\.venv\Scripts\Activate.ps1
.\.venv\Scripts\pytest.exe
.\run.ps1Windows Command Prompt:
setup.bat
.\.venv\Scripts\activate.bat
.\.venv\Scripts\pytest.exe
run.batIn another terminal:
macOS / Linux:
curl http://127.0.0.1:8000/healthWindows PowerShell:
curl.exe http://127.0.0.1:8000/healthWindows PowerShell alternative:
Invoke-RestMethod http://127.0.0.1:8000/healthExpected response:
{"status":"ok"}Then start Codex:
codexThen prompt Codex with:
Read AGENTS.md and inspect this repository. Then use prompts/scope.md to create a spec for adding GET /tasks and POST /tasks to this FastAPI service. Keep GET /health unchanged. Include tests, QA, and documentation.
Or, if you want to start from the seeded lab spec:
Read AGENTS.md and inspect this repository. Then review the seeded spec in .codex/specs/2026-07-14-task-api-lab/ and execute it to completion.
Before the lab begins:
- the starter test command should pass
- the starter run command should start the API successfully
GET /healthshould return{"status": "ok"}
That gives the team a stable base before the real feature work begins.
These will not work until the team completes the lab feature:
curl http://127.0.0.1:8000/tasks
curl -X POST http://127.0.0.1:8000/tasks \
-H 'content-type: application/json' \
-d '{"title":"Write workshop notes"}'
curl http://127.0.0.1:8000/tasksOne reasonable finished behavior would be:
[]then:
{"id":1,"title":"Write workshop notes","completed":false}then:
[{"id":1,"title":"Write workshop notes","completed":false}]task-api-lab-starter/
├── AGENTS.md
├── agents/
├── app/
│ ├── __init__.py
│ └── main.py
├── docs/
│ └── tech.md
├── Makefile
├── prompts/
├── run.bat
├── run.ps1
├── scripts/
├── setup.bat
├── setup.ps1
├── skills/
├── steering/
├── tests/
│ └── test_api.py
├── pyproject.toml
└── README.md