Introducing ixui: A Proxmox/ESXi-Style Web UI for Incus

, ,

Hi everyone,

I’d like to share a new project I’ve been working on: ixui, an open-source web UI for Incus. The design draws inspiration from Proxmox and VMware ESXi, aiming to let you manage your entire Incus setup without needing to touch the CLI.

:warning: Pre-alpha notice: ixui is in early, pre-alpha development. Expect missing features, rough edges, and breaking changes. Please don’t rely on it to manage production Incus servers yet.

Some of the key features:

  • Full instance management — create and monitor instances from start to finish
  • A built-in file browser for each instance
  • A terminal that opens directly from the UI
  • Comprehensive network, storage, and image management
  • Cluster support, with live instance status updates over WebSocket (no page refresh needed)

The project is licensed under the Apache License 2.0. It’s still in an early, pre-alpha stage, so expect rough edges, feedback and contributions are very welcome.

Repo: GitHub - xlmnxp/ixui: Incus UI, but with a Proxmox soul and an ESXi skeleton. · GitHub

Just installed it, does what it says and that ultra fast. Great work!

I’m missing project management (create,update,delete).

thank you,

I think it missing a lot of features and needs a lot of feedback, I update the roadmap based on feedbacks

Hi, it looks to be very promising project.

Im just planning my small proxmox homelab migration to incus so I will give it a try soon for sure.

Just a quick question about how incus integration is implemented.

Does it keep any internal state by itself that sync somehow with incus or is it stateless app presenting incus internals state directly?

It stateless application and depend only on Incus APIs
thank you, feedbacks are always welcome

IXUI update: release 26.10.0

A big round of changes today. IXUI is still pre-alpha, but it covers a lot more of Incus now.

New

  • Command palette (Ctrl/Cmd+K): jump to any instance, page or project, or start, stop, restart or open a terminal.
  • Stepped dialogs for creating and editing instances, projects, networks, profiles, zones and address sets, with validation and a review page. Pulling an image now searches the catalog inside the dialog.
  • Light theme (plus “follow system”) and a navigation drawer for narrow screens.
  • Live graphs on the instance overview: CPU, memory, network throughput and disk usage.
  • Projects: create with limits and features, see real usage against limits, and delete safely (you type the name, and non-empty projects are refused).
  • More Incus coverage: network zones, address sets, load balancers and peers, instance backups (create, download, import), identities and auth groups, cluster member editing, and bulk instance actions including snapshots.
  • Sidebar is now grouped into System and Monitoring, with the version shown at the bottom.

Also

  • A “connection lost” banner when the live connection drops, and instances resync when it comes back.
  • Better keyboard support and accessibility checks in the tests.
  • Releases are automatic and use year-month versions (26.10.0). Each release has a zip of the built UI, ready to unpack: Releases · xlmnxp/ixui · GitHub

Not yet

Storage buckets, image upload/export, instance rebuild, localization.

Feedback and bug reports are welcome.

Extra note: changes before the versioning system (18 Aug – 12 Sep)

For completeness, here’s what landed between the first post and the 26.10.0 release above. There were no tagged releases back then.

Terminal

  • Chrome-style shell tabs: add and close tabs, drag to reorder, and double-click to rename a tab and give it a colour.
  • Tab names follow the instance and the running shell process, and update live from the terminal title.
  • Long tab lists scroll with fading edges, and the “add tab” button stays in reach.
  • One Console button with a Shell / VGA dropdown. One console window is reused, and you can open several shell windows.

VGA (SPICE) console

  • The display fits and scales inside its window, follows window resizes, and maps the mouse position correctly.
  • Fixed a crash when resizing before the connection w

Instance overview

  • Per-instance CPU and memory graphs. CPU % is computed from usage counters, so it’s accurate. With no memory limit, the memory
    graph uses the node’s total memory as its maximum.

Status at a glance

  • A green play icon on running instances, and dimmed icons for stopped ones.
  • Status icons inside the badges in the instances tab
  • Cluster members show a status dot: a checkmark when online, a warning triangle when evacuated.

Files

  • Click a file to download it, and use the row buttond loading is shown inline under the table header.

Sidebar and general

  • The sidebar adapts to its width (icon-only buttons when narrow), and the split-pane divider is easier to see.
  • The “move instance” dialog no longer offers the memn.
  • Routes are lazy-loaded, and the live connection sends keepalives so it survives proxies that drop idle connections.

Community: thanks to René Jochum (dependency updates, PR #1) and webbrain-one (README improvements, PR #2).

@xlmnxp , I’ve finally migrated to Incus.

I’m going to give a try to your UI, however I just a the begging I faced some obstacles.

As I’m running IncusOS I can’t copy the ixui into incus ui folder. I think so.

Do you plan to make some kind of IncusOS extension that will allow to use it?

Or maybe there is other simple what to do it?

We don’t currently have a mechanism to swap UI on IncusOS but will likely have something like that soon enough to handle the new Incus UI.

thanks - for answer and working on solution

Actually I managed to address the issue with the nginx container serving the ixui, so I can use it and test it that way for now.

BTW - does it mean the new UI is going to be introduced as an official incus project?

Yeah, that’s correct. You’ll obviously still be able to run any of the other UI projects but we’ll now have one go to one that goes through a similar release cycle and aligns features with those landing in Incus.