THE LAB

A working zoo for learning real AI agents.

Agent Zoo is a live DrQ AI teaching lab: real agents, a serverless AWS backbone, and enough product polish to test the workflows like actual tools.

AT A GLANCE
AGENTS LIVEBusy Beaver · Minute Parrot · Know-It-Owl · Northstar Elephant
RUNTIMEBedrock · AgentCore Memory · Step Functions · Cognito · S3
STANDING COMPUTENone — billed per invocation
BUILT BYAntonio Qian · DrQ AI

Small enough to understand, real enough to matter: each agent is built one at a time, with its own workflow, storage, and permissions, free to try while traffic stays low.

01

Real agents

Every surface is connected to working infrastructure, not a static demo.

02

Serverless first

The platform keeps the stack small, observable, and cheap to run while traffic is low.

03

Built to teach

Each agent doubles as a concrete example for architecture, product, and AI workflow lessons.

HOW IT'S BUILT

One shared platform, three different workflow shapes.

Every agent sits behind the same Cognito user pool and API Gateway, and reports into the same tables — nothing per-agent here except which routes and knowledge bases an agent's own IAM role is allowed to touch. This is drawn with Busy Beaver's own diagramming engine and real AWS icons, pointed at this platform instead of a user's spec.

Not pictured, to keep this to the request path: every run also writes its output to S3 and an AuditLog row to DynamoDB via EventBridge, whether it succeeds or is rejected — and AppConfig feeds model IDs/thresholds to every Lambda here as a runtime config push, never a redeploy.

Busy Beaver

diagram-agent · Step Functions

Intake → CheckEntitlement → {AssistantEdit | RecognizeImage | GenerateSpec} (Bedrock Converse) → ValidateSpec (deterministic) → Report

Minute Parrot

meeting-agent · Step Functions with a real poll loop

Intake → CheckEntitlement → StartTranscriptionJob → Wait/Poll against Amazon Transcribe → ExtractUtterances (deterministic) → AssignSpeakers (Bedrock, forced tool use) → Summarize (Bedrock) → ValidateSummary (deterministic) → Report

Know-It-Owl

rag-agent · synchronous, no state machine

API Gateway → Lambda-per-request → Bedrock Knowledge Bases retrieve_and_generate against a shared S3 Vectors index, filtered per request by user_id/visibility

Northstar Elephant

northstar-elephant · one state machine, task_type-branched

TaskTypeDecision → {IngestIntake → ExtractExperiences (Bedrock) → ValidateExtraction (deterministic) → IngestReport | AnalyzeIntake → ParseJd (Bedrock) → CalculateMatch (deterministic) → SelectPriorityGap (deterministic) → SuggestNextAction (Bedrock) → ValidateNextAction (deterministic) → [GenerateResume (Bedrock) → ValidateResume (deterministic)] → AnalyzeReport} · deck_chat, a separate sync Lambda outside this state machine, reads/writes Bedrock AgentCore Memory directly for the persistent "talk to your deck" AI companion

RELIABILITY

Step Functions execution_id dedupes agent metering; Stripe webhooks dedupe on event.id. Any LLM output touching a stored result is re-validated by a deterministic Lambda before it lands anywhere — a rule engine, never the model's own word, decides what's valid.

SECURITY

Each agent gets its own least-privilege IAM role and can't call a tool or reach a knowledge base it doesn't declare. Admin sign-in reuses the same Cognito user pool but a separate App Client, so a user-facing token can't pass the admin API's authorizer.

COST

No standing compute or database — everything here is billed per invocation. DynamoDB + S3 + Athena for analytics, S3 Vectors instead of a standing OpenSearch cluster for RAG.

Start with the agents themselves, then use the lab notes and videos to unpack how they work.

Open the zoo