Quick Start Guide
Getting Started
OpenFlows is a thin orchestration layer that runs on top of a self-hosted Coder deployment. It turns a declared PocketFlow graph, typed Redis SharedStore contracts, and a reconcile loop into an autonomous engineering team: issue detection, planning, implementation, adversarial review, CI verification, and merge - all driven by NEXUS and executed by ephemeral Coder workspaces. No AI software, no LLM keys, and no GitHub tokens live inside a worker workspace.
Why architecture-first
1Prerequisites
Coder governs where agents run; OpenFlows governs how they coordinate
- Coder is the only runtime. It provides ephemeral workspaces, control-plane AI agents, model governance, identity, audit logging, and cost tracking. Worker workspaces contain zero AI software, zero LLM keys, and zero GitHub tokens.
- OpenFlows is the orchestration brain. It provides the PocketFlow graph, typed SharedStore contracts, the NEXUS reconcile loop, and the FORGE↔SENTINEL planning cycle.
2Quick Start Installation
The only supported path is Docker Compose. Clone the repository, copy the environment template, start the stack, bootstrap OpenFlows, and add your first tenant. The entire sequence takes a few minutes.
git clone https://github.com/The-AgenticFlow/openflows.git cd openflows cp .env.example .env # Edit .env: set GITHUB_TOKEN but leave CODER_SESSION_TOKEN empty # 1. One-time Bootstrap (creates admin user, pushes templates, verifies LLM/GitHub auth) ./scripts/prod.sh bootstrap # 2. Start the Controller (resets Redis, starts controller) ./scripts/prod.sh run # 3. Add a tenant (links GitHub repo, creates nexus workspace) ./scripts/prod.sh tenant owner/repo --name my-team # 4. Create a GitHub issue - OpenFlows picks it up automatically
Production Architecture
In production, the controller runs inside a Nexus workspace provisioned by Coder.
The workspace auto-starts the controller via its startup_script.
Coder provisions nexus workspace from template
↓
Workspace startup script runs
↓
Line 1: Installs openflows-harness binary
↓
Line 2: Starts heartbeat daemon
↓
Line 3: Executes: openflows run
↓
Controller auto-starts inside workspace
The nexus workspace template is in crates/coder-client/templates/openflows-nexus/.
It receives all env vars from Coder and auto-starts the controller.
The openflows-harness CLI
openflows-harness binary. The Coder Agent
invokes it via shell (guided by skills) to read and write the Redis SharedStore with typed,
validated schemas. Agents never run redis-cli directly - the harness is the only
Redis client inside a workspace.
See the Installation Guide for a detailed configuration reference, the Token Guide for GitHub and Coder auth scopes, and the First Issue Walkthrough for a complete end-to-end example.
3Multi-Tenancy Model
One Coder server serves many teams. Each tenant is a real Coder user, a repository binding, and an
openflows-nexus workspace. Tenants are isolated by Coder RBAC and by per-tenant
Redis keyspace prefixes (ns:{tenant}:...).
# Add another tenant
./scripts/prod.sh tenant another-org/another-repo --name team-b Environment Configuration
.env.example to .env and configure:
- GitHub OAuth App credentials for Coder external auth
- Coder deployment settings
- LLM provider settings in the Coder dashboard
3.1 Plug-and-Play Extension
OpenFlows is designed for extension without modifying core orchestration code:
Add a skill
Drop a directory into orchestration/plugin/skills/ with a SKILL.md, list it in orchestration/agent/registry.json under the role's skills array, and run ./update-binaries.sh. No Rust code change is required.
Add an MCP server
Add it to the role's mcp object in registry.json, or register it centrally in the Coder dashboard (AI Settings → MCP Servers). Both coexist.
Enable a new model
Configure it in the Coder dashboard (AI Settings → Coder Agents → Models), then reference it in orchestration/agent/registry.json via the model field. See Model Routing.
Development updates
After code changes, run ./update-binaries.sh to rebuild and redeploy binaries to all workspaces.
How it works
You create a GitHub issue → NEXUS picks it up → FORGE writes code → SENTINEL reviews adversarially → VESSEL merges green PRs → LORE documents → you get a merged PRYou are escalated only for security concerns, ambiguous specifications, or major architectural decisions.
4Create Your First Issue
Once OpenFlows is running and your tenant is configured, create a GitHub issue in your repository. OpenFlows will automatically:
- NEXUS detects the issue on its next poll cycle.
- FORGE is assigned the ticket with a unique identifier.
- An ephemeral Coder workspace is provisioned for the FORGE worker.
- FORGE writes code against the agreed contract.
- SENTINEL reviews every segment adversarially.
- VESSEL handles CI, conflicts, and merge.
- LORE documents the changes automatically.
- The workspace is torn down after merge - no lingering state.
The team
| Agent | Role | What it does |
|---|---|---|
| NEXUS | Orchestrator / Controller | Assigns issues, coordinates the team, owns recovery, and notifies you when needed. |
| FORGE | Builder | Writes code against an agreed contract, creates branches, and opens PRs. |
| SENTINEL | Reviewer | Adversarially reviews code for security, quality, and test coverage. |
| VESSEL | DevOps | Monitors CI, handles merge conflicts, and squash-merges green PRs. |
| LORE | Writer | Documents decisions, updates changelogs, and maintains project history. |
5Next Steps
Documentation
- System Design - PocketFlow engine and SharedStore architecture
- Coder Integration - Version compatibility and runtime contract
- Multi-Tenancy - Tenant model and Redis namespacing
- Security Model - AI governance controls and network policy
- Extending - Adding skills, MCP servers, and models
- API Reference - OpenFlows control-plane endpoints
- Troubleshooting - Common failures and diagnostics