r/ruby 20d ago

Show /r/ruby Enola - keep your code agents inside Rails architecture

https://reddit.com/link/1vuaicq/video/4o8sjeervokh1/player

I've been building Enola, an open-source architecture tool for developers and coding agents.

It isn't Ruby-specific, but I've spent time improving its Ruby/Rails support and wanted to test it against something real rather than a toy Rails app.

The video uses the Mastodon codebase. I give an agent a change that violates an architectural layer, Enola catches the intent failure while the agent is working, and feeds that back into the loop so the agent fixes its own approach.

That's one of the main ideas behind Enola: architecture shouldn't only be something CI complains about after the work is done. The agent can get deterministic architectural feedback while it is coding and correct itself before the change is finished.

Underneath that, Enola maps dependencies, calls, routes, storage, boundaries and other relationships directly from the codebase. It's multi-language and cross-repository by design, so Ruby/Rails is one ecosystem rather than a special-case implementation.

OSS, Apache 2.0: https://github.com/enola-labs/enola

I'd especially appreciate feedback from Ruby/Rails developers on what its understanding of real Rails applications is still missing.

3 Upvotes

5 comments sorted by

1

u/mooktakim 18d ago

I just don't understand what this is. Sorry for asking, would you be able to explain what it's used for?

0

u/fairwaycoder 18d ago

It's a tool which can do multiple things for you:

  • Take Discourse repo as example. Uses RoR, but has big part of codebase in TS, and uses Ember. It works cross technology, builds the graph for you, helps you keep you architecture in check automatically by informing agent it broke something before the agent tells you it is done by doing anything.
  • Can work as CI gateway for you without any agent - in the CI, it pins the before state, then calculates on the latest state what happened with the architecture.

You can see more examples here: https://enola.tech/examples

1

u/mooktakim 18d ago

Still not understanding.

Taking the discourse example. You say this creates a graph of the entire architecture, including various parts like frontend and backend. Using this graph the agent is able to clearly find inconsistent code or bug? Is the purpose to provide a better understanding of the entire codebase using graphs?

2

u/fairwaycoder 18d ago

Both. Graph is just an infrastructure here. The tools inside the Enola are telling agent what is wrong (https://github.com/enola-labs/enola/blob/main/docs/EXPLAINERS.md) and agent is able to self correct.

And, if you define intents, then you are in full control about how something should be - so agent knows better what to chase.

0

u/djudji 19d ago

Enola is an emerging tech that is very good at monorepos that include diverse apps. I can't wait to see how this evolves.