I realised that many companies offer no-code platforms to their users for automating workflows.
The numbers were kinda shocking.
I spent a week deep-diving into Gumloop and other no-code platforms.
They're well-designed, but here's the problem: they're not built for agents. They're built for workflows. There's a difference.
Agents need customisation. They have to make decisions, route dynamically, and handle complex tool orchestration. Most platforms treat these as afterthoughts. I wanted to fix that.
Although it's not production-ready and nowhere close to handling the requests of companies like Gumloop and similar ones, this is intended to showcase the robustness of Vibe coding and how easily you can build sophisticated apps in a matter of days. You can also carry forward the work to improve it.
NextJS was the obvious choice for the vibe-coding stack. Could I have used FastAPI with a React frontend?
Sure — but just thinking about coordinating deployments, managing CORS, and syncing types made me tired.
For adding a near-unlimited suite of SaaS app integrations, Composio was the obvious choice. It features a JS SDK that enables you to add agent integrations easily.
When it comes to agent frameworks, JS lacks the buffet Python has.
It boiled down to two frameworks: LangGraph and the AI SDK (I’d heard about Mastra AI, but I didn’t want to spend the weekend getting familiar with it).
I chose LangGraph over AI SDK because LangGraph’s entire mental model is nodes and edges — exactly how visual agent builders should work. Every agent is just a graph; every workflow, a path through that graph. AI SDK is great, but not convenient for graph-based agents.
If you’re a vibe-code hater, skip ahead.
Frontend is entirely vibe-coded. I didn’t use Lovable or Bolt.new because it’s easier to open the code in Cursor and tweak it there.
My setup
The canvas where users drag-and-drop nodes? Built with React Flow plus a moving grid background from 21st Dev. Took \~30 minutes; doing it by hand would’ve exhausted me.
Strip away the marketing fluff; an AI agent is two things:
That's it. So I built exactly four fundamental nodes:
…and an Agent Node that combines an LLM + Tools for convenience. Every complex workflow is just a remix of these primitives.
Writing tool integrations is painful. Managing auth for those tools? That’s where developers go to die.
Every tool has a different auth flow. Multiply that by 100 + tools and you have a maintenance nightmare.
Composio fixes this: one SDK, hundreds of pre-built tools, auth handled automatically. Ship in a weekend instead of spending months on OAuth.
Each workflow is a JSON graph. Here’s a tiny example:
{
"nodes": [
{
"id": "input_1",
"type": "customInput",
"position": { "x": 100, "y": 100 },
"data": { "label": "User Query" }
}
],
"edges": [
{
"source": "input_1",
"target": "agent_1"
}
]
}
I wanted one API route that takes the entire graph and executes it.
When a user hits Run, this happens:
// Sample snippet
switch (node.type) {
case 'llm': {
const model = getModelFromApiKey(node.data.apiKey);
result = await model.invoke(previousOutput);
break;
}
case 'tool': {
const tool = await composio.getTool(node.data.action);
result = await tool.execute(previousOutput);
break;
}
case 'agent': {
const tools = await composio.getTools(node.data.tools);
const agent = createReActAgent(model, tools);
result = await agent.invoke(previousOutput);
break;
}
}
Authentication was my personal nightmare.
Composio solved the technical part, but the UX? That took three rewrites.
v1 pain-stack
I added a drop-down of actions, but auth was still clunky. So I:
Adapted the UI to the tool’s auth type:
Once authenticated, the same modal lets you search and add tools in one click.
Anthropic’s guide “Building Effective Agents” lists several patterns. I created nodes that instantiate these instantly.
customInput → agent_1 → agent_2 → customOutput
Node example:
customInput → agent_1 (parallel)
customInput → agent_2 (parallel)
both → aggregator → customOutput
Node example:
customInput → router_agent
router_agent → agent_1 | agent_2 → customOutput
Node example:
customInput → generator_agent → solution_output
↘ evaluator_agent ↗
customInput → agent(with tools) → customOutput
The barrier to building agents has collapsed. You don’t need a 20-person team and six months; you need:
The irony? I spent more time perfecting the auth modal than building the execution engine. In the age of vibe-code, the hardest problems aren’t technical — they’re about understanding users and having the taste to build well.
The code lives on GitHub. Fork it, break it, make it better.
Finally, the fruits of 48 hrs of vibe-coding:
<!-- wp:video {"id":11905} -->
<figure class="wp-block-video">
<video controls src="https://composio.dev/wp-content/uploads/2025/06/agent_flow_web.mp4"></video>
</figure>
<!-- /wp:video -->
This was all about vibe coding my way to an actual product. Though it's still maybe not fully ready for the real world, it's 80% there in a weekend, which would have taken months before.