DEV Community

ByteStrix
ByteStrix

Posted on

I got tired of SSHing into 10 VMs a day, so I built a live map of my whole infrastructure

Every day at work looked the same. Something breaks, or I need to push a new image, and I'm SSHing into three different VMs, running docker ps on one, kubectl get pods on another, piecing together in my head what's actually connected to what. The official Kubernetes dashboard never stuck for me either, and I never bothered installing Lens everywhere I needed it.

At some point I just wanted one thing: open a browser tab and see everything. Not a list. An actual map, where I can see a VM, the containers on it, a Kubernetes namespace next to it, and how they talk to each other.

So I built it. It's called InfraCanvas, and I want to show the two ways you can connect something to it, because I think the "how easy is this actually" question matters more than any feature list.

Way 1: you already have a kubeconfig? You're done.

If kubectl get pods works for you right now, InfraCanvas works for you right now. No agent, nothing installed on your cluster, nothing to configure. Open the dashboard, click "Add cluster," drop your kubeconfig file in, pick a context if it has more than one. That's it — within a few seconds your nodes, namespaces, deployments, pods and services show up on the canvas, color coded by health. It just talks to your cluster's API server the same way kubectl does. The kubeconfig gets encrypted before it's stored, never logged anywhere.

One honest caveat, because I'd rather tell you now than have you hit it yourself: if your kubeconfig came from aws eks update-kubeconfig or gcloud container clusters get-credentials, it authenticates through a CLI plugin, and that can't run from a backend that isn't your own machine. Self-hosting InfraCanvas on your own box? Not an issue, the plugin runs right there. Using the hosted version? There's a small relay pod you deploy instead, one kubectl apply, connects outbound from inside your cluster. The UI tells you upfront which kubeconfigs need this instead of just failing silently on you.

Way 2: plain VMs, one command. Not everything is Kubernetes — a lot of real infrastructure is a VM running Docker, or systemd services, or a Node process someone started with PM2 in 2022 and never touched again. One install command from the dashboard, a small Go binary as a systemd service, streams everything up over a single outbound WebSocket. No inbound ports.

What you get once it's connected: a real terminal into a pod or host, live logs, restart a container or service, scale a deployment, edit a manifest and apply it, all without leaving the browser. None of this is groundbreaking alone — what I haven't found anywhere else is all of it on one map instead of scattered across a terminal, a cloud console, and a dashboard that only understands one of the two.

It's open source (AGPL) — code's on GitHub: https://github.com/bytestrix/InfraCanvas. Hosted version if you'd rather not run anything: https://infracanvas.app

I'm still early, small project, built mostly solo — if you try it and something's rough, I'd genuinely like to hear about it.

Top comments (0)