Quarkus Machina: @BuildSteps for applications

34 views
Skip to first unread message

William Burke

unread,
Jul 23, 2026, 4:05:19 PM (10 days ago) Jul 23
to Quarkus Development mailing list
So, I always thought the @BuildStep pattern in quarkus would be useful in an application.  I needed a break recently and decided to implement this as a Quarkus extension with a different API.  I just have a feeling this might be useful for agentic and other workflow use cases.

It is call Quarkus Machina.  You define @Gears (build steps) and @Machines (what you want to create).  It also works with dynamic input.  All gears are CDI beans of any scope you want.

A bigger description (and code base) is here:


Don't know if I'll take it further, but just always wanted to create this extension.

Cheers,

Bill

--
Bill Burke
IBM

George Gastaldi

unread,
Jul 23, 2026, 4:18:28 PM (10 days ago) Jul 23
to Quarkus Development mailing list
Cool, but isn't that similar to David Lloyd's work with https://github.com/quarkus-qlue/qlue?

--
You received this message because you are subscribed to the Google Groups "Quarkus Development mailing list" group.
To unsubscribe from this group and stop receiving emails from it, send an email to quarkus-dev...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/quarkus-dev/CAL%3DE%3DjQprEjcMFUmmA1pz%2BN9x82d7-tk-cGTWOEcr828x-q8zA%40mail.gmail.com.

William Burke

unread,
Jul 24, 2026, 8:52:44 AM (9 days ago) Jul 24
to quark...@googlegroups.com
LOL!  Cool! 

/delete quarkus-machina



--
Bill Burke
IBM

William Burke

unread,
Jul 24, 2026, 9:25:45 AM (9 days ago) Jul 24
to quark...@googlegroups.com
Actually here's the things I didn't like about Quarkus @BuildStep which I think Qlue inherits too.

* The requirement to extend from Simple/MultiBuild item.  This should be annotation based to allow app devs to have their own hierarchy - @SingletonItem.
* Requirement that items are final classes.  Simply state that producing/consuming only works per class type.
* Checks should be done at build time, i.e. a class is final, no-generics etc...  Having to wait until runtime to find out you've crafted a item or step wrong is just a PITA.
* Primitive types and String can't be consumed/produced
* It is output driven rather than input driven.  i.e. you have to specify the output you want.  I know this is a feature, not a bug, but the flip side:  you have some input and want to see what output is generated is also a useful case.

Honestly, will probably never revisit this project.

--
Bill Burke
IBM
Reply all
Reply to author
Forward
0 new messages