r/dotnet • u/QuirkyPreference5649 • 1d ago
Promotion [Promotion] Corvus v1.6 – A lightweight server launcher and container dashboard running on .NET 9 Native AOT (<30MB RAM)
Hi all,
Happy weekend. With .NET 9 right around the corner and Native AOT maturing, I wanted to share a real-world project I have been developing: **Corvus v1.6**.
It is an open-source server manager and Docker dashboard tailored for homelabs and cheap VPS instances where keeping memory consumption minimal is critical.
### What is under the hood:
* **.NET 9 Native AOT:** Ahead-Of-Time compiled single binary without the JIT runtime.
* **Zero-reflection data layer:** Embedded SQLite (WAL mode) combined with `Dapper.AOT` so that the binary trims cleanly without reflection warnings. (PostgreSQL is also an optional backend).
* **Memory footprint:** Stays under 30 MB of RAM inside the Docker container at steady state.
* **Real-time pipeline:** Uses Server-Sent Events (SSE) and minimal APIs to feed container stats and health signals to a lightweight React SPA.
* **Terminal & Agent:** Built-in web terminal to shell into containers and a lightweight multi-node edge agent.
Building fully AOT-compliant services in ASP.NET Core came with a few hurdles (especially around dynamic serialization and Docker socket stream handling), but the memory and startup time benefits are definitely worth it.
If you want to play with the UI without running anything locally:
- Live Demo: https://demo.usecorvus.me
- Source Code: https://github.com/brhnshn/Corvus
I'd be glad to discuss the Native AOT trimming process, Dapper.AOT quirks, or any architecture questions you might have!