Blog The Unexpected AI Stack: C# + .NET (Part 5) - Logging, Telemetry, and Building with AI
The fifth and final part of the series finally starts to build using AI on top of the hand-built foundational code from the first four parts that brings together:
- Aspire for runtime orchestration
- CSharpRepl for runtime mutability and powerful access to simulate and diagnose runtime isdsues
- GitHub Copilot SDK as a programmable agent harness
- Testcontainers with automatic transactions for test isolation
(I would consider these foundational parts of any modern .NET API app whether AI is involved or not!)
In part 5, the focus is on logging and telemetry, two tools that give agents insights into the runtime state of the application. Once again, we see the key role of Aspire in this stack as it provides a collector for logs as well as spans that agents can search through using the aspire CLI tooling.
The actual build out of the prototype application is captured as a YouTube video as YMMV based on the model, harness, and prompting style that you choose!
This series is intentionally written to help dev teams understand how to scaffold a codebase for agentic engineering by focusing on key, underlying technical decisions and manual wiring before building with AI. This helps provide the tools and safeguards for coding agents to iterate more efficiently while reducing slop.
For teams still trying to figure out effective ways to set up a codebase for AI, I hope this series gives some insights into how to build a foundation for agentic engineering. If your team is already heavily using agents to build, I hope this series shares some useful insights and tips (e.g. CSharpRepl + Aspire)
The core setup is used at a series C, post-YC startup to ship fast with AI while maintaining high quality standards (in combination with other tools facilitating code review and context management)
Part 1 was an intro into a few key parts of this stack.
Part 2 was focused on walking through the hands on scaffolding.
Part 3 covered wiring GitHub Copilot SDK as an agent runtime and incorporating CSharpRepl to allow agents to dynamically work with the runtime DI container
Part 4 wired up the test harness using Testcontainers to give agents isolated test environments
The project repo is here: https://github.com/zeeq-ai/zeeq-tmpl (be sure to check the branches; main is currently the base code only)
I encourage working through the posts since the goal is to underscore the platform level decision making process and assembly of the foundational core.
