| name | jammed-claw |
| description | Create and run visual workflows using jam-nodes. Use when the user wants to build multi-step automations, data pipelines, or scheduled tasks as structured workflows instead of ad-hoc tool calls. |
jammed-claw — Visual Workflows for OpenClaw
Build and run jam-nodes workflows that execute deterministically using OpenClaw tools.
AI builds the workflow once → engine runs it forever with zero token cost.
Setup
- Copy this
skill/ folder into your OpenClaw workspace: ~/.openclaw/workspace/skills/jammed-claw/
- Create a
workflows/ directory in your workspace: ~/.openclaw/workspace/workflows/
- Set environment variables for bridge features:
BRAVE_API_KEY — for web search node
OPENAI_API_KEY — for LLM node
When to Use
- User wants a repeatable multi-step automation (not a one-off task)
- Task involves chaining tools (search → summarize → send)
- User says "workflow", "pipeline", "automate", or wants something to run on a schedule
- A task would burn tokens on every run — make it deterministic instead
Workflow Format
Workflows are JSON files stored in workspace/workflows/. Structure:
{
"id": "my-workflow",
"workflow": {
"name": "Workflow Name",
"description": "What it does",
"nodes": [
{ "id": "unique_id", "type": "node-type", "config": { "param": "value" } }
],
"edges": [
{ "source": "node_1", "target": "node_2", "sourceHandle": "outputPort", "targetHandle": "inputPort" }
]
},
"createdAt": "ISO-timestamp",
"updatedAt": "ISO-timestamp",
"runCount": 0
}
Available Nodes
| Node Type | Name | Inputs | Outputs |
|---|
openclaw-web-search | Web Search | query (string), count (number, default 5) | results (array), resultText (string) |
openclaw-web-fetch | Web Fetch | url (string), mode ("markdown"/"text") | content (string) |
openclaw-exec | Shell Command | command (string), timeout (number, default 30) | stdout, stderr (string), exitCode (number) |
openclaw-message | Send Message | target (string), message (string), channel? (string) | sent (boolean) |
openclaw-llm | LLM | prompt (string), systemPrompt?, model?, temperature?, maxTokens? | response (string) |
openclaw-memory-read | Read Memory | path (string) | content (string) |
openclaw-memory-write | Write Memory | path (string), content (string) | written (boolean) |
openclaw-conditional | Conditional | value (any), condition (string) | result (boolean), value (passthrough) |
openclaw-template | Text Template | template (string), data (object) | text (string) |
openclaw-merge | Merge | a, b, c? (any) | merged (object) |
openclaw-json-extract | JSON Extract | data (any), path (string) | value (any) |
Conditions (for conditional node)
Built-in (no LLM needed): not empty, empty, contains X, greater than N, less than N, equals X
Complex/natural language conditions fall back to LLM evaluation.
Running Workflows
node workspace/skills/jammed-claw/scripts/run-workflow.mjs
node workspace/skills/jammed-claw/scripts/run-workflow.mjs <workflow-id>
node workspace/skills/jammed-claw/scripts/run-workflow.mjs <workflow-id> --var key=value
Creating a Workflow
- Design the workflow JSON with nodes and edges
- Save to
workspace/workflows/<id>.json in the StoredWorkflow format above
- Run it:
node workspace/skills/jammed-claw/scripts/run-workflow.mjs <id>
Data Flow
- Edges pipe data between nodes:
sourceHandle → targetHandle
- Use
{{variable}} in config strings for interpolation from upstream node outputs
- Each node's output is stored as a variable named after the node's ID
- Output object keys are also stored as top-level variables
Conditional Branching
When a conditional node evaluates to false, all downstream nodes connected via edges are skipped.
Scheduling with Cron
Use OpenClaw cron to schedule workflow runs:
cron add → agentTurn → "Run the jammed-claw workflow: <id>"
Or as a system event that the agent picks up on heartbeat.
Example Workflow
"Search for AI news and summarize it":
{
"id": "ai-news-digest",
"workflow": {
"name": "AI News Digest",
"description": "Searches for AI news and summarizes the results",
"nodes": [
{
"id": "search",
"type": "openclaw-web-search",
"config": { "query": "AI news today", "count": 5 }
},
{
"id": "summarize",
"type": "openclaw-llm",
"config": {
"prompt": "Summarize these search results into a brief news digest:\n\n{{resultText}}",
"systemPrompt": "You are a concise tech news summarizer. Output 3-5 bullet points.",
"temperature": 0.3
}
}
],
"edges": [
{ "source": "search", "target": "summarize", "sourceHandle": "resultText", "targetHandle": "prompt" }
]
},
"createdAt": "2026-02-19T00:00:00Z",
"updatedAt": "2026-02-19T00:00:00Z",
"runCount": 0
}