Skip to content

Commit 86bb6e7

Browse files
committed
Update README: current tool list, remove stale transpiler refs, add clawnify.com
1 parent 43fd702 commit 86bb6e7

1 file changed

Lines changed: 54 additions & 74 deletions

File tree

README.md

Lines changed: 54 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ Workflows today are written **for** agents, not **by** them. Visual canvas tools
4141

4242
1. **An LLM must be able to write a valid workflow in a single turn.** If the format is too complex, agents hallucinate. If it's too simple, real workflows can't be expressed.
4343

44-
2. **The format is the asset, not the runtime.** Write once, run as an OpenClaw plugin today, deploy to Cloudflare Workers tomorrow, run in a standalone server next month.
44+
2. **The format is the asset, not the runtime.** Write once, run as an OpenClaw plugin today, run in a standalone server tomorrow.
4545

4646
3. **AI nodes are first-class citizens.** `do: ai` and `do: agent` are core primitives with structured output, model selection, and schema validation — not HTTP calls with extra steps.
4747

@@ -68,9 +68,9 @@ Workflows today are written **for** agents, not **by** them. Visual canvas tools
6868

6969
### Portability
7070
- **OpenClaw plugin** — run flows as agent tools today
71-
- **Cloudflare transpiler** — convert to `WorkflowEntrypoint` TypeScript
7271
- **Standalone runner** — self-hosted Node.js server (coming soon)
7372
- **Static validation** — catch bad references and missing fields before execution
73+
- **Draft/publish versioning** — edit safely, publish when ready, run any version
7474

7575
---
7676

@@ -107,7 +107,6 @@ A flow is JSON. No custom syntax, no new language — just structured data that
107107
"name": "handle-billing",
108108
"do": "agent",
109109
"task": "Draft a billing support reply for: {{ trigger.body }}",
110-
"model": "smart",
111110
"output": "draft"
112111
}
113112
],
@@ -116,7 +115,6 @@ A flow is JSON. No custom syntax, no new language — just structured data that
116115
"name": "handle-technical",
117116
"do": "agent",
118117
"task": "Draft a technical support reply for: {{ trigger.body }}",
119-
"model": "smart",
120118
"output": "draft"
121119
}
122120
]
@@ -126,7 +124,6 @@ A flow is JSON. No custom syntax, no new language — just structured data that
126124
"name": "handle-general",
127125
"do": "agent",
128126
"task": "Draft a general support reply for: {{ trigger.body }}",
129-
"model": "smart",
130127
"output": "draft"
131128
}
132129
]
@@ -180,7 +177,7 @@ The most important node. A single LLM call that returns structured or freeform o
180177
| `prompt` | The instruction to the model. Supports `{{ templates }}`. |
181178
| `input` | Dotted path to a value in flow state passed as context |
182179
| `schema` | Output shape. When set, enforces JSON mode. Keys are type hints. |
183-
| `model` | `fast` (Haiku), `smart` (Sonnet), `best` (Opus), or any model string |
180+
| `model` | `fast` (Gemini 3 Flash), `smart` (Claude Sonnet 4.6), `best` (Minimax M2.5), or any model string |
184181
| `temperature` | 0–1, default 0 for deterministic workflow steps |
185182

186183
**Why schema matters:** downstream nodes reference `classification.category` as a reliable string. Without schema, the output is freeform text and you're back to parsing.
@@ -210,7 +207,6 @@ On OpenClaw, this delegates to `openclaw agent --agent <id> --message "..."`. Th
210207
| `agent` | OpenClaw agent ID (e.g. `"main"`, `"ops"`). Uses config `defaultAgent` or `"main"` if omitted. |
211208
| `input` | Dotted path to context passed with the task |
212209
| `tools` | Hint for non-OpenClaw runtimes (OpenClaw agents have their own tool policy) |
213-
| `model` | Model for fallback AI call (standalone mode only) |
214210

215211
The distinction between `ai` and `agent` is intentional:
216212
- `do: ai` = deterministic, one-shot, structured output — use for classification, drafting, extraction
@@ -507,15 +503,21 @@ The format is the spec. The runtime is swappable.
507503

