ForgeFlow is a local-first orchestration studio for building, testing, and operating multi-agent workflows with live model providers and MCP servers.
ForgeFlow is under active development. The core studio, runtime, provider connections, and MCP configuration flows are usable today, but APIs and UX details may continue to evolve.
- A React studio for designing workflows, configuring agents, and managing reusable connections
- A FastAPI runtime for workflow execution, approvals, live events, and persisted runs
- A versioned asset system for workflows, agents, provider connections, MCP servers, and subworkflows
- A local-first control plane that stores data on your machine and binds to
127.0.0.1by default
ForgeFlow connects to live provider APIs and local runtimes using user-supplied credentials. It is designed for local operation by default, with explicit configuration required if you choose to expose it beyond your machine.
Workflow Studio with a sample pipeline:
Agents workspace with reusable specialists:
Connections workspace for shared providers and MCP infrastructure:
- Visual workflow editor with
start,agent,condition,approval,loop,fan_out,join,mapper,delay,cli_agent,subworkflow, andendnodes - Dedicated
Agentsworkspace plus a focusedAgent Builder - Shared
Connectionsworkspace for provider connections and MCP servers - Persisted workflow runs, agent test runs, approvals, and live execution events
- Provider-backed agent execution through Strands integrations
- MCP discovery and runtime tool mounting owned by ForgeFlow rather than exposed as raw
mcp_client
ForgeFlow currently exposes these providers in the studio:
- OpenAI
- OpenAI Responses
- Anthropic
- Gemini
- Amazon Bedrock
- xAI
- Kimi
- LiteLLM
- Llama API
- llama.cpp
- Mistral
- Ollama
- Amazon SageMaker
- Writer
Authentication depends on provider type:
- API key: OpenAI, OpenAI Responses, Anthropic, Gemini, xAI, Kimi, LiteLLM, Llama API, Mistral, Writer
- AWS credentials/profile/ambient auth: Bedrock, SageMaker
- Endpoint-only local runtime: Ollama, llama.cpp
ForgeFlow manages MCP server configuration at the application layer.
- Supported transports:
stdioandstreamable_http - MCP tools can be discovered, inspected, and explicitly attached to agents
- MCP prompts and resources are discoverable in the UI
- Strands
mcp_clientis intentionally not exposed as a direct user capability
- Backend and frontend bind to loopback addresses by default
- The launcher generates a local bearer token if
FORGEFLOW_LOCAL_API_TOKENis not set - API requests require that bearer token
- Secrets are encrypted locally using either
FORGEFLOW_SECRET_ENCRYPTION_KEYor the managed key file in the artifacts directory - Credentials are supplied locally at runtime and are not required to clone, build, or explore the repository
If you intentionally expose ForgeFlow beyond your machine, treat it as a real application boundary and supply your own network, auth, and secret-management controls.
frontend/: React 19 + Vite studiobackend/: FastAPI API, workflow runtime/compiler, persistence, provider runtime, and testsdocs/screenshots/: README screenshotsdocker-compose.yml: local PostgreSQL service for developmentstart-forgeflow.sh: root launcher for backend + frontend with backend log setup
- Python 3.11+
uv- Node.js 20+
- Docker Desktop or another Docker engine if you want the default PostgreSQL setup
cd backend
uv synccd frontend
npm installcd backend
cp .env.example .envSet a local API token in backend/.env, or let the launcher generate one at startup.
Default storage is PostgreSQL at localhost:5432. For a simple SQLite setup instead:
export FORGEFLOW_DATABASE_URL='sqlite+pysqlite:////tmp/forgeflow.db'
export FORGEFLOW_ARTIFACTS_ROOT='/tmp/forgeflow-artifacts'From the repo root:
./start-forgeflow.shThis launcher:
- loads
backend/.envwhen present - generates the local API token when needed
- starts the FastAPI backend through
uv - starts the Vite frontend
- writes backend logs to
.forgeflow-logs/ - auto-starts PostgreSQL through
docker-compose.ymlwhen the configured database is PostgreSQL
If you prefer starting from the frontend directory:
cd frontend
npm run dev:fullstackBackend:
cd backend
uv run python -m uvicorn app.main:create_app --factory --host 127.0.0.1 --port 8000 --reloadFrontend:
cd frontend
npm run devIf you run services separately, make sure the frontend has the same VITE_FORGEFLOW_LOCAL_API_TOKEN value as the backend FORGEFLOW_LOCAL_API_TOKEN.
Backend:
backend/.venv/bin/pytest backend/tests -qFrontend:
cd frontend
npm test
npm run lint
npm run build- Use
uvfor Python dependency and backend runtime commands - Workflow
toolandmcp_toolnodes are intentionally rejected; tools belong on agents - Condition nodes require an explicit
elsebranch - Regex condition operators are disabled for safety
- Docker Compose uses a development-only PostgreSQL password; do not reuse it outside local development
See CONTRIBUTING.md, SECURITY.md, and AGENTS.md for contributor and security guidance.




