AOTel: A Native AOT OTLP edge proxy for OpenTelemetry
Hey folks,
I spent the weekend working on a sidecar MVP. I wanted to share the results and get some feedback on my architecture choices, specifically regarding memory management.
I was interested in .NET 10 Native AOT and testing if it could build a "bulletproof vest" for apps that ingest telemetry without adding Garbage Collection debt.
So I built AOTel. It uses a custom Protobuf reader as a ref struct that works directly on ReadOnlySpan<byte>. It uses Zero Copy I/O and an ArrayPool<byte> for memory-safe batching.
Here are the results so far:
Binary size / docker image footprint
I’m currently working on handling real-world traffic (upstream latency/retries).
If anyone here has experience with socket plumbing, the internals of OpenTelemetry, or Native AOT trimming, I would highly appreciate some feedback or a code review on the use cases I might be missing.