508504
### 1. OpenClaw Plugin (current)
509505

510-
Five tools registered in OpenClaw:
506+
Eleven tools registered in OpenClaw:
511507

512508
| Tool | Does |
513509
|---|---|
514-
| `flow_run` | Execute a flow inline or from a file |
510+
| `flow_create` | Create a new flow definition and save to file |
511+
| `flow_delete` | Soft-delete a flow (moves to `.clawflow/bin/`) |
512+
| `flow_restore_from_bin` | List bin contents or restore a deleted flow |
513+
| `flow_run` | Execute a flow (uses latest published version by default) |
515514
| `flow_resume` | Resume after an approval gate |
516515
| `flow_send_event` | Push an event into a waiting flow |
517516
| `flow_status` | Inspect any running or completed instance |
518-
| `flow_transpile` | Convert a flow to Cloudflare Workers TypeScript |
517+
| `flow_list` | List all flows with metadata, expected inputs, and version info |
518+
| `flow_read` | Read a flow definition (draft or specific version), inspect single nodes |
519+
| `flow_publish` | Publish current draft as a new numbered version |
520+
| `flow_edit` | Edit nodes in a flow definition (set, update, add, remove, move, wrap, revert, list) |
519521

520522
**Config:**
521523
```json
@@ -531,41 +533,15 @@ Five tools registered in OpenClaw:
531533
"agents": {
532534
"list": [{
533535
"id": "main",
534-
"tools": { "alsoAllow": ["flow_run", "flow_resume", "flow_send_event", "flow_status", "flow_transpile"] }
536+
"tools": { "alsoAllow": ["flow_create", "flow_delete", "flow_restore_from_bin", "flow_run", "flow_resume", "flow_send_event", "flow_status", "flow_list", "flow_read", "flow_publish", "flow_edit"] }
535537
}]
536538
}
537539
}
538540
```
539541

540542
---
541543

542-
### 2. Cloudflare Workers + Workflows (transpiler)
543-
544-
`flow_transpile` converts any `.flow` definition to a complete Cloudflare `WorkflowEntrypoint` TypeScript class.
545-
546-
Node mapping:
547-
548-
| clawflow | Cloudflare Workflows |
549-
|---|---|
550-
| `do: ai` | `step.do()` with AI provider call |
551-
| `do: agent` | `step.do()` with extended AI call |
552-
| `do: wait / for: event` | `step.waitForEvent({ type, timeout })` |
553-
| `do: sleep` | `step.sleep(name, duration)` |
554-
| `do: parallel / mode: race` | `Promise.race([step.do, ...])` |
555-
| `do: parallel / mode: all` | `Promise.all([step.do, ...])` |
556-
| `do: http` | `step.do()` wrapping `fetch()` |
557-
| `do: memory` | `step.do()` wrapping KV/D1 |
558-
| retry policy | `step.do(name, config, callback)` |
559-
560-
The transpiler gives you:
561-
- **Durable execution** — Cloudflare guarantees steps complete exactly once, globally
562-
- **Long-running flows** — minutes, hours, weeks — without timeouts
563-
- **Global scale** — Cloudflare's network, not your server
564-
- **Audit trail** — Cloudflare's Workflows dashboard shows every step
565-
566-
---
567-
568-
### 3. Standalone Node.js Runner (coming soon)
544+
### 2. Standalone Node.js Runner (coming soon)
569545

570546
A small HTTP server wrapping the runner. Expose flows as endpoints, receive webhooks, manage instances via REST API. Self-hosted alternative to Cloudflare.
571547

@@ -579,7 +555,7 @@ GET /flows/instances/:id # get instance status
579555

580556
---
581557

582-
### 4. Flow Registry (coming soon)
558+
### 3. Flow Registry (coming soon)
583559

584560
A community library of reusable, shareable `.flow` definitions. Think npm for workflows — but agent-writable.
585561

@@ -660,9 +636,9 @@ Rules:
660636
## What's Next
661637

662638
- Standalone HTTP runner (self-hosted, no OpenClaw dependency)
663-
- Webhook and cron triggers
664639
- Observability: structured traces, token tracking
665640
- Flow registry: shareable, reusable community flows
641+
- Cloudflare Workers transpiler
666642
- Visual canvas
667643

