Most AI workflow frameworks treat graph construction as a library concern – something wired directly into application code. You discover whether the workflow is actually useful only after weeks of integration work. By then the AI logic and the application are entangled, and neither can change cleanly without the other.
Hensu takes a different approach. Workflows are standalone compiled artifacts, defined in a type-safe Kotlin DSL and executed by a dedicated engine. Run a workflow locally with real agents during development. Push the same compiled artifact to the server. The engine is identical in both environments, so there is no integration gap between the two.
Parallel review branches, majority-vote consensus, self-correcting loop:
fun contentPipeline() = workflow("content-pipeline") {
agents {
agent("writer") { role = "Content Writer"; model = Models.CLAUDE_HAIKU_4_5 }
agent("reviewer") { role = "Content Reviewer"; model = Models.GEMINI_3_1_PRO }
}
state {
input("topic", VarType.STRING)
variable("draft", VarType.STRING, "the full written article text")
}
graph {
start at "write"
node("write") {
agent = "writer"
prompt = "Write an article about {topic}."
writes("draft")
onSuccess goto "review"
}
parallel("review") {
branch("quality") { agent = "reviewer"; prompt = "Review for quality: {draft}" }
branch("accuracy") { agent = "reviewer"; prompt = "Review for accuracy: {draft}" }
consensus { strategy = ConsensusStrategy.MAJORITY_VOTE }
onConsensus goto "done"
onNoConsensus goto "write"
}
end("done", ExitStatus.SUCCESS)
}
}| Module | Role |
|---|---|
| hensu-dsl | Type-safe Kotlin DSL – compiles .kt workflow definitions into portable JSON artifacts |
| hensu-core | Zero-dependency Java engine – state transitions, rubric evaluation, agent orchestration |
| hensu-server | Multi-tenant GraalVM native server – MCP split-pipe transport for secure remote tool execution |
| hensu-cli | Developer CLI – run, build, push, pull, list, attach; local daemon keeps the JVM warm |
The server is a pure orchestrator – it never executes user-supplied code. Tool calls route through MCP to tenant clients via an outbound SSE connection. No inbound ports, no firewall rules on the client side. The binary ships as a GraalVM native image.
Monorepo · DSL Reference · Architecture · Spring Reference Client
Java 25 · Kotlin · Quarkus · GraalVM Native Image · MCP
Hensu™ and the axolotl logo are trademarks of Aleksandr Suvorov.
Copyright 2025–2026 Aleksandr Suvorov. All rights reserved.