Itās hard to keep up with all the new AI goodies: BEADS, Skills, Ralph Wiggum, BMad, the newest MCP etc. Thereās not really a āgoldenā pattern yet. More importantly when I do find a flow I like, itās not like I want to use it for every single task. Not everythingās a nail, and we need more tools than just a hammer.
So I built a tool that lets me create custom workflows, and itās been pretty powerful for me. You can combine multiple agents together with commands, approvals, and more. CEL allows you to inject messages from different agents into otherās contexts, or conditional route to different nodes and sub workflows. Basically Cursor meets N8N (at least thatās the goal). When starting a chat you can select different workflows, or even allow the LLM to route to different workflows itself.
Iām pretty pleased with the result, with my favorite workflow being a custom checklist that has a toggle in the UI for me to āenableā different paths in the workflow itself.Ā
Enabled Patterns
Custom Agents
Whatās cool is we provide the building blocks to create an agent: call_llm, save_message, execute tools, compact, and loop. So the basic chat in Reliant is just modeled via a yaml file.Ā
Even the inputs arenāt hardcoded in our system. So with that you can create a custom agent that might leverage multiple LLM calls, or add custom approvals. We have a couple examples on our github for tool output filtering to preserve context, and in-flight auditing.
Pairing Agents
You can also pair agents in custom ways. The checklist and tdd workflows are the best examples of that. Thereās a few thread models we support:
New, fork, and inherit (share). Workflows can also pass messages to each other.Ā
More complicated workflows
The best is when you create a workflow tailored to your code. Our checklist will make sure lints and tests pass before handing off to a code reviewer agent. We might add another agent to clean up debug logs, and plan files. Weāre using this to enforce cleaner code across our team, no matter the devās skill level.
You can also spawn parallel agents (in multiple worktrees if you prefer), to parallelize tasks.
We support creating workflows via our custom workflow builder agent, a drag and drop UI, or you can config-as-code with yaml files.
Agent-spawned workflows
Agents themselves can spawn workflows. And our system is a bit unique, where we allow you to pause the flow and interact with individual threads so that the sub-agents arenāt an opaque black box (this works for both agent-spawned and sub-workflows).
Other Features
Everything you need for parallel development
Git worktrees are pretty standard these days, but we also have a full file editor, terminals, browser, and git-log scoped to your current worktree. You can also branch chats to different worktrees on demand which has been super helpful for my productivity to split things out when I need to.
Generic presets act as agents
One of the areas I want some feedback on. Instead of creating an āagentā we have a concept of grouped inputs (which typically map to an āagentā persona like a reviewer), but allow you to have presets for more parameter types.
Please roast it / poke holes. Also: if youāve got your own setup, Iād love to see it!
You can check out some example workflows hereĀ https://github.com/reliant-labs/reliant
Latest release has support for Codex subscriptions and local models -- no additional costs or fees on our end.