This post is my submission for DEV Education Track: Build Multi-Agent Systems with ADK.
A distributed multi-agent system that researches a topic, has the research
critiqued, loops until an editor approves it, then writes a course module.
The Agent Development Kit and the Agent-to-Agent protocol are both open source,
so the multi-agent design itself is unchanged β three agents still run as
independent HTTP services that discover each other through A2A agent cards.
This starts the three A2A servers, waits for their agent cards, runs the
pipeline, writes results to output/, and shuts the servers down.
The codelab ships a browser front end; this is the local equivalent. One command
brings up the whole system β the web process starts the three A2A servers on
launch and stops them on exit, so there is nothing else to run:
.venv\Scripts\python.exe scripts\run_web.py # then open http://localhost:8080
Type a topic and press Build the course. The page shows the three agents as a
live pipeline diagram: each box is a separate process, and it lights up as its
A2A reply arrives β researcher researching β done, judge reviewing β approved
(or looping the researcher back for another pass), content_builder writing β
done. An event log timestamps each step, and the finished module renders as
formatted markdown in the "paper" pane on the right.
Progress is pushed to the browser over Server-Sent Events
(GET /api/runs/{id}/events); a 5-second poll for the finished document is the
fallback if the stream hiccups. The same backend the CLI uses drives it, so a run
here is identical to run_all.py β it just does not write to output/.
Other endpoints: GET /api/health (model + which agent cards are up) and
POST /api/runs (start a run, returns {"run_id": ...}).