S2G Integration
OpenClaw is the orchestrator. S2G is the toolbox. Connect to an S2G workflow via WebSocket, auto-discover all nodes, and execute them as tools.
OpenClaw ──WS──▶ S2G (wss://s2g.run/api/openclaw/ws/{nodeId})
├── PasswordGenerator
├── HashGenerator
├── DateMath
├── SqlServer
├── Knowledge Base
└── ... 200+ node types
The OpenClaw Node in S2G
The OpenClaw node is a built-in S2G node type (category: AI) that acts as a bidirectional bridge between OpenClaw agents and S2G workflows. It appears in the S2G node catalog as "OpenClaw Agent" and serves two roles:
Bridge Endpoint — Provides a WebSocket endpoint (wss://s2g.run/api/openclaw/ws/{nodeId}) that OpenClaw agents connect to. Once connected, the agent can execute any sibling node in the workflow.
Data Forwarder — Pushes upstream workflow data to connected OpenClaw agents via Input Forwarding. When the workflow triggers (e.g., from an HTTP webhook, scheduler, or another node), mapped fields are sent to all connected agents as {"type":"data","data":{...}}.
Setting Up the OpenClaw Node
- Open the S2G designer at s2g.run
- Create or open a workflow
- Add an OpenClaw node from the AI category in the node palette
- Add tool nodes — any nodes you want the agent to access (e.g., PasswordGenerator, HashGenerator, DateMath, SqlServer, Knowledge Base)
- Connect the OpenClaw node to the tool nodes (the connection wiring tells S2G which nodes to expose)
- Configure the OpenClaw node (click to open properties):
- Auth Secret (optional) — If set, the bridge must send
{"type":"auth","secret":"..."} as its first message
- Per-Request Timeout — Maximum time per individual node execution request
- Input Forwarding — Map upstream node outputs to push data to connected agents
- Manual Payload — Send ad-hoc JSON payloads to connected agents for testing
- Start the workflow (▶ button or API:
POST https://s2g.run/api/v1/workflows/{id}/start)
- Copy the Node ID (UUID) from the node properties — this is needed for the bridge connection URL
Live View
The OpenClaw node properties panel includes a Live View that shows:
- Connected clients count
- Real-time execute/result message flow
- Data push events
- Connection/disconnection events
Prerequisites
- S2G account at s2g.run (or self-hosted instance)
- A workflow with an OpenClaw node and tool nodes connected to it
- Workflow running — the WebSocket endpoint only accepts connections while the workflow is active
- Node.js with
ws module: npm install ws
Quick Start
1. Install the bridge
# Copy bridge script to workspace
cp scripts/s2g-bridge.js ~/.openclaw/workspace/s2g-bridge.js
npm install ws
2. Get the OpenClaw node ID
In the S2G designer at s2g.run, click the OpenClaw node → copy the Node ID (UUID) from properties.
3. Start the bridge
# Connect to public S2G
node s2g-bridge.js --s2g wss://s2g.run --node-id YOUR_NODE_UUID [--port 18792] [--secret SECRET]
# Or with environment variables:
S2G_WS_HOST=wss://s2g.run S2G_NODE_ID=abc-123 node s2g-bridge.js
# Self-hosted S2G instance (development)
node s2g-bridge.js --s2g ws://YOUR_HOST:5184 --node-id YOUR_NODE_UUID
4. Verify
curl http://localhost:18792/health
# {"healthy":true,"uptime":42.5}
curl http://localhost:18792/nodes
# Lists all discovered nodes with names, types, and IDs
Bridge HTTP API
The bridge exposes a local HTTP API on port 18792 (configurable via --port):
| Method |
Endpoint |
Description |
GET |
/health |
200 if connected to S2G, 503 if not |
GET |
/status |
Full status: connection state, host, node list, stats, errors |
GET |
/nodes |
List all available S2G nodes (name, type, ID) |
POST |
/execute |
Execute by nodeId: { nodeId, params } |
POST |
/execute/:name |
Execute by name (fuzzy match): { params } |
POST |
/refresh |
Request fresh node list from S2G |
POST |
/reconnect |
Force disconnect and reconnect to S2G |
Executing Nodes
By name (recommended)
curl -X POST http://localhost:18792/execute/PasswordGenerator \
-H "Content-Type: application/json" \
-d '{"params": {"length": "20", "mode": "strong"}}'
By node ID
curl -X POST http://localhost:18792/execute \
-H "Content-Type: application/json" \
-d '{"nodeId": "uuid-here", "params": {"length": "20"}}'
Response
{
"success": true,
"output": {
"Password": "xK9!mN...",
"Strength": "Very Strong",
"_TriggeredTags": "[\"success\"]"
}
}
Node Schema Discovery
Before using an unfamiliar node, check its exact parameter names via the S2G Catalog API:
# Get schema for any node type
curl -H "X-API-Key: $KEY" "https://s2g.run/api/v1/catalog/nodes/Custom_Base64/schema"
# List all available node categories
curl -H "X-API-Key: $KEY" "https://s2g.run/api/v1/catalog/categories"
# List all nodes in a category
curl -H "X-API-Key: $KEY" "https://s2g.run/api/v1/catalog/categories/AI/nodes"
The fieldName in inputFields is the exact key to use in params. Case-sensitive.
Common Node Types
Data Generation
- PasswordGenerator —
length, mode (strong/pronounceable/passphrase/PIN), count
- UuidGenerator —
count, format
- HashGenerator —
text, algorithm (md5/sha1/sha256)
- LoremIpsum —
count, unit (paragraphs/sentences/words)
Data Operations
- DateMath —
operation (add/subtract/difference), date1, date2, days, hours...
- ExpressionEvaluator —
expression, variables, precision
- CronParser —
expression, count, fromDate
- TimezoneConverter —
datetime, fromTimezone, toTimezone
- JsonPathQuery —
json, path, returnFirst
Text & Encoding
- Base64 —
inputText, mode (encode/decode)
- UrlEncode —
inputText, mode (encode/decode)
- CaseConverter —
text, targetCase (camelCase/PascalCase/snake_case/kebab-case)
- MarkdownToHtml —
markdown, addWrapper
- TextDiff —
oldText, newText
Format Conversion
- XmlToJson —
xmlInput
- JsonToXml —
jsonInput, rootElement
- CsvJson —
inputText, mode (toJson/toCsv), delimiter
- JwtDecoder —
token
AI Nodes
- OpenAI — GPT models for text generation
- Anthropic — Claude models
- Gemini — Google AI models
- DeepSeek / DeepSeek Agent — DeepSeek models with agent capabilities
- Orchestrator — Multi-agent orchestration across AI providers
Knowledge Base
- Knowledge — Graph-based knowledge store with 11 operations: Search, GetEntity, AddEntity, UpdateEntity, DeleteEntity, AddRelation, RemoveRelation, GetRelations, GetGraph, ListEntities, ListTypes
Vector Storage
- VectorDb — Vector store for RAG: ingest documents, semantic search
- VectorClient — Query vector stores from workflows
Database
- SqlServer — Execute SQL queries against SQL Server
- Postgresql — Execute PostgreSQL queries
- MongoDB — MongoDB document operations
Data Push (S2G → OpenClaw)
S2G can push data to connected OpenClaw agents in two ways:
Input Forwarding — Configure in the OpenClaw node properties. Map upstream node output fields to keys that get forwarded to all connected agents. When the workflow triggers (e.g., webhook receives data → processes it → OpenClaw node forwards results), agents receive {"type":"data","data":{...}}.
Manual Payload — In the OpenClaw node properties, use the Manual Payload editor to send ad-hoc JSON to all connected agents. Useful for testing and debugging.
Deployment & Operations
For running as a service (systemd/pm2), connection lifecycle, auto-reconnect behavior, monitoring, handling S2G/OpenClaw restarts, security, and multi-bridge setups: see references/operations.md.
Key points:
- Bridge auto-reconnects on disconnect (5s delay)
- Bridge is stateless — just needs the WebSocket URL and node ID
- Sends keepalive pings every 30s to detect dead connections
- 409 = workflow not running — enable Auto-Start (🚀) in S2G or start via API:
POST https://s2g.run/api/v1/workflows/{id}/start
- Logs to
logs/s2g-bridge.log with 5MB rotation
S2G REST API
Full platform API at https://s2g.run/api/v1/ covering workflows, catalog, knowledge base, AI assistant, connections, usage, and logs: see references/api.md.
Key capabilities:
- Workflows — Create, start/stop, add/remove nodes and connections:
https://s2g.run/api/v1/workflows
- Catalog — Discover all 200+ node types and their schemas:
https://s2g.run/api/v1/catalog/nodes
- Knowledge Base — Graph-based knowledge store with search, entities, and relations
- AI Assistant — Generate workflows from natural language:
POST https://s2g.run/api/v1/ai/generate
- Connections — Manage OAuth/API key connections:
https://s2g.run/api/v1/connections
- Usage & Logs — Monitor quotas and execution logs:
https://s2g.run/api/v1/usage
WebSocket Protocol
For raw protocol details (message types, auth handshake, data push framing): see references/protocol.md.
Connection URL: wss://s2g.run/api/openclaw/ws/{nodeId}
Health check: GET https://s2g.run/api/openclaw/health
Tips
- No manual wiring needed. All sibling nodes connected to the OpenClaw node are auto-discovered on connect.
- Param names are case-sensitive. Always verify with the catalog schema API.
_TriggeredTags in output indicates which connection tag fired (success/error).
- 409 on connect means workflow isn't running. Start it at s2g.run or via API.
- Bridge auto-reconnects on disconnect with 5s delay — no manual intervention needed.
1---2name: s2g3description: Connect to S2G (s2g.run) visual workflow automation platform over WebSocket. Execute workflow nodes as tools — password generators, hash functions, date math, format converters, database queries, knowledge base, and any custom node. Use when asked to run S2G workflows, execute S2G nodes, connect to S2G, manage S2G workflows, or interact with the S2G platform API.4---5
6# S2G Integration
7
8OpenClaw is the **orchestrator**. S2G is the **toolbox**. Connect to an S2G workflow via WebSocket, auto-discover all nodes, and execute them as tools.
9
10```
11OpenClaw ──WS──▶ S2G (wss://s2g.run/api/openclaw/ws/{nodeId})
12 ├── PasswordGenerator
13 ├── HashGenerator
14 ├── DateMath
15 ├── SqlServer
16 ├── Knowledge Base
17 └── ... 200+ node types
18```
19
20## The OpenClaw Node in S2G
21
22The **OpenClaw node** is a built-in S2G node type (category: AI) that acts as a **bidirectional bridge** between OpenClaw agents and S2G workflows. It appears in the S2G node catalog as "OpenClaw Agent" and serves two roles:
23
241. **Bridge Endpoint** — Provides a WebSocket endpoint (`wss://s2g.run/api/openclaw/ws/{nodeId}`) that OpenClaw agents connect to. Once connected, the agent can execute any sibling node in the workflow.
25
262. **Data Forwarder** — Pushes upstream workflow data to connected OpenClaw agents via Input Forwarding. When the workflow triggers (e.g., from an HTTP webhook, scheduler, or another node), mapped fields are sent to all connected agents as `{"type":"data","data":{...}}`.
27
28### Setting Up the OpenClaw Node
29
301. **Open the S2G designer** at [s2g.run](https://s2g.run)
312. **Create or open a workflow**
323. **Add an OpenClaw node** from the AI category in the node palette
334. **Add tool nodes** — any nodes you want the agent to access (e.g., PasswordGenerator, HashGenerator, DateMath, SqlServer, Knowledge Base)
345. **Connect** the OpenClaw node to the tool nodes (the connection wiring tells S2G which nodes to expose)
356. **Configure the OpenClaw node** (click to open properties):
36 - **Auth Secret** (optional) — If set, the bridge must send `{"type":"auth","secret":"..."}` as its first message
37 - **Per-Request Timeout** — Maximum time per individual node execution request
38 - **Input Forwarding** — Map upstream node outputs to push data to connected agents
39 - **Manual Payload** — Send ad-hoc JSON payloads to connected agents for testing
407. **Start the workflow** (▶ button or API: `POST https://s2g.run/api/v1/workflows/{id}/start`)
418. **Copy the Node ID** (UUID) from the node properties — this is needed for the bridge connection URL
42
43### Live View
44
45The OpenClaw node properties panel includes a **Live View** that shows:
46- Connected clients count
47- Real-time execute/result message flow
48- Data push events
49- Connection/disconnection events
50
51## Prerequisites
52
531. **S2G account** at [s2g.run](https://s2g.run) (or self-hosted instance)
542. **A workflow** with an OpenClaw node and tool nodes connected to it
553. **Workflow running** — the WebSocket endpoint only accepts connections while the workflow is active
564. **Node.js** with `ws` module: `npm install ws`
57
58## Quick Start
59
60### 1. Install the bridge
61
62```bash
63# Copy bridge script to workspace
64cp scripts/s2g-bridge.js ~/.openclaw/workspace/s2g-bridge.js
65npm install ws
66```
67
68### 2. Get the OpenClaw node ID
69
70In the S2G designer at [s2g.run](https://s2g.run), click the OpenClaw node → copy the Node ID (UUID) from properties.
71
72### 3. Start the bridge
73
74```bash
75# Connect to public S2G
76node s2g-bridge.js --s2g wss://s2g.run --node-id YOUR_NODE_UUID [--port 18792] [--secret SECRET]
77
78# Or with environment variables:
79S2G_WS_HOST=wss://s2g.run S2G_NODE_ID=abc-123 node s2g-bridge.js
80
81# Self-hosted S2G instance (development)
82node s2g-bridge.js --s2g ws://YOUR_HOST:5184 --node-id YOUR_NODE_UUID
83```
84
85### 4. Verify
86
87```bash
88curl http://localhost:18792/health
89# {"healthy":true,"uptime":42.5}
90
91curl http://localhost:18792/nodes
92# Lists all discovered nodes with names, types, and IDs
93```
94
95## Bridge HTTP API
96
97The bridge exposes a local HTTP API on port 18792 (configurable via `--port`):
98
99| Method | Endpoint | Description |
100|--------|----------|-------------|
101| `GET` | `/health` | 200 if connected to S2G, 503 if not |
102| `GET` | `/status` | Full status: connection state, host, node list, stats, errors |
103| `GET` | `/nodes` | List all available S2G nodes (name, type, ID) |
104| `POST` | `/execute` | Execute by nodeId: `{ nodeId, params }` |
105| `POST` | `/execute/:name` | Execute by name (fuzzy match): `{ params }` |
106| `POST` | `/refresh` | Request fresh node list from S2G |
107| `POST` | `/reconnect` | Force disconnect and reconnect to S2G |
108
109## Executing Nodes
110
111### By name (recommended)
112
113```bash
114curl -X POST http://localhost:18792/execute/PasswordGenerator \
115 -H "Content-Type: application/json" \
116 -d '{"params": {"length": "20", "mode": "strong"}}'
117```
118
119### By node ID
120
121```bash
122curl -X POST http://localhost:18792/execute \
123 -H "Content-Type: application/json" \
124 -d '{"nodeId": "uuid-here", "params": {"length": "20"}}'
125```
126
127### Response
128
129```json
130{
131 "success": true,
132 "output": {
133 "Password": "xK9!mN...",
134 "Strength": "Very Strong",
135 "_TriggeredTags": "[\"success\"]"
136 }
137}
138```
139
140## Node Schema Discovery
141
142Before using an unfamiliar node, check its exact parameter names via the S2G Catalog API:
143
144```bash
145# Get schema for any node type
146curl -H "X-API-Key: $KEY" "https://s2g.run/api/v1/catalog/nodes/Custom_Base64/schema"
147
148# List all available node categories
149curl -H "X-API-Key: $KEY" "https://s2g.run/api/v1/catalog/categories"
150
151# List all nodes in a category
152curl -H "X-API-Key: $KEY" "https://s2g.run/api/v1/catalog/categories/AI/nodes"
153```
154
155The `fieldName` in `inputFields` is the exact key to use in `params`. Case-sensitive.
156
157## Common Node Types
158
159### Data Generation
160- **PasswordGenerator** — `length`, `mode` (strong/pronounceable/passphrase/PIN), `count`
161- **UuidGenerator** — `count`, `format`
162- **HashGenerator** — `text`, `algorithm` (md5/sha1/sha256)
163- **LoremIpsum** — `count`, `unit` (paragraphs/sentences/words)
164
165### Data Operations
166- **DateMath** — `operation` (add/subtract/difference), `date1`, `date2`, `days`, `hours`...
167- **ExpressionEvaluator** — `expression`, `variables`, `precision`
168- **CronParser** — `expression`, `count`, `fromDate`
169- **TimezoneConverter** — `datetime`, `fromTimezone`, `toTimezone`
170- **JsonPathQuery** — `json`, `path`, `returnFirst`
171
172### Text & Encoding
173- **Base64** — `inputText`, `mode` (encode/decode)
174- **UrlEncode** — `inputText`, `mode` (encode/decode)
175- **CaseConverter** — `text`, `targetCase` (camelCase/PascalCase/snake_case/kebab-case)
176- **MarkdownToHtml** — `markdown`, `addWrapper`
177- **TextDiff** — `oldText`, `newText`
178
179### Format Conversion
180- **XmlToJson** — `xmlInput`
181- **JsonToXml** — `jsonInput`, `rootElement`
182- **CsvJson** — `inputText`, `mode` (toJson/toCsv), `delimiter`
183- **JwtDecoder** — `token`
184
185### AI Nodes
186- **OpenAI** — GPT models for text generation
187- **Anthropic** — Claude models
188- **Gemini** — Google AI models
189- **DeepSeek** / **DeepSeek Agent** — DeepSeek models with agent capabilities
190- **Orchestrator** — Multi-agent orchestration across AI providers
191
192### Knowledge Base
193- **Knowledge** — Graph-based knowledge store with 11 operations: Search, GetEntity, AddEntity, UpdateEntity, DeleteEntity, AddRelation, RemoveRelation, GetRelations, GetGraph, ListEntities, ListTypes
194
195### Vector Storage
196- **VectorDb** — Vector store for RAG: ingest documents, semantic search
197- **VectorClient** — Query vector stores from workflows
198
199### Database
200- **SqlServer** — Execute SQL queries against SQL Server
201- **Postgresql** — Execute PostgreSQL queries
202- **MongoDB** — MongoDB document operations
203
204## Data Push (S2G → OpenClaw)
205
206S2G can push data to connected OpenClaw agents in two ways:
207
2081. **Input Forwarding** — Configure in the OpenClaw node properties. Map upstream node output fields to keys that get forwarded to all connected agents. When the workflow triggers (e.g., webhook receives data → processes it → OpenClaw node forwards results), agents receive `{"type":"data","data":{...}}`.
209
2102. **Manual Payload** — In the OpenClaw node properties, use the Manual Payload editor to send ad-hoc JSON to all connected agents. Useful for testing and debugging.
211
212## Deployment & Operations
213
214For running as a service (systemd/pm2), connection lifecycle, auto-reconnect behavior, monitoring, handling S2G/OpenClaw restarts, security, and multi-bridge setups: see [references/operations.md](references/operations.md).
215
216Key points:
217- Bridge **auto-reconnects** on disconnect (5s delay)
218- Bridge is **stateless** — just needs the WebSocket URL and node ID
219- Sends **keepalive pings** every 30s to detect dead connections
220- **409 = workflow not running** — enable Auto-Start (🚀) in S2G or start via API: `POST https://s2g.run/api/v1/workflows/{id}/start`
221- Logs to `logs/s2g-bridge.log` with 5MB rotation
222
223## S2G REST API
224
225Full platform API at `https://s2g.run/api/v1/` covering workflows, catalog, knowledge base, AI assistant, connections, usage, and logs: see [references/api.md](references/api.md).
226
227Key capabilities:
228- **Workflows** — Create, start/stop, add/remove nodes and connections: `https://s2g.run/api/v1/workflows`
229- **Catalog** — Discover all 200+ node types and their schemas: `https://s2g.run/api/v1/catalog/nodes`
230- **Knowledge Base** — Graph-based knowledge store with search, entities, and relations
231- **AI Assistant** — Generate workflows from natural language: `POST https://s2g.run/api/v1/ai/generate`
232- **Connections** — Manage OAuth/API key connections: `https://s2g.run/api/v1/connections`
233- **Usage & Logs** — Monitor quotas and execution logs: `https://s2g.run/api/v1/usage`
234
235## WebSocket Protocol
236
237For raw protocol details (message types, auth handshake, data push framing): see [references/protocol.md](references/protocol.md).
238
239**Connection URL:** `wss://s2g.run/api/openclaw/ws/{nodeId}`
240**Health check:** `GET https://s2g.run/api/openclaw/health`
241
242## Tips
243
244- **No manual wiring needed.** All sibling nodes connected to the OpenClaw node are auto-discovered on connect.
245- **Param names are case-sensitive.** Always verify with the catalog schema API.
246- **`_TriggeredTags`** in output indicates which connection tag fired (success/error).
247- **409 on connect** means workflow isn't running. Start it at [s2g.run](https://s2g.run) or via API.
248- **Bridge auto-reconnects** on disconnect with 5s delay — no manual intervention needed.