668644
---
@@ -672,38 +648,38 @@ Rules:
672648
```
673649
┌─────────────────────────────────────────────────────────────────┐
674650
│ .flow definition │
675-
│ (JSON/YAML — the portable format spec) │
651+
(JSON — the portable format spec) │
676652
└──────────────────────────────┬──────────────────────────────────┘
677653
678-
┌───────────────────┼───────────────────┐
679-
680-
┌──────▼──────┐ ┌──────▼──────┐ ┌────────▼───────┐
681-
│ OpenClaw │ │ Cloudflare │ │ Standalone │
682-
│ Plugin │ Workers │ Node Server │
683-
(via (coming soon)
684-
│ flow_run transpiler) │ │ │
685-
│ flow_resume │ │ REST API │
686-
│ flow_status │ │ step.do() │ Webhook recv │
687-
│ flow_event │ │ waitForEvent │ │ Cron trigger
688-
└──────┬──────┘ └──────────────┘ └────────────────┘
689-
690-
┌──────▼──────────────────────────────┐
691-
FlowRunner
692-
693-
┌─────────┐ ┌─────────────────┐
694-
│ │ State │ Event Bus │ │
695-
│ │ Store │ │ (waitForEvent) │ │
696-
│ │ │ │ │ │
697-
│ │ memoize │ │ sendEvent() │ │
698-
│ │ resume │ per instanceId │
699-
└─────────┘ └─────────────────┘
700-
701-
│ Node executors:
702-
execAi · execAgent · execBranch
703-
│ execLoop · execParallel · execHttp │
704-
│ execMemory · execWait · execSleep │
705-
│ execCode
706-
└─────────────────────────────────────┘
654+
┌────────────────────────────┐
655+
656+
┌──────▼──────┐ ┌────────▼───────┐
657+
│ OpenClaw │ │ Standalone │
658+
│ Plugin │ │ Node Server │
659+
│ │ (coming soon) │
660+
11 tools │ │
661+
│ versioning │ │ REST API │
662+
│ webhooks │ Webhook recv │
663+
└──────┬──────┘ └────────────────┘
664+
665+
┌──────▼──────────────────────────────┐
666+
│ FlowRunner │
667+
668+
│ ┌─────────┐ ┌─────────────────┐
669+
│ State │ │ Event Bus │
670+
│ Store │ │ (waitForEvent) │ │
671+
│ │ │ │ │ │
672+
│ │ memoize │ │ sendEvent() │ │
673+
resume │ per instanceId │ │
674+
└─────────┘ └─────────────────┘
675+
676+
│ Node executors:
677+
│ execAi · execAgent · execBranch
678+
execCondition · execLoop
679+
execParallel · execHttp
680+
│ execMemory · execWait · execSleep │
681+
│ execCode · execExec
682+
└─────────────────────────────────────┘
707683
```
708684

709685
---
@@ -712,13 +688,17 @@ Rules:
712688

713689
The most valuable contributions right now:
714690

715-
1. **Real-world flow definitions** — try to describe a workflow you actually run, generate the `.flow` JSON, and report where the format breaks down
716-
2. **Transpiler completeness**test the Cloudflare transpiler output and file issues for nodes that don't map cleanly
717-
3. **Node type proposals**what's the 10th node type? What real workflow pattern can't be expressed with the current 9?
718-
4. **Runtime implementations**a Python runner, a Go runner, a Rust runner — anything that proves portability
691+
1. **Real-world flow definitions** — try to describe a workflow you actually run, generate the flow JSON, and report where the format breaks down
692+
2. **Node type proposals**what real workflow pattern can't be expressed with the current 11 node types?
693+
3. **Runtime implementations**a Python runner, a Go runner, a Rust runner — anything that proves portability
694+
4. **Bug reports**file issues at [github.com/clawnify/clawflow](https://github.com/clawnify/clawflow/issues)
719695

720696
---
721697

722698
## License
723699

724700
MIT
701+
702+
---
703+
704+
Built by [Clawnify](https://www.clawnify.com) — AI agent hosting and orchestration.

0 commit comments

Comments
 (0)