MODULE 1  ·  DAY 1

Container-Native GenAI

The open standard, not Docker

AI Colima Rancher OrbStack Podman

Gourav Shah  ·  School of DevOps & AI  ·  Lesson + Lab + Quiz

M1·01

Five ideas carry the rest of the course

Five ideas that carry the course

12 34 5 Container-native beats Docker-native, thanks to OCI and the Compose Spec What containers buy an AI stack: package, serve, isolate, ship The Apple Silicon GPU limit, and the fix: run the model natively The OpenAI-compatible endpoint: one contract, swap the engine behind it The 2026 map: declarative agents, orchestration, and the Acme ladder
M1·02

1 · Container-Native, Not Docker-Native

M1·03

The assumption that just broke

A pricing change, not a technical one

the old assumption container = Docker Desktop paid over 250 staff or $10M revenue, a pricing change, not a technical one what still holds container = the open OCI standard
M1·04

Container-native, not Docker-native

One compose.yaml, four runtimes, same result

compose.yaml open Compose Spec Colima OrbStack Rancher Desktop Podman Desktop Same app identical containers
M1·05

2 · What Containers Buy an AI Stack

M1·06

What containers buy an AI stack

Package, serve, isolate, ship

Package Pin Python, CUDA, library versions, "works everywhere" Serve Embed, vector DB, API behind fixed ports, no clutter Isolate Conflicting deps? Each framework in its own tightly sealed box Ship Push to any OCI registry, pull anywhere
M1·07

3 · The Apple Silicon GPU Reality

M1·08

Guest rooms with no power outlets

No virtual GPU on macOS

The building (your Mac) Mains power = Metal GPU + unified memory Guest rooms = containers no outlet on the wall, they fall back to battery (CPU) Hypervisor.framework exposes no virtual GPU Model inside a container runs 3–6× slower on CPU
M1·09

Native server, containerized everything else

Bridged via host.docker.internal

macOS host (Apple Silicon) Ollama · NATIVE Metal-accelerated unified memory listens on :11434 Container runtime App (Streamlit) Agent (crew) Vector DB (ChromaDB) http://host.docker.internal :11434
M1·10

4 · The 2026 Map: Declarative Agents vs Orchestration Frameworks

M1·11

The 2026 map: declarative vs orchestration

Start declarative, add orchestration when needed

Declarative agents (M6) Who the agent is + what tools it has, written in plain files The runtime executes them Change a markdown file → change the behaviour Orchestration (M7) LangGraph, deterministic control flow explicit state machines, branching Retries, human-in-the-loop checkpoints For hard sequencing a declarative agent can't self-determine add only when needed
M1·12

Anatomy of a declarative agent

Identity, skills, tools, guardrails

A declarative agent AGENTS.md / SOUL.md who the agent is, its role and intent SKILL.md reusable capabilities it can call MCP tool connections what it can reach in the world Guardrails limits on what it may do
M1·13

5 · The Acme Use Case + The Build Ladder

M1·14

Meet Acme, two connected tools

Runbooks nobody reads, two connected tools

Acme's runbooks DAY 1 · GenAI Docs Assistant Naive RAG: question → docs → answer used as a tool DAY 2 · Agentic Support Agent → Incident Crew single → multi-agent
M1·15

The build ladder, one step per module

One module, one rung, one compose.yaml

M1 model M2 serve M3 scale M4 package M5 RAG M6 agent M7 crew M8 · Ship + Capstone ← DAY 1 · Serve & Package DAY 2 · RAG → Agentic → Ship →
M1·16

6 · The OpenAI-Compatible Endpoint: the Universal Contract

M1·17

One universal contract: the OpenAI-compatible endpoint

Same socket, swap the engine behind it

Ollama vLLM llama.cpp /v1/chat/completions Your app / agent code never changes
M1·18

TO THE LAB

Build it once. Run it anywhere.

Prove the wiring yourself, hands on

throwaway container host.docker.internal:11434 a real response back Ollama native · Metal GPU

Now open Module 1 · Lab.  ·  Gourav Shah · School of DevOps & AI

M1·19