Course outline▾
Week 1 · The Foundations
- Day 1Demystifying AI — From Buzzword to Business Logic
- Day 2How Machines Actually Learn — Supervised, Unsupervised and Reinforcement Learning
- Day 3Inside Neural Networks — The Engine of Modern Deep Learning
- Day 4The AI Project Lifecycle — From Raw Data to Production Deployment
- Day 5The Math Behind the Magic — Why Linear Algebra and Probability Matter
- Day 6Data Preprocessing — Cleaning the Messy Reality of Enterprise Data
- Day 7Measuring Success — Understanding Accuracy, Precision, Recall and F1 Scores
Week 2 · Applied AI & APIs
- Day 8Introduction to LLMs & The Modern AI API Landscape
- Day 9Advanced Prompt Engineering — Few-Shot, Chain-of-Thought and Structured JSON
- Day 10Tokenization, Context Windows and Cost Optimization
- Day 11Embeddings and Vector Representations — How Machines Map Meaning
- Day 12Vector Databases — Storing and Searching Enterprise Knowledge
- Day 13Retrieval-Augmented Generation (RAG) — Chatting with Proprietary Documents
- Day 14RAG Evaluation and Hallucination Guardrails
Week 3 · Infrastructure & Hosting
- Day 15Introduction to AI Infrastructure — Hardware, Runtimes and Compute
- Day 16Local Model Execution — Running Open-Weight LLMs Securely with Ollama and vLLM
- Day 17Containerizing AI Workloads — Production Dockerfiles for Python APIs
- Day 18Docker Compose for Multi-Container AI Stacks
- Day 19Kubernetes for AI 101 — Pods, Deployments and Services for Model Serving
- Day 20Persistent Storage in Kubernetes — Managing State, Weights and Vector Indices
- Day 21High-Performance Networking — Ingress and Egress for AI Clusters
Week 4 · Enterprise Workflows
- Day 22Autonomous Agents — From Passive LLMs to Goal-Driven Execution
- Day 23Tool Use and Function Calling — Connecting LLMs to APIs, Databases and Shells
- Day 24Multi-Agent Orchestration — Supervisor, Worker and Evaluator Patterns
- Day 25Automated CI/CD — Automating the Software Lifecycle for AI Models
- Day 26Zero-Trust Security for AI — Sandboxing Ephemeral Execution and Model Egress
- Day 27Observability & Tracing for Agentic Systems (Telemetry, Logs, and Metrics)Coming soon · 2026-10-27 · 7 PM IST
- Day 28Human-in-the-Loop Architecture: Machine Second, Human First in PracticeComing soon · 2026-10-28 · 7 PM IST
- Day 29Managing Technical Debt, Drift, and Model Governance in Enterprise ITComing soon · 2026-10-29 · 7 PM IST
- Day 30The 10-Year Horizon: Architecting IT Strategy for the AI-Native EnterpriseComing soon · 2026-10-30 · 7 PM IST
Day 26: Zero-Trust Security for AI — Sandboxing Ephemeral Execution and Model Egress
2026-10-26 · 7 min read
Once an agent can run code (a Python script to analyse a dataset, a command on a server), the old network perimeter stops protecting you. The code was written by a model, and you cannot treat it as trusted. A zero-trust design starts from one assumption: the model will eventually produce something buggy, unsafe or compromised, so the system must stay safe anyway.
In plain terms: Letting an agent run code on your server is like letting a stranger use your office computer. You would give them a locked guest room with no network cable, a time limit, and a visitor badge that opens nothing important.
1. Runtime sandboxing: shrink the blast radius
Running generated code directly on a host or in a production container risks data theft, privilege escalation and damaging changes. Instead:
- Isolation. Run it in an unprivileged, ephemeral environment such as a gVisor sandbox, a Firecracker microVM or an unprivileged throwaway container. MicroVMs and gVisor give a stronger boundary than a plain container, because they do not share the host kernel directly.
- Immutable filesystem. Give it read-only access to the base system and a temporary in-memory disk that is destroyed as soon as the task ends.
- Resource throttling. Use Linux cgroups limits on CPU, memory, disk I/O and process count, so a runaway or malicious script cannot starve the machine.
2. Egress and privilege minimisation
- No network by default. A sandbox should start with no network access at all. If a task needs one external API, allow that single destination and keep everything else blocked, so nothing can be sent out.
- Least privilege. Database credentials handed to an agent should be read-only, limited to non-sensitive schemas and short-lived. Administrative actions, such as schema changes, need an authenticated elevation step.
Here is a practical starting point: a Python helper that runs untrusted code in a locked-down throwaway container. It assumes Docker is installed. For stronger isolation, add --runtime=runsc if you have gVisor set up, or use a microVM platform.
import subprocess, tempfile, pathlib
def run_untrusted(code: str, timeout_s: int = 10) -> str:
with tempfile.TemporaryDirectory() as d:
script = pathlib.Path(d, "task.py")
script.write_text(code)
cmd = [
"docker", "run", "--rm",
"--network", "none", # zero network access
"--read-only", # read-only root filesystem
"--tmpfs", "/tmp:size=64m", # small in-memory scratch space
"--memory", "256m", "--cpus", "0.5", # cgroup limits
"--pids-limit", "64", # no fork bombs
"--cap-drop", "ALL", # drop Linux capabilities
"--security-opt", "no-new-privileges",
"--user", "65534:65534", # unprivileged user
"-v", f"{script}:/task.py:ro",
"python:3.11-slim", "python", "/task.py",
]
try:
done = subprocess.run(cmd, capture_output=True, text=True, timeout=timeout_s)
except subprocess.TimeoutExpired:
return "Stopped: time limit exceeded"
return (done.stdout + done.stderr)[:4000] # cap the output size too
Treat the agent's execution environment as an untrusted runtime boundary. That is what lets you give agents real capabilities without handing them the keys to the enterprise.
Coming Up Next
Day 27: Observability and tracing for agentic systems: telemetry, logs and metrics.