Visual workflow automation for OpenClaw — powered by jam-nodes.
AI builds the workflow. The engine runs it deterministically.
jammed-claw connects jam-nodes (a visual workflow framework) to OpenClaw (an AI agent platform). The result:
- Describe what you want automated in plain English
- AI creates a structured workflow (nodes + edges + config)
- Engine executes it deterministically — no tokens burned on repeated runs
- Schedule it to run on cron, triggers, or manual invocation
"Every morning, search for AI news, summarize it, and send it to Discord"
┌──────────────┐ ┌──────────┐ ┌──────────────┐
│ web-search │────▶│ llm │────▶│ message │
│ "AI news today"│ │ summarize │ │ → #general │
└──────────────┘ └──────────┘ └──────────────┘
Runs every day at 8am. Zero AI cost after creation.
Custom jam-nodes that map to OpenClaw's tool infrastructure:
| Node | Description |
|---|---|
openclaw-web-search |
Brave Search API |
openclaw-web-fetch |
Fetch & extract content from URLs |
openclaw-exec |
Run shell commands |
openclaw-message |
Send messages (Discord, Telegram, Slack, etc.) |
openclaw-llm |
Call AI models (Claude, GPT, etc.) |
openclaw-memory |
Read/write memory files |
openclaw-cron |
Schedule workflow runs |
openclaw-browser |
Browser automation |
openclaw-conditional |
Branch based on conditions |
openclaw-transform |
Map, filter, reshape data |
Executes jam-nodes workflows using OpenClaw's tools:
- Topological sort for correct execution order
- Data flows between nodes via typed ports
- Conditional branching and error handling
- Real-time status callbacks
Tools and prompts for OpenClaw agents to create workflows:
- Natural language → workflow JSON
- Edit, debug, and clone existing workflows
- Validates against available node definitions
- Suggests optimizations
Save, list, schedule, and trigger workflows:
- Store workflows as JSON files
- Schedule via OpenClaw cron
- Manual invocation from chat
- Execution history and logs
npm install jammed-claw @jam-nodes/coreimport { OpenClawRunner, openclawNodes } from 'jammed-claw';
import { NodeRegistry } from '@jam-nodes/core';
// Register OpenClaw nodes
const registry = new NodeRegistry();
openclawNodes.forEach(node => registry.register(node));
// Create runner with OpenClaw tool bridge
const runner = new OpenClawRunner(registry, {
onStatus: (nodeId, status) => {
console.log(`${nodeId}: ${status.status}`);
}
});
// Run a workflow
const result = await runner.run(workflowJSON);Copy the skill/ folder into your OpenClaw workspace skills directory:
cp -r skill/ ~/.openclaw/workspace/skills/jammed-claw/
mkdir -p ~/.openclaw/workspace/workflows/Set env vars for the bridge:
export BRAVE_API_KEY=your-key # for web search node
export OPENAI_API_KEY=your-key # for LLM nodeThen the agent can create and run workflows from chat:
User: "Every hour, check my GitHub notifications and summarize them on Slack"
Agent: Created workflow "GitHub Notification Digest" with 3 nodes. Scheduled hourly. ✅
Run workflows directly:
node ~/.openclaw/workspace/skills/jammed-claw/scripts/run-workflow.mjs ai-news-digest┌─────────────────────────────────────────────┐
│ OpenClaw │
│ ┌──────────┐ ┌──────────┐ ┌───────────┐ │
│ │ Agent │ │ Cron │ │ Message │ │
│ │ (Claude) │ │ Scheduler│ │ Channels │ │
│ └────┬─────┘ └────┬─────┘ └─────┬─────┘ │
│ │ │ │ │
│ ┌────▼──────────────▼──────────────▼─────┐ │
│ │ jammed-claw │ │
│ │ ┌─────────┐ ┌────────┐ ┌───────────┐ │ │
│ │ │ Builder │ │ Runner │ │ Manager │ │ │
│ │ └────┬────┘ └───┬────┘ └─────┬─────┘ │ │
│ │ │ │ │ │ │
│ │ ┌────▼──────────▼────────────▼─────┐ │ │
│ │ │ OpenClaw Node Definitions │ │ │
│ │ │ web-search │ llm │ message │ … │ │ │
│ │ └──────────────────────────────────┘ │ │
│ └─────────────────────────────────────────┘ │
│ │ │
│ ┌───────────────────▼────────────────────┐ │
│ │ @jam-nodes/core │ │
│ │ Registry │ ExecutionContext │ Types │ │
│ └────────────────────────────────────────┘ │
└──────────────────────────────────────────────┘
MIT