DevTool Setup
How to get the DevTool running against your own flows.
Prerequisites
You need:
@flow-state-dev/cliinstalled (provides thefsdevcommand)@flow-state-dev/devtoolinstalled (provides the pre-built UI assets)- At least one flow definition in a conventional location
pnpm add -D @flow-state-dev/cli @flow-state-dev/devtool
Project structure
The CLI discovers flows from standard directories. A minimal project looks like this:
my-project/
├── src/
│ └── flows/
│ └── my-flow/
│ └── flow.ts ← exports a FlowInstance as default
├── package.json
└── .env.local ← optional, loaded automatically
The flow file should default-export a FlowInstance created by defineFlow:
import { defineFlow, handler } from "@flow-state-dev/core";
const echo = handler({
name: "echo",
execute: async (input) => input,
});
export default defineFlow({
kind: "my-flow",
actions: {
echo: { block: echo },
},
})({ id: "default" });
Starting the server
Run from your project root:
fsdev dev
Output looks like:
DevTool server running at http://localhost:4200
Flows: my-flow
API: http://localhost:4200/api/flows
Data: .fsdev/data/
The DevTool opens in your browser. Select your flow from the navigator, create a session, and dispatch actions.
Custom flow directories
If your flows live somewhere non-standard, use --flow-dir:
fsdev dev --flow-dir ./lib/workflows
This flag is repeatable. When specified, the default src/flows/ and flows/ discovery is skipped.
Model overrides
During development you might want a faster or cheaper model. Use --model to override all generator blocks:
fsdev dev --model gpt-4o-mini
Environment variables
The CLI loads .env.local files automatically, walking up from your working directory. Put API keys and configuration there:
# .env.local
OPENAI_API_KEY=sk-...
Data persistence
Session data persists to .fsdev/data/ relative to your working directory. Delete this directory to start fresh. The directory is created automatically on first use.
Monorepo support
In monorepos, fsdev dev scans one level under packages/, examples/, and apps/ for flow directories. Run it from the monorepo root to discover flows across all packages.