Installation
OpenFlows is a thin orchestration brain that runs on top of a self-hosted Coder deployment. 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.
The only supported installation path is Docker Compose. It brings up the entire stack - Coder,
Redis, and the OpenFlows engine - with consistent networking and a single configuration surface.
Other legacy methods (npm, one-liner scripts, and cargo install) are no longer supported
and have been removed from the documentation.
Prerequisites
- Docker 24+ and Docker Compose
- Git 2.x+
- A GitHub OAuth App for Coder external authentication
- At least one LLM provider configured in the Coder dashboard (AI Settings → Coder Agents → Models)
Token scopes
Docker Compose Stack
Clone the repository, copy the environment template, and start the stack:
git clone https://github.com/The-AgenticFlow/openflows.git cd openflows cp .env.example .env # edit with your GitHub OAuth app credentials # Start the infrastructure stack docker compose up -d
What this starts
- Coder - governed execution environment on port 7080
- Redis - SharedStore for agent coordination on port 6379
- OpenFlows engine - orchestration layer and NEXUS reconcile loop
- All services wired together with internal Docker networking
Bootstrap OpenFlows
After the infrastructure is healthy, run the bootstrap command. It creates the OpenFlows admin user, pushes Coder templates for each role (nexus, forge, sentinel, vessel, lore), and verifies that the orchestration layer can reach Coder and Redis.
./scripts/prod.sh bootstrap
If bootstrap fails, the CLI prints a specific diagnostic and exits non-zero. Common causes are missing GitHub OAuth credentials, an unreachable Coder server, or a Redis connection failure. See Troubleshooting for resolution steps.
Run the Controller
Start the Orchestrator. This command always resets Redis to a clean slate before starting the controller. It runs in the foreground - keep this terminal open or run it in a service manager.
./scripts/prod.sh run
Monitor the controller logs in another terminal:
tail -f /tmp/openflows-controller.log
Add Your First Tenant
A tenant represents a team bound to a specific repository. The tenant add command creates a
Coder user for the team, links the repository through Coder external auth, and provisions the
openflows-nexus workspace that polls the repo for issues.
./scripts/prod.sh tenant owner/repo --name my-team
The first time a tenant is added, the owning user must complete the Coder external-auth flow to
grant GitHub access. After that, NEXUS can clone, create branches, open PRs, and merge on behalf of
the tenant. Tenant state is isolated by Redis keyspace prefixes (ns:{tenant}:...).
Health Check
Verify the full stack is functional:
./scripts/prod.sh doctor
Create Your First Issue
With the tenant active, create a GitHub issue in the bound repository. NEXUS detects it on the next poll cycle, assigns it to an available FORGE worker, and the autonomous cycle begins. No further CLI commands are required for normal operation.
# Create a GitHub issue in owner/repo - OpenFlows picks it up automatically
Environment Configuration
The .env.example file contains every required and optional variable. Copy it to
.env and edit at minimum:
- GitHub OAuth App - client ID and secret for Coder external auth
- Coder deployment - external URL and internal API endpoint
- Redis - connection string for the SharedStore
- LLM routing - configured in the Coder dashboard, referenced by
orchestration/agent/registry.json
GitHub OAuth App
Required for Coder external authentication. Create a GitHub OAuth App and add the client ID and secret to your .env file.
LLM Provider
Configure at least one model in the Coder dashboard (AI Settings → Coder Agents → Models). OpenFlows routes all LLM calls through the Coder AI Gateway.
Multi-Tenancy
Each team is a tenant with its own repository binding. The tenant add command links a GitHub repository to an OpenFlows team.
Coder Templates
Bootstrap pushes the openflows-{role} templates to your Coder deployment for ephemeral workspace provisioning.
Architecture-first approach
- PocketFlow engine - declared flow graph for agent coordination
- SharedStore contracts - typed Redis schemas for state management
- Node trait pattern -
prep → exec → postseparation for each agent - Explicit routing table - recovery built into every step
Verification
After running docker compose up -d, verify all services are running:
# Check Docker containers docker ps # Expected output should show: # - coder (port 7080) # - redis (port 6379) # - openflows engine
Development Workflow
For operators and contributors iterating on OpenFlows itself, rebuild and redeploy binaries after code changes:
# After code changes, rebuild and update binaries ./update-binaries.sh
Next steps
- OpenFlows automatically monitors the bound repository for issues.
- Create a GitHub issue to trigger the autonomous team.
- Watch NEXUS pick it up, FORGE write code, SENTINEL review, and VESSEL ship the PR.
- LORE documents the changes automatically.