41554 blogs · [ { "id": "01a087e5-1ab7-73af-af10-5fcafa21b684", "title": "Accessible Agent Interfaces for Keyboard, Screen Reader, and Voice Users", "url": "https://stanleycyang.com/writing/accessible-agent-interfaces", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab7-73af-af10-5fcafae94db5", "title": "Adopting OpenTelemetry GenAI Semantic Conventions Without Breaking Observability", "url": "https://stanleycyang.com/writing/opentelemetry-genai-semantic-conventions", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab7-73af-af10-5fcafb5842a0", "title": "Agent Swarms: When Multiple AI Agents Help—and When They Make Things Worse", "url": "https://stanleycyang.com/writing/agent-swarms-when-multiple-agents-help", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab7-73af-af10-5fcafb7a6d38", "title": "AI Agent Evals in CI: A Release Gate for Prompts, Models, and Tools", "url": "https://stanleycyang.com/writing/ai-agent-evals-ci", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab7-73af-af10-5fcafbf35316", "title": "AI Agent Memory Poisoning: Threat Model, Detection, and Recovery", "url": "https://stanleycyang.com/writing/agent-memory-poisoning-defense", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab7-73af-af10-5fcafc4c3eed", "title": "AI Agent Memory with Postgres and pgvector: Schema, Retrieval, and Forgetting", "url": "https://stanleycyang.com/writing/ai-agent-memory-postgres-pgvector", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab7-73af-af10-5fcafcb60069", "title": "Automatic Prefix Caching for Agent Workloads", "url": "https://stanleycyang.com/writing/automatic-prefix-caching-agent-workloads", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab7-73af-af10-5fcafcf9f8bf", "title": "Backpressure for AI Agent Systems", "url": "https://stanleycyang.com/writing/backpressure-agent-systems", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab7-73af-af10-5fcafd688fea", "title": "Benchmark PostgreSQL 18 Async I/O for RAG Workloads", "url": "https://stanleycyang.com/writing/postgres-18-async-io-rag-benchmark", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab7-73af-af10-5fcafe668ef5", "title": "Benchmark Quantized Agent Models for Quality, Memory, and Speed", "url": "https://stanleycyang.com/writing/quantization-agent-models-quality-memory-speed", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab7-73af-af10-5fcafeac2f47", "title": "Benchmark Speculative Decoding Reproducibly", "url": "https://stanleycyang.com/writing/speculative-decoding-reproducible-benchmark", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab7-73af-af10-5fcaff90fa75", "title": "Benchmark Structured-Output Reliability in Open Models", "url": "https://stanleycyang.com/writing/structured-output-reliability-open-models", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab7-73af-af10-5fcb001b9c8a", "title": "Build a Budget Controller for Agent Workflows", "url": "https://stanleycyang.com/writing/agent-workflow-budget-controller", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab7-73af-af10-5fcb00b8b2b4", "title": "Build a Citation-Aware Document Agent for PDFs, Scans, Tables, and Images", "url": "https://stanleycyang.com/writing/citation-aware-multimodal-document-agent", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab7-73af-af10-5fcb01208582", "title": "Build a Citation-First RAG System That Rejects Unsupported Claims", "url": "https://stanleycyang.com/writing/citation-first-rag-system", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab7-73af-af10-5fcb012464fa", "title": "Build a Coding-Agent Harness with Hard Execution Boundaries", "url": "https://stanleycyang.com/writing/build-coding-agent-harness", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bb96f67444", "title": "Build a GPU Capacity Planner for LLM Inference", "url": "https://stanleycyang.com/writing/gpu-capacity-planner-llm-inference", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bb978049cf", "title": "Build a Multi-Tenant MCP Gateway Without Collapsing Trust Boundaries", "url": "https://stanleycyang.com/writing/multi-tenant-mcp-gateway", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bb98136014", "title": "Build a Plan–Execute–Review Agent Without Infinite Loops", "url": "https://stanleycyang.com/writing/plan-execute-review-agent", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bb98c285b0", "title": "Build a Production RAG Ingestion Pipeline: Parse, Version, Embed, and Delete Correctly", "url": "https://stanleycyang.com/writing/production-rag-ingestion-pipeline", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bb9908ef66", "title": "Build a Real-Time Voice Agent over WebRTC", "url": "https://stanleycyang.com/writing/realtime-voice-agent-webrtc", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bb99390973", "title": "Build a Safe MCP Server in TypeScript: Tools, Validation, and Transports", "url": "https://stanleycyang.com/writing/build-mcp-server-typescript", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bb99fdbac3", "title": "Build a Simulated World for AI Agent Testing", "url": "https://stanleycyang.com/writing/simulated-world-agent-testing", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bb9a51e754", "title": "Build a Single-GPU RAG Stack", "url": "https://stanleycyang.com/writing/single-gpu-rag-stack", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bb9b42d0b8", "title": "Build a Visual Browser-Agent Benchmark That Measures Real Task Success", "url": "https://stanleycyang.com/writing/visual-browser-agent-benchmark", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bb9be64b98", "title": "Build AI Agent Tools as WebAssembly Components", "url": "https://stanleycyang.com/writing/webassembly-components-agent-tools", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bb9c01a9fc", "title": "Build an Evidence-First Code Review Agent", "url": "https://stanleycyang.com/writing/evidence-first-code-review-agent", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bb9caa59dd", "title": "Build an Interactive MCP App with a Sandboxed Tool UI", "url": "https://stanleycyang.com/writing/build-interactive-mcp-app", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bb9cbb96d0", "title": "Build an MCP Client in TypeScript: Discovery, Tool Calls, and Trust Boundaries", "url": "https://stanleycyang.com/writing/build-mcp-client-typescript", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bb9d447cba", "title": "Build an OWASP Agent Security Test Harness", "url": "https://stanleycyang.com/writing/owasp-agent-security-test-harness", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bb9d814d22", "title": "Build Forensic Audit Logs for AI Agents", "url": "https://stanleycyang.com/writing/forensic-audit-logs-ai-agents", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bb9db34b01", "title": "Build Long-Running MCP Tools with the Experimental Tasks Utility", "url": "https://stanleycyang.com/writing/mcp-tasks-long-running-tools", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bb9dec27f2", "title": "Build Streaming Agent Interfaces in Next.js", "url": "https://stanleycyang.com/writing/streaming-agent-interfaces-nextjs", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bb9eda9fbc", "title": "Build Two Agents That Collaborate over A2A 1.0", "url": "https://stanleycyang.com/writing/build-a2a-agents-v1", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bb9f5a45c5", "title": "Caching AI Applications: Prompts, Prefixes, Retrieval, and Tools", "url": "https://stanleycyang.com/writing/caching-ai-applications", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bb9f6aeb65", "title": "Capability-Based Security for AI Agent Tools", "url": "https://stanleycyang.com/writing/capability-based-security-agent-tools", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bba0567ecb", "title": "Choose an Open Model with an Evaluation Suite", "url": "https://stanleycyang.com/writing/choose-open-model-evaluation-suite", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bba14688a3", "title": "Computer Use vs DOM Automation vs APIs: Choose the Most Reliable Agent Interface", "url": "https://stanleycyang.com/writing/computer-use-vs-dom-automation-vs-apis", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bba212027e", "title": "Context Engineering for AI Agents: Build a Context Assembler", "url": "https://stanleycyang.com/writing/context-engineering-ai-agents", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bba2ce15fd", "title": "Contract Testing for AI Agent Tools", "url": "https://stanleycyang.com/writing/contract-testing-agent-tools", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bba2fc1a52", "title": "Cost Attribution for Multi-Agent Systems", "url": "https://stanleycyang.com/writing/multi-agent-cost-attribution", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bba303f9a1", "title": "Delegated Authorization for AI Agents Acting on Behalf of Users", "url": "https://stanleycyang.com/writing/delegated-authorization-ai-agents", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bba3d6ae64", "title": "Design an Async Sandboxed Agent Tool Runner with WASI 0.3", "url": "https://stanleycyang.com/writing/wasi-0-3-async-sandboxed-tool-runner", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bba3ec5db0", "title": "Design Approval UX for High-Risk Agent Actions", "url": "https://stanleycyang.com/writing/approval-ux-high-risk-agent-actions", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bba4af8482", "title": "Design-to-Code with Visual Regression That Developers Can Trust", "url": "https://stanleycyang.com/writing/design-to-code-visual-regression", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bba5801b15", "title": "Deterministic Replay for Nondeterministic AI Agents", "url": "https://stanleycyang.com/writing/deterministic-replay-ai-agents", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bba631d9f2", "title": "Disaggregate Prefill and Decode for Long-Context Agents", "url": "https://stanleycyang.com/writing/disaggregated-prefill-decode-long-context-agents", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bba6f5997b", "title": "Do Repository Instruction Files Help Coding Agents? A Benchmark Protocol", "url": "https://stanleycyang.com/writing/benchmark-repository-instruction-files", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bba7ddf535", "title": "Durable AI Agents: Retries, Idempotency, Human Approval, and Resume", "url": "https://stanleycyang.com/writing/durable-ai-agents", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bba7df2d3b", "title": "Edge vs. Node vs. GPU Backends for AI Applications", "url": "https://stanleycyang.com/writing/edge-vs-node-vs-gpu-ai-backends", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bba823aaba", "title": "Enforce Coding-Agent Policy with Lifecycle Hooks", "url": "https://stanleycyang.com/writing/coding-agent-policy-lifecycle-hooks", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bba8844a31", "title": "Event-Sourced AI Agents: Replay, Debug, and Resume Any Run", "url": "https://stanleycyang.com/writing/event-sourced-ai-agents", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bba8d23a02", "title": "Generate and Heal Playwright Tests with Agents—Without Hiding Bugs", "url": "https://stanleycyang.com/writing/generate-heal-playwright-tests-agents", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bba97b3287", "title": "GraphRAG vs Vector RAG: A Reproducible Benchmark Protocol", "url": "https://stanleycyang.com/writing/graphrag-vs-vector-rag-benchmark", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbaa18e0fd", "title": "Ground Computer-Use Agents with Screenshots and Accessibility Trees", "url": "https://stanleycyang.com/writing/ground-computer-use-screenshots-accessibility-trees", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbaada32bb", "title": "How to Benchmark a Multi-Model Router", "url": "https://stanleycyang.com/writing/benchmark-multi-model-router", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbab25ed86", "title": "How to Bisect an AI Agent Regression", "url": "https://stanleycyang.com/writing/bisect-agent-regressions", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbab3917ba", "title": "How to Build a High-Quality Agent Evaluation Dataset", "url": "https://stanleycyang.com/writing/build-agent-evaluation-dataset", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbab943ee2", "title": "How to Build a Latency Budget for an AI Agent", "url": "https://stanleycyang.com/writing/ai-agent-latency-budget", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbabc2b1da", "title": "How to Debug a Production AI Agent Incident", "url": "https://stanleycyang.com/writing/debug-production-agent-incident", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbac65adf4", "title": "How to Define SLOs for AI Agents", "url": "https://stanleycyang.com/writing/slos-for-ai-agents", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbac9b26d9", "title": "How to Evaluate a Voice Agent: Recognition, Turn Taking, Audio, and Task Success", "url": "https://stanleycyang.com/writing/evaluate-voice-agent", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbad6b1bcf", "title": "How to Load Test Tool-Using AI Agents Safely", "url": "https://stanleycyang.com/writing/load-testing-tool-using-agents", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbae442e65", "title": "Human Approval for AI Agents: Bind Approval to the Exact Action", "url": "https://stanleycyang.com/writing/human-approval-for-ai-agents", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbae552927", "title": "Hybrid Search with PostgreSQL and pgvector: Full Text, Vectors, and Rank Fusion", "url": "https://stanleycyang.com/writing/hybrid-search-postgres-pgvector", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbaf1d8b21", "title": "LLM-as-a-Judge: How to Calibrate It Against Humans", "url": "https://stanleycyang.com/writing/calibrate-llm-as-a-judge", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbaf76f622", "title": "Make Agent Swarms Faster and Cheaper with Bounded Parallelism", "url": "https://stanleycyang.com/writing/agent-swarm-bounded-parallelism", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbb03e0137", "title": "MCP Elicitation: Ask Users for Input Without Asking for Secrets", "url": "https://stanleycyang.com/writing/mcp-elicitation-user-input", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbb098e3d5", "title": "MCP Sampling with Tools: Build a Bounded Server-Initiated Model Loop", "url": "https://stanleycyang.com/writing/mcp-sampling-with-tools", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbb18f8b62", "title": "MCP stdio vs. Streamable HTTP: How to Choose and Benchmark the Transport", "url": "https://stanleycyang.com/writing/mcp-stdio-vs-streamable-http", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbb1fc24c1", "title": "MCP Tools vs. Resources vs. Prompts: A Practical Decision Guide", "url": "https://stanleycyang.com/writing/mcp-tools-vs-resources-vs-prompts", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbb26b0496", "title": "MCP vs. A2A: Which Agent Protocol Do You Need?", "url": "https://stanleycyang.com/writing/mcp-vs-a2a", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbb335f103", "title": "Measure Voice-Agent Latency Correctly: From Speech End to Audible Response", "url": "https://stanleycyang.com/writing/measure-voice-agent-latency", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbb3900773", "title": "Memory Consolidation for Long-Running AI Agents", "url": "https://stanleycyang.com/writing/agent-memory-consolidation-decay", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbb391244c", "title": "Migrate an AI Monorepo to TypeScript 6 Without Hiding Breakage", "url": "https://stanleycyang.com/writing/typescript-6-ai-monorepo-migration", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbb39ce2bb", "title": "Migrate Coding-Agent Frameworks Without Losing Behavioral Guarantees", "url": "https://stanleycyang.com/writing/coding-agent-framework-migration", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbb437cced", "title": "Multi-Model Routing for AI Agents: Design and Evaluate a Router", "url": "https://stanleycyang.com/writing/multi-model-routing-for-agents", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbb43dcb64", "title": "Multi-Tenant RAG with PostgreSQL Row-Level Security", "url": "https://stanleycyang.com/writing/multi-tenant-rag-postgres-row-level-security", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbb45669c3", "title": "Next.js 16 Cache Components for AI Applications", "url": "https://stanleycyang.com/writing/nextjs-16-cache-components-ai-apps", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbb525a360", "title": "OAuth for Remote MCP Servers: Discovery, Scopes, and Token Validation", "url": "https://stanleycyang.com/writing/oauth-remote-mcp-servers", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbb5829887", "title": "Prevent Runaway Agent Delegation", "url": "https://stanleycyang.com/writing/prevent-runaway-agent-delegation", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbb641540c", "title": "Prevent SSRF in AI Agent Tools", "url": "https://stanleycyang.com/writing/prevent-ssrf-agent-tools", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbb6c83ff8", "title": "Privacy-Aware Multimodal Agents: Minimize Audio, Images, Documents, and Traces", "url": "https://stanleycyang.com/writing/privacy-safe-multimodal-agents", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbb6d541bf", "title": "Prompt Injection Defense in Depth for Tool-Using Agents", "url": "https://stanleycyang.com/writing/prompt-injection-defense-in-depth", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbb7727817", "title": "RAG Chunking Strategies: How to Compare Fixed, Structural, Semantic, and Parent-Child Retrieval", "url": "https://stanleycyang.com/writing/rag-chunking-strategies-benchmark", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab8-7064-9090-36bbb7773d84", "title": "Red-Team an AI Agent with Adversarial Tool Results", "url": "https://stanleycyang.com/writing/red-team-agent-adversarial-tool-results", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab9-71a7-868d-7005e95c88ad", "title": "Run Parallel Coding Agents Safely with Git Worktrees", "url": "https://stanleycyang.com/writing/parallel-coding-agents-git-worktrees", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab9-71a7-868d-7005e9da400f", "title": "Sandbox Untrusted Agent Code: Containers vs. WebAssembly", "url": "https://stanleycyang.com/writing/sandbox-untrusted-agent-code", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab9-71a7-868d-7005ead1bdfb", "title": "Secrets Management for AI Agents Without Putting Secrets in Context", "url": "https://stanleycyang.com/writing/secrets-management-ai-agents", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab9-71a7-868d-7005eb9c6272", "title": "Secure Browser Agents with Playwright: Isolation, Network Policy, and Approval", "url": "https://stanleycyang.com/writing/secure-browser-agents-playwright", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab9-71a7-868d-7005ec0dce1c", "title": "Secure Next.js Server Actions for AI Agent Operations", "url": "https://stanleycyang.com/writing/secure-server-actions-ai-agents", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab9-71a7-868d-7005ed04ce3a", "title": "Serve a Tool-Calling Model with vLLM", "url": "https://stanleycyang.com/writing/serve-tool-calling-model-vllm", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab9-71a7-868d-7005ed953f81", "title": "Serve Multiple LoRA Adapters with vLLM", "url": "https://stanleycyang.com/writing/serve-multiple-lora-adapters", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab9-71a7-868d-7005ee075adb", "title": "Shadow Testing AI Agents in Production", "url": "https://stanleycyang.com/writing/shadow-testing-ai-agents-production", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab9-71a7-868d-7005ee2e465b", "title": "Statistical Confidence for AI Agent Evaluations", "url": "https://stanleycyang.com/writing/statistical-confidence-agent-evals", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab9-71a7-868d-7005eebdea54", "title": "Supervisor vs. Handoffs vs. Agent Graphs: A Reproducible Comparison", "url": "https://stanleycyang.com/writing/supervisor-vs-handoffs-vs-agent-graphs", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab9-71a7-868d-7005ef9e886f", "title": "Tail Sampling and Redaction for AI Agent Traces", "url": "https://stanleycyang.com/writing/tail-sampling-redaction-agent-traces", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab9-71a7-868d-7005efcdab80", "title": "Temporal RAG: Answer Questions Using the Correct Historical Version", "url": "https://stanleycyang.com/writing/temporal-rag-versioned-knowledge", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab9-71a7-868d-7005efe8f8c6", "title": "Threat Model an AI Agent System from First Principles", "url": "https://stanleycyang.com/writing/threat-modeling-ai-agent-system", "published_at": "2026-07-18T00:00:00+00:00" }, { "id": "01a087e5-1ab9-71a7-868d-7005f0af66a6", "title": "Trace AI Agents with OpenTelemetry: Spans, Tokens, Tools, and Redaction", "url": "https://stanleycyang.com/writing/trace-ai-agents-opentelemetry", "published_at": "2026-07-18T00:00:00+00:00" } ] posts Claim your blog
Back to stanleycyang.com
Blog · corpus.blog/blogs/stanleycyang.com/posts

stanleycyang.com

stanleycyang.com

2026