DEV Community

Youssef Boubli
Youssef Boubli

Posted on

Why I Ditched Heavy Dashboards and Built My Own in Pure Rust


Why I Ditched Heavy Dashboards and Built My Own in Pure Rust

If you run a home lab, you know the feeling: you spend hours setting up the perfect stack of services, only to realize you need a centralized way to access them. You reach for a dashboard, install it, and suddenly realize your simple link portal is eating up 150MB of RAM and requires a crash course in YAML just to add a new shortcut.

I decided I was done with that. So, I built AMUD (Advanced Modern Unified Dashboard).

You can check out the source code and the final result here: https://github.com/boubli/AMUD-Dashboard.

Here is a look at why I built it, the architecture behind it, and how it completely changed my server workflow.

The Problem: Bloatware in the Home Lab
The current landscape of self-hosted dashboards is generally split into two frustrating camps.

On one side, you have applications like Heimdall. While it looks great, it brings the entire weight of a PHP/Laravel lifecycle with it. A dashboard's primary job is to sit idle 99% of the time, yet these setups consume significant server resources just existing in the background.

On the other side, you have highly customizable tools like Homepage. The catch? You are forced to manage complex YAML configuration files. If you make a single indentation error, the whole interface breaks.

As someone who values highly optimized system architecture, wasting CPU cycles on a heavy runtime—or wasting my own time writing YAML to add a simple URL—felt unacceptable. I wanted a control center that was microscopic in size but massive in functionality.

The Solution: Enter AMUD and Pure Rust
I built AMUD entirely from scratch using pure, compiled Rust. By stepping away from heavy web frameworks and Docker-dependent networking layers, the results were exactly what I was aiming for.

AMUD operates as a single-binary ecosystem with an embedded SQLite architecture. Because it executes as native machine code, the entire dashboard, database, and telemetry layer idle at roughly 26MB of RAM.

Performance and memory safety were the biggest reasons for choosing Rust, but the real magic happens in the telemetry. AMUD utilizes Tokio to handle asynchronous threads. This allows the dashboard to stream live CPU, RAM, and disk metrics to your screen in real-time without locking up the UI or taxing the host system.

Best of all? Zero YAML. Everything from advanced layouts to tagging and sub-pages is managed entirely through a clean, reactive user interface.

The Proxmox Advantage: Bypassing Docker Overhead
A lot of self-hosted software assumes you want to run everything in Docker. While Docker is great, wrapping a simple dashboard in a containerized network layer adds unnecessary overhead, especially if you are running a bare-metal hypervisor like Proxmox.

I designed AMUD to be a first-class citizen in Proxmox LXC (Linux Container) environments.

To make deployment seamless, I wrote a native Proxmox Autopilot setup script. Instead of wrestling with container registries and port forwarding, you simply run the script. It provisions a minimal Debian 12 LXC, installs the compiled Rust binary, configures the services, and launches AMUD instantly. Furthermore, if you link your apps to your LXC containers, AMUD's live telemetry will dynamically turn your dashboard icons green or red based on the container's true running state.

Call to Action: Let's Build This Together
AMUD is completely open-source, and I am actively looking to grow the community around it. Whether you are a Rust developer looking for a new open-source project to contribute to, or a homelab enthusiast who just wants a faster, lighter dashboard, I would love for you to try it out.

Check out the repository, test the Proxmox installation script, and let me know what you think:
👉 https://github.com/boubli/AMUD-Dashboard

If you like the architecture or find the tool useful, dropping a Star on the repo helps tremendously. Feel free to fork the code, open an issue for feature requests, or submit a pull request!

Top comments (0)