Two deployment patterns
Flow server
Zero-config: Genkit automatically wraps every registered flow as a
POST /<flowName> endpoint. Best when you want to expose all flows quickly.Framework adapter
Mount individual flows inside an existing Express, Flask, FastAPI, or
net/http app. Best when you need full control over routes, middleware, and auth.Flow server
The flow server is the fastest path to a running HTTP API. Each language has a slightly different API.- Node.js
- Python
- Go
Use The server reads the
startFlowServer from @genkit-ai/express to start an Express server that exposes each flow at POST /<flowName>.PORT environment variable if port is not set, and defaults to 3400.Framework adapter pattern
For more control — custom auth middleware, additional routes, or integration with an existing service — mount flows individually inside a framework you already use.- Node.js (Express)
- Python (Flask)
- Go
Disabling the dev reflection server in production
In development, Genkit starts a local reflection API server on port4000 (used by the Dev UI). This server must not run in production.
Set the environment variable before starting your server:
GENKIT_ENV=dev; removing that variable is sufficient.
Wire format
Every flow — regardless of language — accepts and returns a consistent JSON envelope:Next steps
Firebase Cloud Functions
Deploy flows as HTTPS callable Firebase Functions.
Cloud Run
Run containerised Genkit apps on Google Cloud Run.
Observability
Traces, metrics, and logs for production Genkit apps.
Flows
Learn how flows work and how to define them.
