Quick Start
Write and run your first FlowForger flow.
Create a Flow
Create a file called hello.ff.ts. No imports needed — the transformer resolves the decorators and FlowContext automatically:
@Flow('HelloWorld')
class HelloWorld {
@HttpTrigger({ method: 'POST' })
trigger() {}
@Action()
async run(ctx: FlowContext) {
await ctx.response('Response', 200, { message: 'Hello from FlowForger!' });
}
}
Validate
Check the flow for mistakes, including the rules Power Automate enforces when a flow is saved:
npx flowforger validate hello.ff.ts
A clean flow prints ✓ No issues found.; otherwise each finding is printed with its line, column and code; see Validation and diagnostics.
Run Locally
npx flowforger run hello.ff.ts
On a terminal this prints the execution trace, one line per action. Pipe it or pass --json to get the full run result as JSON instead.
Compile to IR
npx flowforger compile hello.ff.ts --out hello.ir.json
Compile to Logic Apps JSON
npx flowforger compile hello.ff.ts --emit logicapps --out clientdata.json
Run a real flow safely
A flow that reads from SharePoint and then writes somewhere can run locally against your real data without making the write. Sign in with --auth (after setting up an app registration) and stop before the first action that changes anything:
npx flowforger run my-flow.ff.ts --auth --stop-before Create_item
Everything before Create_item runs live, and the CLI prints the inputs Create_item would have been called with. --mock replaces an action's result with a JSON file, and --live makes every other outgoing call stop the run. See Local testing.
Next Steps
- DSL Overview — Learn the full DSL syntax
- Examples — Runnable example flows, from a first HTTP call to child flows and mocks
- Deploying —
pull,diffandpushagainst a Dataverse environment - CLI Reference — All available commands