
Muhammad Moyenul Islam
Moyenul leads backend engineering at Riverborn, architecting the agent orchestration, session, and infrastructure layers behind our production AI systems. He works across the stack from database schema to runtime orchestration, with a focus on systems that hold up under real production load rather than just demo conditions.
About Moyenul
His engineering write-ups on the Riverborn blog come straight from that work. He has documented how a multi-tenant sales agent system grew from a Google ADK hello-world into a 40-worker orchestrator before being rebuilt on ADK 2.0 Workflow graphs, why AI agents restart instead of resuming when a human pauses a workflow, and why nested human-in-the-loop workflows sometimes fail to resume, comparing how ADK 2.0, LangGraph, LangChain, CrewAI, AutoGen, and n8n handle the problem.
He also writes about the unglamorous infrastructure that decides whether a system stays up: fixing an infinite sync loop in a bidirectional Twenty CRM integration, and the static IP and Cloudflare 521 failures that broke a GCP Compute Engine deployment.
Articles by Moyenul
5 articles
Migrating a 40-Agent Sales System from Google ADK 1.x to ADK 2.0 Workflows
How a multi-tenant sales agent system grew from a Google ADK hello-world into a 40-worker orchestrator, then got rebuilt on ADK 2.0 Workflow graphs: what broke, what held up, and what we'd tell any team making the same jump.

Why Nested AI Workflows Sometimes Fail to Resume
Nested human-in-the-loop workflows fail intermittently when an interrupt matches the wrong sub-workflow, or when a resume reads state before the pause write lands. How ADK 2.0, LangGraph, LangChain, CrewAI, AutoGen, and n8n handle both halves.

Why AI Agents Restart Instead of Resuming (And How to Fix It)
A multi-agent coordinator that re-classifies every message will restart mid-flow workflows the moment a human pauses them. The same fix — an active-workflow marker checked before routing — across ADK 2.0, LangGraph, LangChain, CrewAI, AutoGen, and n8n.

How a Static IP and a Cloudflare 521 Broke Our GCP Deploy
We shipped a backend to a Compute Engine VM behind Cloudflare. The container came up fine. DNS and a 521 error did not. Two failures, both preventable, both worth knowing before your first deploy.

Fixing an Infinite Sync Loop in Our Twenty CRM Integration
We wired bidirectional sync into self-hosted Twenty CRM. Our own writes kept echoing back as inbound changes. The fix wasn't a clever filter — it was storing our API key identity once and comparing against it on every webhook.