Hye Ararat Beta 3 is now available

Howdy,

I have just released Beta 3 of Hye Ararat (v3.0.0-beta.3).

You can install it using the instructions on the GitHub repo: GitHub - hyecompany/ararat-web: Take your infrastructure to its peak · GitHub.

If you don’t know what Hye Ararat is, here’s some context: Introducing Hye Ararat: A Web UI native to Incus


This release mainly serves as preparation for adding the primitives beyond instances. As a result, most of the changes are internal, and not really visible on the surface level (but are quite comprehensive!). That also means this announcement will be more technical!

The most significant change is a complete re-write on our data fetching layer. Instead of SWR (which was already extremely fast), Ararat now maintains a custom local cache for Incus data that is directly tied-in with the Incus events socket.

UI elements now instantly update through event emittance, no longer requiring a refresh. If an instance is created, edited or modified, the UI immediately reflects that. Ararat is now also intelligently aware what has and hasn’t changed, so network traffic is substantially reduced. In fact, it will be extremely rare you see any loading or waiting for data fetching in Ararat (outside of first visit of course). You just have to try it!

I also have employed some intelligent routing & concurrency logic on the fetching layer, and have virtualized all tables on the UI. This allows us to show the full resource list without sending a huge network request to Incus, or lagging out the client. Resources are just loaded based on what is visible.

As you can see from the efforts I went to (on the SPICE client too in the previous build!), performance is a huge focus in Ararat, and this work is foundational to bring strong implementation of future primitives. Primitives beyond instances will be introduced in Beta 4 next week, starting with storage pools. I have already added initial support in this release. Only listing is currently present:

This release also has also laid some groundwork for a potential future UI refactor. Over the last 2 weeks, I have been experimenting with several different methodologies to make Ararat cater more to context-rich power users, while maintaining its simplicity for those less technical. I am thinking that hover-cards with controls and realtime information over related primitives is the way to go, keeping the UI simple but all of the options there, however, I’m still uncertain and would absolutely love some feedback from the community on what changes y’all want to see layout-wise, or how additional options can be handled. I’ve prototyped everything from simple hover cards to full on simulated window management with window snapping :joy:, so there is a lot of flexibility to the ultimate approach. I encourage y’all to use your imagination! More feedback = more polish.

One more note: As of May 5th, I have been moved to full time on Hye Ararat. Development will now be moving much faster & with much more momentum, so definitely don’t be afraid to make big feature requests or request large changes. I’m here to serve the community.

Thank you!

4 Likes

How much is written by AI?

A lot of it. This is a one-man show, and the only way I can ship a unified platform like this at this speed is by leaning into AI-native development.

All the architectural decisions (like the new data fetching later, the accelerated SPICE client, the caching system, the codebase organization, etc.) remain my designs. I’ve been building on Incus (from when it was LXD) since 2021, so I trust my judgement over that of a generic model. That said, I use autonomous agents heavily for the actual implementation (albeit with a lot of hand-holding, I’ve found breaking things up into really well-defined small chunks yields the best results). I’ve even set up the repo with custom skills and agent docs to give them the exact context they need to follow my conventions, which is also helpful to other contributors potentially using their own agents.

I still review and lock everything in myself, but the automation is what keeps Ararat moving fast. This AI workflow allows for a lot more thought to go into each independent feature, because all the time I usually spend on debugging / implementation gets to go into the bigger picture of where that feature belongs.

3 Likes

Howdy everyone,

Just providing a brief update since there have been some changes to the roadmap that I need to announce.

In this Beta 3 launch post, I stated primitives outside instances starting with storage pools will be introduced in Beta 4. TLDR: There’s been a roadblock, and that will no longer be possible. Anticipate them starting in Beta 5.

Today, a community member started testing fine-grained permissions (including what was suggested here: Granular permissions on the Incus API ), and found several issues (to be clear, not security issues, just Ararat totally breaking when authorization setups are used) and brought them to my attention. Upon further inspection, I discovered that there are a several decisions deep in Ararat’s architecture that prevent easy implementation of authorization (including OpenFGA).

As a result, I’m going to have to re-write some large components over the next week, so initial outside-instance primitive support is likely to be pushed back from Beta 4 to Beta 5 (could still appear in Beta 4 if things go faster than expected!). I want to make sure we are building on a strong foundation before exploring other primitives. It’s great this was caught early! Doing such major changes across multiple primitives would have caused a much more substantial delay.

Thank y’all for the continued testing & understanding. I would have never caught this early without your feedback!

4 Likes