Agentic AI Engineer — Agent Infrastructure, Platforms & Production Systems
Target Roles: The Staff / Senior / Lead / VP agentic-AI engineering postings collected in jd.md — Citi (Lead Agentic AI Engineer VP; Agentic AI Technical Lead), Docker (Staff SWE, Agentic Platform), Cohere (Senior SWE, Agent Infrastructure), Temporal (Staff SWE, AI Foundations), Juniper Square (Staff SWE, AI), Redcan.ai (Staff SWE, Agentic AI Products), Wolters Kluwer (Senior Full-Stack, AI Platform & Agents), OpenAI (SWE / Security Engineer, Agent Infrastructure/Security), Anthropic (Agent Prompts & Evals / Claude Code), LiveKit (Staff Rust SDK, real-time agents), RBC (Staff Engineer, Agentic AI).
What this track is (and what it is not). This is not "call the OpenAI API and add a chatbot." It is the layer those roles actually hire for: the infrastructure, platform, and production discipline that makes agents reliable, secure, evaluable, multi-tenant, durable, and cheap enough to run at enterprise scale. You will build the mechanisms the frameworks only expose — the agent runtime, the MCP server, the durable workflow engine, the sandbox, the guardrail chain, the eval harness, the multi-tenant gateway — so you can debug them at 2 a.m. and defend them in a Staff/Principal interview.
Relationship to the Senior AI Engineer track. That track goes down the stack — transformer internals, autograd, sampling, quantization, distributed training — the model mechanisms. This track goes up and around the model — the agent and platform mechanisms. They share a spine (the ReAct loop, tool calling, RAG, evaluation appear in both) but the lens is different: there you build the sampler; here you build the runner, the sandbox, the durable workflow, and the tenant boundary that call it. Where a topic is covered at model-depth there, we cross-link and go platform-deep here.
Duration: ~30 weeks core (≈7 months) at one phase/1.5 weeks, extendable with the capstone. Seniority Target: Senior → Staff → Principal / Lead IC — the person who owns the agent platform, makes the reliability/cost/latency/security tradeoff, and is the escalation point when an agent loops, leaks a tool secret, hallucinates a tool call, exfiltrates a customer record, or blows the token budget. Goal: Make you the engineer who can architect a secure, multi-tenant, durable, evaluated agent platform at the system level and debug it at the tool-schema, MCP-message, event-replay, capability-check, injection-vector, judge-calibration, cache-key, quota-bucket, and trace-span level — across the agent runtime, tool integration, retrieval, orchestration, durability, sandboxing, security, evaluation, serving, tenancy, and observability.
Why This Curriculum Exists
Every JD in jd.md is a variation on one sentence: "build the platform that runs agents reliably in production." Read them together and the same words recur — agent infrastructure, agentic platform, MCP, tool calling, context engineering, ReAct/ReWOO, GraphRAG/LightRAG/RAPTOR, multi-agent, durable execution, sandboxing, secure execution, LLM-as-judge, golden datasets, behavioral regression, guardrails, multi-tenant, observability, cost/latency optimization, human-in-the-loop. None of those are "prompt engineering." They are distributed-systems, security, and evaluation problems that happen to have an LLM in the loop.
The discipline rests on five load-bearing truths this track hammers in every phase:
- The model proposes, the application executes. The LLM is a stochastic oracle that emits text. It never runs a tool, moves money, or reads a file — your code does, after validating. Every security, reliability, and correctness property lives on your side of that trust boundary. (Phases 02, 03, 09, 10, 13.)
- Reliability compounds multiplicatively. A 95%-reliable step, ten steps deep, is \(0.95^{10} \approx 0.60\). Agents are loops over an unreliable oracle, so the whole craft is constraining and verifying that oracle: typed tools, validation, retries, critics, evals, human gates. "Least-agentic that works" is a design principle, not laziness. (Phases 00, 01, 07, 11.)
- Untrusted text becomes instruction. An LLM mixes instructions and data in one channel and cannot reliably tell them apart, so any text it reads — a web page, a tool result, a document, its own memory — can become a command. Prompt injection has no general fix; it is contained architecturally (least privilege, allow-lists, output scanning, human approval), never prompted away. (Phase 10, threaded everywhere.)
- Every request costs money and time, and both are engineered, not observed. Tokens, cache hits, model routing, latency budgets, quotas — margin is built. You instrument cost and latency on day one or you find out from the invoice. (Phases 00, 14.)
- An agent you cannot evaluate, you cannot ship. "It worked in the demo" is a sample of one from a distribution. Golden datasets, trajectory evals, LLM-as-judge, behavioral regression tests, and evals-as-CI-gates are the difference between a demo and a platform. (Phase 11, threaded everywhere.)
So this track is built on two non-negotiables:
- Every mechanism in the JDs gets implemented, not just described — the ReAct/ReWOO runner, the JSON-Schema tool validator and repair loop, the MCP JSON-RPC 2.0 server and client, the context assembler and intent router, the hybrid retriever with RRF and reranking, the RAPTOR tree and mini-GraphRAG, the multi-agent message bus and critic loop, the event-sourced replay-safe workflow engine with a human-approval signal, the capability-gated sandbox, the layered injection guardrail chain, the golden-dataset + trajectory + LLM-judge eval harness with a regression gate, the async streaming agent service, the multi-tenant authz/isolation/quota gateway, the model-router + semantic-cache + cost-meter + OTel tracer, and the spec→plan→apply-patch coding loop. You build a working, tested miniature of each (see LAB-STANDARD.md).
- Everything is taught to the depth interviews and incidents demand — why an agent loop is
not replay-safe but a durable workflow is; the exact JSON-RPC handshake MCP does at
initialize; why0.95^10 ≈ 0.60decides your architecture; the difference between ReAct's interleaving and ReWOO's plan-then-execute token economics; how RAPTOR's recursive clustering answers a question BM25 can't; why a shared vector index is the #1 multi-tenant leak channel; how an indirect prompt injection in a fetched web page exfiltrates a secret via a markdown image URL; why LLM-as-judge needs a human-agreement (Cohen's κ) check before you trust it in CI.
How Each Phase Teaches (the "many ways of explaining")
| Document | Voice | What it gives you |
|---|---|---|
README.md | the syllabus | why the phase exists, concept map, lab specs, integrated-scenario ideas, deliverables checklist, key takeaways, and which JD(s) it answers |
WARMUP.md | the professor | zero-to-staff primer — every term from first principles, the mechanism under the hood, the math/diagrams, lab guidance, success criteria, interview Q&A, references |
HITCHHIKERS-GUIDE.md | the senior who's been there | the compressed practitioner tour — 30-second mental model, the numbers to tattoo on your arm, the framework one-liners, war stories, beginner mistakes |
DEEP-DIVE.md | the core contributor | the technical internals & mechanism — data structures, algorithms, invariants, complexity, and a worked trace of how it actually runs |
PRINCIPAL-DEEP-DIVE.md | the principal engineer | the system-design & architecture view — tradeoffs, scaling & performance envelope, failure modes & blast radius, and the "looks wrong but intentional" calls |
CORE-CONTRIBUTOR.md | the maintainer | how the real system/framework implements this under the hood — the non-obvious source-level decisions, API evolution, gotchas, and what our miniature simplifies |
STAFF-NOTES.md | the staff engineer | judgment & seniority signal — own-vs-use, a real when-to-reach-for-it decision framework, code-review red flags, war stories, and the interview signal |
lab-*/ | the lab bench | a runnable, test-verified implementation: lab.py (TODOs) → your code → solution.py (reference) → test_lab.py (the proof). Validation is pytest. |
The lab engineering standard is in LAB-STANDARD.md. Read it before Lab 01.
The Phases
| # | Phase | You build (flagship lab) | JD competency it answers |
|---|---|---|---|
| 00 | The Agentic Engineer's Mental Model: Trust Boundaries, Reliability & Cost Math | an agent reliability + cost + latency calculator and a workflow-vs-agent decision resolver (0.95^n, tokens/turn, $/task, p95 budget) | the design-review arithmetic behind every JD; "least-agentic that works" |
| 01 | The Agent Loop From Scratch: ReAct, ReWOO & Plan-Execute-Replan | a multi-mode agent runtime (ReAct interleaved / ReWOO plan-then-execute / plan-execute-replan) with an injected policy, trace, and step budget | Citi ReAct/ReWOO; agent orchestration; reasoning loops |
| 02 | Tool Calling & Structured Output: JSON Schema, Validation & the Repair Loop | a tool-calling engine — JSON-Schema validation, typed dispatch, errors-as-observations, and a schema-guided repair loop | tool calling; structured output; function calling (all JDs) |
| 03 | Model Context Protocol (MCP): Build a Server & Client From Scratch | a working MCP server + client over stdio — JSON-RPC 2.0, initialize/capabilities, tools/resources/prompts, permission gating, notifications | Docker & Citi MCP servers; Anthropic; clean integration boundaries |
| 04 | Context Engineering: Prompt Assembly, Memory & Intent Routing | a context assembler (budgeted prompt packing) + intent router/classifier (avoid workflow collisions) + tiered memory | Citi context/prompt/intent engineering; context management |
| 05 | Retrieval Foundations: Chunking, Embeddings, Hybrid Search & Reranking | a hybrid retriever — chunker + hashing embedder + a from-scratch ANN + BM25 + RRF fusion + cross-encoder rerank + recall@k eval | RAG; pgvector/Pinecone/Weaviate/FAISS/Chroma; semantic search |
| 06 | Advanced Retrieval: GraphRAG, LightRAG & RAPTOR | a RAPTOR recursive-summary tree + a mini-GraphRAG (entity/relation graph + community summaries) over a graph store | Citi GraphRAG/LightRAG/RAPTOR/Neo4j/pgvector |
| 07 | Multi-Agent Orchestration: Roles, Message Bus & Coordination | a multi-agent orchestrator — supervisor/worker/critic roles, a message bus/blackboard, typed handoffs, and a critique-revise consensus loop | Citi/RBC multi-agent systems; AutoGen/CrewAI/LangGraph/ADK |
| 08 | Durable Agent Execution: Workflows, Retries & Crash-Safety (Temporal-class) | a replay-safe workflow engine — event sourcing, deterministic replay, retries w/ backoff, idempotency, and a human-approval signal / pause-resume | Temporal durable execution; long-running agents; HITL |
| 09 | Agent Runtime & Secure Execution: Sandboxing, Capabilities & Resource Limits | a capability-gated sandbox executor — policy-enforced fs/net/tool capabilities, resource/step limits, egress control (a pure-Python model of a container jail) | Docker secure execution/sandboxing/containers; agent runtime |
| 10 | Agent Security: Prompt Injection, Threat Modeling & Guardrails | a red-team + guardrail harness — direct/indirect/memory injection attacks vs a layered defense (input guard, allow-list, exfil scan, HITL gate); before/after | OpenAI Agent Security; Docker; OWASP LLM Top 10; secure AI |
| 11 | Agent Evaluation: LLM-as-Judge, Golden Datasets & Behavioral Regression | an agent eval harness — task-success + trajectory eval + LLM-judge stand-in (bias/κ) + behavioral regression gate over a golden dataset | Docker/Juniper/Wolters/Anthropic evals; LLM-as-judge; golden datasets |
| 12 | Production Agent Services: FastAPI, Async, Streaming, State & Events | an async agent service — streaming (SSE), an event bus / pub-sub, idempotency keys, and a state/cache layer, with a stdlib fallback | Citi/Docker FastAPI/asyncio/event-driven/microservices/pub-sub/cache |
| 13 | Secure Multi-Tenant Platform: AuthN/Z, Isolation, Secrets & Quotas | a multi-tenant agent gateway — OAuth-shaped authz, RBAC, tenant-scoped isolation (the AI leak channels), per-tenant vector namespaces, secret custody, token-bucket quotas | Citi multi-tenant; OpenAI secure APIs/OAuth/authz/encryption |
| 14 | Cost, Latency & Observability: Caching, Routing, Tracing & Metering | an agent gateway — model router/cascade, semantic + prefix cache, a cost meter, OTel-style trace spans, and a degradation ladder | Cohere/Citi cost/latency/caching/observability optimization |
| 15 | AI-Native SDLC: Spec-Driven Development, Reusable Commands & Coding Agents | a coding-agent harness — spec → plan → apply-patch → verify loop over a tiny repo, with a reusable-command/skill registry | Temporal/Anthropic agentic coding (Claude Code/Codex); AI-native SDLC |
| 16 | Real-Time & Voice Agents (LiveKit-class) | a voice-agent turn-taking state machine — VAD/endpointing, barge-in, and a streaming STT→LLM→TTS pipeline sim under a latency budget | LiveKit real-time/voice agents; streaming; latency |
| 17 | Capstone: An Enterprise Agentic Platform, End to End | an integration capstone that composes P01–P14 into one scored, secure, durable, multi-tenant, evaluated, observed agent platform | the whole stack; the Staff/Principal system-design interview |
Part II — Frameworks Deep Dive (Phases 18–24)
Phases 00–17 build the mechanisms framework-agnostically. Part II turns to the real frameworks a principal engineer is expected to know cold, and studies each by building a faithful miniature of its execution model plus a principal-depth guide to the real API, gotchas, and when to choose it. Every framework named in jd.md (Citi's LangGraph/CrewAI/AutoGen/Google ADK; Temporal's OpenAI Agents SDK/Pydantic AI) — plus AWS's AgentCore and the Amazon Bedrock platform under it — gets its own phase with multiple labs.
| # | Framework | Labs you build | Why it matters |
|---|---|---|---|
| 18 | LangGraph | StateGraph (Pregel/BSP) engine · persistence & checkpointing · human-in-the-loop interrupts | the most-used low-level agent orchestration framework; Citi names it |
| 19 | CrewAI | sequential crew engine · hierarchical (manager) process · Flows (@start/@listen/@router) | high-level role/crew multi-agent; Citi names it |
| 20 | AWS Bedrock AgentCore | runtime & session isolation · Gateway + Policy (Cedar) · Memory strategies | the framework-agnostic AWS operational layer (runtime/memory/gateway/identity/observability) |
| 21 | OpenAI Agents SDK | Agent + Runner loop + tools · handoffs · guardrails & sessions | lightweight agents/handoffs/guardrails; Temporal names it |
| 22 | Google ADK | LlmAgent + tools + Runner/Events · workflow agents (Sequential/Parallel/Loop) · sessions/state/callbacks | code-first, deterministic-workflow + LLM agents; Citi names it |
| 23 | AutoGen & Microsoft Agent Framework | AutoGen GroupChat · MSAF graph Workflows · orchestration patterns | the AutoGen + Semantic Kernel successor; Citi names AutoGen |
| 24 | Amazon Bedrock (the FM platform) | unified invocation & capacity (Converse · on-demand/provisioned/batch) · Guardrails policy engine · Knowledge Bases (managed RAG) | the managed foundation-model platform under AgentCore — model catalog, capacity math, content-safety guardrails, managed RAG; Bedrock vs AgentCore vs Agents-for-Bedrock + competitor decision framework (Azure AI Foundry, Vertex AI, Databricks, OpenAI, inference clouds) |
Part III — Cloud AI Platforms, MLOps & Production Infrastructure (Phases 25–28)
The AI/ML-Engineer and OKE-SRE JDs ask for the production plane around the model: managed cloud AI platforms, MLOps discipline, data/feature engineering at scale, and Kubernetes-native operations. Each phase builds a faithful stdlib miniature of the real system plus the four principal-depth docs.
| # | Area | Labs you build | Why it matters |
|---|---|---|---|
| 25 | Managed Cloud AI Platforms | training jobs + HPO + registry · real-time/batch endpoints + deployment safety · ML-pipeline DAG engine | SageMaker / Vertex AI / Azure ML — the managed train→register→deploy loop every cloud JD names |
| 26 | MLOps | experiment tracking · model registry + CI promotion gate · drift detection + retraining trigger | MLflow/W&B-class tracking, registry, CI/CD & drift monitoring — the JD's "MLOps best practices" |
| 27 | Data & Feature Engineering at Scale | feature store (point-in-time joins) · Beam/Dataflow engine · warehouse-native ML | feature stores, Dataflow, BigQuery ML, Databricks — the data-engineering half of the AI/ML JD |
| 28 | Kubernetes & Cloud-Native AI Infra (SRE) | reconciliation control loop · CI/CD gates + image scanning + signing · observability/SLOs/alerting | OKE/K8s ops, autoscaling, GitOps, Prometheus/Grafana, error budgets — the OKE MLOps-SRE JD |
Part IV — GenAI Frameworks & ML Foundations (Phases 29–32)
| # | Area | Labs you build | Why it matters |
|---|---|---|---|
| 29 | LangChain (Core) | LCEL & the Runnable protocol · RAG chain · the classic AgentExecutor | LCEL/chains/retrievers/agents; the JD's LangChain line; the LangChain-vs-LangGraph decision |
| 30 | Hugging Face | pipeline() abstraction · BPE tokenizer + generate() · PEFT/LoRA + the Hub | Transformers/pipelines/Hub/PEFT; the JD's Hugging Face line |
| 31 | Cohere Platform | Rerank cross-encoder · grounded generation + inline citations · Embed + two-stage RAG | Command/Embed/Rerank + North grounded RAG; the Cohere Forward-Deployed Engineer JD |
| 32 | ML & Deep Learning Foundations | supervised training loop · k-means + PCA · tabular RL (Q-learning + bandits) | TensorFlow/PyTorch, supervised/unsupervised/RL & tuning — the ML fundamentals every AI/ML JD assumes |
Part V — Eval-Driven Development (Phase 33)
| # | Area | Labs you build | Why it matters |
|---|---|---|---|
| 33 | Eval-Driven Development (EDD) | EDD harness (graders, pass@k, regression gate) · SWE-bench-miniature (execution-graded coding evals) · error-analysis flywheel + eval-gated delivery | building agentic systems for software delivery evals-first; the Cohere "robust evaluation frameworks, well beyond trial and error" line; complements Phase 11 (eval mechanisms) & Phase 15 (coding-agent harness) |
Use the sidebar for the full clickable table of contents, and see GLOSSARY.md / CHEATSHEET.md for the running references. interview-prep/ has per-company drills; system-design/ has full platform-design walkthroughs.
How to Use This Track
- Read Phase 00 end to end first — it builds the mental model (the trust boundary, the
0.95^nreliability math, the cost/latency dials, "least-agentic that works") that every later phase plugs into. - For each phase: read
WARMUP.md(professor), skimHITCHHIKERS-GUIDE.md(the numbers), do the lab (lab.pyred → green againsttest_lab.py), then read the four principal deep-dives —DEEP-DIVE.md(mechanism),PRINCIPAL-DEEP-DIVE.md(architecture),CORE-CONTRIBUTOR.md(how the real system does it), andSTAFF-NOTES.md(judgment & interview signal). - Work phases roughly in order — the loop (P01), tools (P02), and MCP (P03) underpin everything; orchestration (P07) assumes the loop; the capstone (P17) assumes P01–P14.
- Use interview-prep/ and system-design/ as running references; map each company in jd.md to its heaviest phases (Citi → 03/04/06/07/13; Docker → 03/09/10/11; Temporal → 08/15; OpenAI Security → 09/10/13).
Cross-Cutting Themes (the agentic platform engineer's lenses)
- The trust boundary is the product. Model proposes, app executes. Every phase either sits on your side of that line (validation, sandbox, authz, guardrail) or defines where the line is. Draw it wrong and the injection/exfil/privilege bug is unavoidable no matter the prompt.
- Reliability is a budget you spend, not a hope.
0.95^nsays how many autonomous steps you can afford before you must checkpoint, verify, or ask a human. Durable execution (P08), evals (P11), and multi-agent critics (P07) all exist to buy steps back. - Context is finite and expensive. The window is a budget; retrieval (P05/06), memory and compression (P04), and caching (P14) all fight the same scarcity. "Put more in the prompt" is a cost and a latency decision, and past some point a quality regression (lost-in-the-middle).
- Agents are distributed systems. Retries, idempotency, at-least-once vs exactly-once, event sourcing, backpressure, quotas, tenancy, tracing — the agent parts are new, the systems parts are the ones that page you. P08/P12/P13/P14 are systems phases with an LLM inside.
- Every claim maps to a number.
0.95^10,$/resolved-task,recall@k, p50/p95/p99, tokens/turn, cache-hit-rate, κ agreement, quota buckets. You do this arithmetic before the design review, not after the incident. Every phase ends with a number you can defend. - Security is architectural, not promptable. You cannot instruct a model into being safe. Least privilege, allow-lists, sandboxing, output scanning, human-in-the-loop, and tenant isolation are code. Prompting is a mitigation, never a control.