Unified n8n-style Mainframe Workflow Platform
FlowASM combines IPLLab (assembly engine), ZeroFrame (3270 automation), TK5/Hercules, and z/OS into a single visual workflow platform with drag-and-drop capabilities.
- π¨ Visual Workflow Builder - n8n-style drag-and-drop interface
- π§ Sandboxed ASM Engine - Built-in IPLLab engine for deterministic demos
- π Multiple Connectors - TK5, z/OS, 3270 terminal automation
- π Live Execution - Watch workflows run with real-time logs
- πΎ Import/Export - Save and share workflows as JSON
- π Template Variables - Pass data between nodes
- π Node.js Only - No Python, pure npm
cd FlowASM
npm install
npm startOpen http://localhost:3000 and start building workflows!
Or run the CLI demo:
npm run demoFlowASM is a visual workflow platform that chains mainframe operations:
Assemble Code β Execute β Submit JCL β Verify 3270 β Output
- Sandboxed Execution - Run assembly code locally without external dependencies
- TK5 Integration - Connect to TK5/Hercules emulator for real mainframe ops
- z/OS Integration - Submit jobs to real z/OS systems (secure credentials)
- 3270 Automation - Automate terminal interactions
- Visual Builder - Create workflows with drag-and-drop UI
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β FlowASM Core Engine β
β (n8n-style orchestrator) β
ββββββββββββ¬βββββββββββββββββββββββββββββββββββββββ
β
ββββββββ΄βββββββ¬βββββββββββ¬βββββββββββ
β β β β
βββββΌβββββ βββββΌβββββ βββββΌβββββ βββββΌβββββ
β ASM β β TK5 β β z/OS β β3270/ZF β
βSandbox β βConnectorβ βConnectorβ βConnectorβ
ββββββββββ ββββββββββ ββββββββββ ββββββββββ
FlowASM/
βββ core/
β βββ runner.js β Workflow orchestrator
β βββ flow-engine.js β Execution engine
β βββ api.js β REST API
βββ engines/
β βββ asm-sandbox/
β βββ adapter.js β Connector adapter
β βββ engine.js β ASM engine (IPLLab port)
βββ connectors/
β βββ tk5/ β TK5/Hercules connector
β βββ zos/ β z/OS connector
β βββ zeroframe/ β 3270 terminal connector
βββ workflows/
β βββ payroll-demo.json β Sandbox demo
β βββ tk5-demo.json β TK5 demo
β βββ zos-integration.json β z/OS demo
βββ ui/
β βββ index.html β Web interface
β βββ app.js β UI logic
β βββ styles.css β Styling
βββ docs/
β βββ README_DEMO.md β Demo guide
β βββ CREDENTIALS_TEMPLATE.md β Security guide
βββ server.js β Main entry point
βββ cli-demo.js β CLI demo runner
βββ package.json
No setup required - Runs entirely in asm-sandbox
- Compile payroll assembly code
- Execute calculation (1000 + 250 = 1250)
- Debug and verify result
- Submit JCL via 3270 (stubbed)
- Wait for completion (stubbed)
npm run demoRequires: TK5/Hercules running on localhost:8038
- Compile assembly code
- IPL TK5 system
- Submit job to TK5
- Check job status
export TK5_ENDPOINT=http://localhost:8038
npm start
# Load "TK5 Emulator Demo" in UIRequires: z/OS credentials (see docs/CREDENTIALS_TEMPLATE.md)
- Compile program
- Submit job to real z/OS
- Fetch SMF records
- Read output dataset
export ZOS_ENDPOINT=https://your-zos.com
export ZOS_USERNAME=user
export ZOS_PASSWORD=pass
npm start
# Load "z/OS Integration Example" in UIasm.compile
- Compiles assembly source code
- Returns: bytecode, instructions, labels
asm.run
- Executes compiled bytecode
- Returns: registers, output, exitCode
asm.debug
- Debug session with breakpoints
- Returns: breakpointsHit, stepsExecuted, finalState
tk5.ipl
- IPL (boot) TK5 system
- Config:
{ volume: "SYSRES" }
tk5.submit
- Submit JCL job to TK5
- Config:
{ jobName, jcl }
tk5.status
- Get job status
- Config:
{ jobId }
zos.submit
- Submit JCL to real z/OS
- Config:
{ jcl }
zos.smf
- Fetch SMF records
- Config:
{ dataset }
zos.dataset
- Read dataset content
- Config:
{ dataset }
zeroframe.send
- Send action to 3270 terminal
- Config:
{ action, text }
zeroframe.read
- Read screen content
- Config:
{}
zeroframe.wait
- Wait for expected text
- Config:
{ expectedText, timeout }
Pass data between nodes:
{
"nodes": [
{
"id": "compile",
"type": "asm.compile",
"config": { "sourceCode": "..." }
},
{
"id": "run",
"type": "asm.run",
"config": {
"bytecode": "{{node.compile.artifacts.bytecode}}"
}
}
]
}Health check and connector status
List all workflows
Get workflow definition
Execute a workflow
NEVER commit credentials!
All sensitive configuration via environment variables:
export TK5_ENDPOINT=http://localhost:8038
export ZOS_ENDPOINT=https://zos.example.com
export ZOS_USERNAME=user
export ZOS_PASSWORD=pass
export ZEROFRAME_ENDPOINT=http://localhost:3270See docs/CREDENTIALS_TEMPLATE.md for details.
Connectors automatically fallback to stubbed mode when unavailable:
- asm-sandbox: Always available (built-in)
- tk5: Stubbed if TK5_ENDPOINT not set
- zos: Stubbed if credentials not configured
- zeroframe: Stubbed if ZEROFRAME_ENDPOINT not set
Stubbed connectors return deterministic responses marked with stubbed: true.
- Open http://localhost:3000
- Select workflow from sidebar
- Click nodes to edit configuration
- Click "
βΆοΈ Run Workflow" - Watch execution in real-time
Create workflows/my-workflow.json:
{
"id": "my-workflow",
"name": "My Custom Workflow",
"nodes": [
{
"id": "step1",
"type": "asm.compile",
"description": "Compile code",
"config": {
"sourceCode": ".TEXT\nmain:\n MOV R0, #42\n HLT"
}
}
]
}Execute via API:
curl -X POST http://localhost:3000/api/workflows/execute \
-H "Content-Type: application/json" \
-d @workflows/my-workflow.jsonPort 3000 in use:
PORT=3001 npm startConnector stubbed:
- Check environment variables
- Verify endpoint availability
- See docs/CREDENTIALS_TEMPLATE.md
Workflow fails:
- Check execution log in UI
- Verify JSON syntax
- Inspect node configuration
express- HTTP server (only dependency!)
Theme: Combining separate systems into a unified whole
FlowASM demonstrates this by unifying:
- IPLLab (assembly engine)
- ZeroFrame (3270 automation)
- TK5/Hercules (emulator)
- z/OS (real mainframe)
Into a single n8n-style visual workflow platform.
- Demo Guide - 60-90 second demo script
- Credentials Template - Security configuration
- Try the demo -
npm run demo - Explore UI -
npm startβ http://localhost:3000 - Configure connectors - See docs/CREDENTIALS_TEMPLATE.md
- Build workflows - Create custom automation
- Integrate systems - Connect TK5, z/OS, 3270
Built with Node.js only - No Python, pure npm! π