Inspiration
Every developer I know has lost hours to CI/CD setup. You copy a workflow file from somewhere, rename a few stages, push, and spend the next hour fixing YAML indentation and missing secrets. It's the same judgment-heavy, repetitive work every single time — and it's exactly the kind of task an agent should own. I wanted to build something that doesn't just generate a config file, but actually understands your repo, generates the right pipeline, validates it, and proves it works by running it.
What I Built
Flow is a multi-agent CI/CD pipeline builder. You give it a GitHub URL, and a team of specialized AI agents takes over:
- Repo Analysis reads your
package.json, detects your framework, and extracts the exact scripts available - Pipeline Gen builds a structured pipeline incrementally using tool calls — not a single JSON blob, but stage by stage
- Validation checks for missing dependencies, disconnected stages, and best practice violations
- Export converts the abstract pipeline to GitHub Actions, GitLab CI, Jenkinsfile, or CodePipeline YAML
- CI Runner executes the pipeline inside an ephemeral Lambda MicroVM, streaming logs back to the browser in real time
The result is a visual canvas where parallel stages appear side-by-side, a run panel with live output per stage, and an export panel with a ready-to-commit config file.
How I Built It
Agent orchestration — Each agent is a standalone Python container deployed on AWS Bedrock AgentCore, built with the Strands Agents SDK. The Orchestrator routes to sub-agents by calling them as tools via InvokeAgentRuntime, passing context explicitly.
Pipeline execution — AWS Lambda Durable Execution makes the CI runner cost-efficient. The orchestrator Lambda suspends at callback.result() after dispatching the pipeline to the MicroVM, consuming no compute while the pipeline runs. When the runner finishes, it signals back via a durable callback and the Lambda resumes to clean up.
Visual canvas — Built with React Flow and dagre for automatic DAG layout. Parallel stages (stages at the same dependency depth) are positioned side-by-side automatically, so a pipeline with lint and test running in parallel after install looks exactly like that on screen.
Infrastructure — Everything is provisioned with Terraform: AgentCore runtimes, API Gateway (REST + WebSocket), Lambda functions, DynamoDB tables, S3, Cognito, and the MicroVM image build pipeline.
Challenges
Runner stages never saved. The pipeline-gen agent was correctly generating runner_stages (the executable steps for the CI runner), but they weren't reaching DynamoDB. The orchestrator response was wrapped in markdown fences — json\n{...}\n — and the frontend's JSON.parse(resultText) silently threw and kept runner_stages = []. The fix was to reuse the already-parsed parsedResult object instead of re-parsing resultText.
WebSocket dropped events. Lambda MicroVMs can take 30–60 seconds to boot and run. If the user's WebSocket connection drops and reconnects mid-run, the pipeline completion event is sent to a stale connection ID (GoneException). Solved with a 15-second polling fallback: when a run is active, the frontend periodically sends a run_status message to check DynamoDB directly, recovering the UI state without a page reload.
What I Learned
Multi-agent systems have emergent failure modes that single-agent systems don't. A wrong key name, a markdown fence, a shared session — any of these silently breaks the chain two hops later. Observability and logging at every hop isn't optional; it's the only way to find these bugs.
Durable execution is genuinely powerful for human-in-the-loop and long-running agent workflows. Suspending a Lambda mid-execution while a MicroVM runs independently — and resuming it via a callback — is a clean pattern that Step Functions would make much more verbose.
AgentCore's session model is designed for persistent user conversations. For tool-calling sub-agents that are called fresh each time, you want stateless sessions — meaning unique session IDs per invocation, not shared ones.
Built With
- agents
- amazon-web-services
- bedrock
- lambda
- strands

Log in or sign up for Devpost to join the conversation.