{"versions":{"2026.1.21-1":{"name":"@clawdbot/lobster","version":"2026.1.21-1","description":"Workflow runtime for AI agents - deterministic pipelines with approval gates","type":"module","bin":{"lobster":"bin/lobster.js"},"exports":{".":"./dist/src/sdk/index.js","./sdk":"./dist/src/sdk/index.js","./recipes/github":"./dist/src/recipes/github/index.js"},"main":"./dist/src/sdk/index.js","scripts":{"clean":"rm -rf dist","build":"pnpm clean && tsc -p tsconfig.json","prepack":"pnpm build","typecheck":"tsc -p tsconfig.json --noEmit","lint":"oxlint --tsconfig tsconfig.json src test","fmt":"oxlint --tsconfig tsconfig.json --fix src test","test":"pnpm build && node --test dist/test/*.test.js"},"devDependencies":{"@types/node":"^22.0.0","oxlint":"^0.15.0","typescript":"^5.7.0"},"engines":{"node":">=20"},"keywords":["workflow","automation","ai-agent","approval","pipeline","lobster","clawdbot"],"repository":{"type":"git","url":"git+https://github.com/clawdbot/lobster.git"},"bugs":{"url":"https://github.com/clawdbot/lobster/issues"},"homepage":"https://github.com/clawdbot/lobster#readme","license":"MIT","readmeFilename":"README.md","gitHead":"fc3995e22965e39b4de7f48de98c2e118422b9bf","_id":"@clawdbot/lobster@2026.1.21-1","_nodeVersion":"25.3.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-Bi6eueR5+L3Aw7ZmEq9n6DC0pO/TmFbN8Rh0yYxyzCNBM82tM7pClNw/PWVlvf06gVMkqdcotRJuEbpV+1/avQ==","shasum":"da54c05fc237bd28531265ecc7da2243a11734c2","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@clawdbot/lobster/-/lobster-2026.1.21-1.tgz","fileCount":101,"unpackedSize":228488,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGro7vWVJfSYXq1F/mA3/Az6Jws/dJ/WOBN9sw+qgCmJAiBnDGO0np6qVmX9ekvksVf8FpSM7PoK46gor6tR9HtkyA=="}],"size":46914},"_npmUser":{"name":"anonymous","email":"steipete@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"steipete@gmail.com"},{"name":"anonymous","email":"josh@clawd.bot"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/lobster_2026.1.21-1_1769080135171_0.08189954717217685"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-01-22T11:08:55.310Z","publish_time":1769080135310,"_source_registry_name":"default","contributors":[]},"2026.1.21":{"name":"@clawdbot/lobster","version":"2026.1.21","keywords":["workflow","automation","ai-agent","approval","pipeline","lobster","clawdbot"],"license":"MIT","_id":"@clawdbot/lobster@2026.1.21","maintainers":[{"name":"anonymous","email":"steipete@gmail.com"},{"name":"anonymous","email":"josh@clawd.bot"}],"homepage":"https://github.com/clawdbot/lobster#readme","bugs":{"url":"https://github.com/clawdbot/lobster/issues"},"bin":{"lobster":"bin/lobster.js"},"dist":{"shasum":"c7c1a681898079f59745d7310311ccd083494a1f","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@clawdbot/lobster/-/lobster-2026.1.21.tgz","fileCount":101,"integrity":"sha512-1kZ6jG2dcHKr17tSSPx7CH8E/Gas9tsH4DMeypwfsbHhKqTG45IsrAYAovc6Zrv50/AiNHqdvkXF7unwAqakag==","signatures":[{"sig":"MEUCIB9nbwB8ft0Ng3k7dJxlRuVI1KYduMVBs5s/JoveuCHwAiEA70y41jx4CmGgPrE+j7fYZzWrKqjMtIVvYj2qwyNyfSU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":228488,"size":46916},"main":"./dist/src/sdk/index.js","type":"module","engines":{"node":">=20"},"exports":{".":"./dist/src/sdk/index.js","./sdk":"./dist/src/sdk/index.js","./recipes/github":"./dist/src/recipes/github/index.js"},"gitHead":"2cd2f3a003f0fdf5124ef6689719a88ee69ca9b4","scripts":{"fmt":"oxlint --tsconfig tsconfig.json --fix src test","lint":"oxlint --tsconfig tsconfig.json src test","test":"pnpm build && node --test dist/test/*.test.js","build":"pnpm clean && tsc -p tsconfig.json","clean":"rm -rf dist","prepack":"pnpm build","typecheck":"tsc -p tsconfig.json --noEmit"},"_npmUser":{"name":"anonymous","email":"steipete@gmail.com"},"repository":{"url":"git+https://github.com/clawdbot/lobster.git","type":"git"},"_npmVersion":"11.6.2","description":"Workflow runtime for AI agents - deterministic pipelines with approval gates","directories":{},"_nodeVersion":"25.3.0","_hasShrinkwrap":false,"devDependencies":{"oxlint":"^0.15.0","typescript":"^5.7.0","@types/node":"^22.0.0"},"_npmOperationalInternal":{"tmp":"tmp/lobster_2026.1.21_1769077277976_0.1812819984984131","host":"s3://npm-registry-packages-npm-production"},"_cnpmcore_publish_time":"2026-01-22T10:21:18.138Z","publish_time":1769077278138,"_source_registry_name":"default","contributors":[]},"2026.1.22":{"name":"@clawdbot/lobster","version":"2026.1.22","type":"module","description":"Lobster workflow tool plugin (typed pipelines + resumable approvals)","clawdbot":{"extensions":["./index.ts"]},"gitHead":"ff78e9a564fcba450720a8b79e3829423d5bcee6","_id":"@clawdbot/lobster@2026.1.22","_nodeVersion":"25.3.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-SKX3zJqZRR8bj03AjbAOxDxsQDHSpBcTuX5wpFBSR32F+fztYNm/zJMooqQ4Hgwos2MXNzUgk364t5rtvWSedA==","shasum":"2c7b09e1947392ed70c66ae21fb0dd712ce67b87","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@clawdbot/lobster/-/lobster-2026.1.22.tgz","fileCount":7,"unpackedSize":14479,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICS5pb0ISZLIzrHnen8MYvsAPDiNenkRs7drEZ0skZlKAiEAkfJp9uviDkE9Ar/QFaBRyegciydRN1g80NqQr4ReYZs="}],"size":5174},"_npmUser":{"name":"anonymous","email":"steipete@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"steipete@gmail.com"},{"name":"anonymous","email":"josh@clawd.bot"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/lobster_2026.1.22_1769153630236_0.6426780286276506"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-01-23T07:33:50.415Z","publish_time":1769153630415,"_source_registry_name":"default","contributors":[]},"2026.1.23":{"name":"@clawdbot/lobster","version":"2026.1.23","type":"module","description":"Lobster workflow tool plugin (typed pipelines + resumable approvals)","clawdbot":{"extensions":["./index.ts"]},"gitHead":"ac45c8b4045fdb0cc99c8a7213f8092e6d3625d4","_id":"@clawdbot/lobster@2026.1.23","_nodeVersion":"25.3.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-9n1VQm5Lh71SMPELa97i6iwdeQ3NEoIe4EDDe6X8agpm70oybN8YTAscEmAPki4e/NCcAWNpyf4vCu9yd2uGDA==","shasum":"bb737fbfb964c52f409c7b9d213aba9129fb1b30","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@clawdbot/lobster/-/lobster-2026.1.23.tgz","fileCount":7,"unpackedSize":15880,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQD2+paQcFvhp8581WezjAiixFibgYSYmuw0FbaVnMtjWwIhANXctP+Nxn6VyWSs2Xx1ED9egrfyQhkv8xtJcZ9vNlm3"}],"size":5730},"_npmUser":{"name":"anonymous","email":"steipete@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"steipete@gmail.com"},{"name":"anonymous","email":"josh@clawd.bot"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/lobster_2026.1.23_1769258403196_0.9728349824739346"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-01-24T12:40:03.345Z","publish_time":1769258403345,"_source_registry_name":"default","contributors":[]},"2026.1.24":{"name":"@clawdbot/lobster","version":"2026.1.24","description":"Workflow runtime for AI agents - deterministic pipelines with approval gates","type":"module","bin":{"lobster":"bin/lobster.js"},"exports":{".":"./dist/src/sdk/index.js","./sdk":"./dist/src/sdk/index.js","./recipes/github":"./dist/src/recipes/github/index.js"},"main":"./dist/src/sdk/index.js","scripts":{"clean":"rm -rf dist","build":"pnpm clean && tsc -p tsconfig.json","prepack":"pnpm build","typecheck":"tsc -p tsconfig.json --noEmit","lint":"oxlint --tsconfig tsconfig.json src test","fmt":"oxlint --tsconfig tsconfig.json --fix src test","test":"pnpm build && node --test dist/test/*.test.js"},"devDependencies":{"@types/node":"^22.0.0","oxlint":"^0.15.0","typescript":"^5.7.0"},"engines":{"node":">=20"},"keywords":["workflow","automation","ai-agent","approval","pipeline","lobster","clawdbot"],"repository":{"type":"git","url":"git+https://github.com/clawdbot/lobster.git"},"bugs":{"url":"https://github.com/clawdbot/lobster/issues"},"homepage":"https://github.com/clawdbot/lobster#readme","license":"MIT","dependencies":{"ajv":"^8.17.1","yaml":"^2.8.2"},"gitHead":"0e1ac4fc03a0effcd4c848897b3064fe8ef595fa","_id":"@clawdbot/lobster@2026.1.24","_nodeVersion":"25.3.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-vHrMy4NErcq6suyGByfQSdalnvaMu4dRd10BJdeMp60V6cYtuHJSR2Ay5l0kb4iSPyk4dZKrXNNpLzeqHRcAfA==","shasum":"23940f9b00e0f65c3901501b835d81c841c2fbab","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@clawdbot/lobster/-/lobster-2026.1.24.tgz","fileCount":147,"unpackedSize":466960,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDpuP45trPg5AbEsO4ctte0yhTh8EfzQDKpOTCKodHpKwIgUE4guWuhT0jysLilQXZEfREKexw0oaPa7md8zvRJLyo="}],"size":89953},"_npmUser":{"name":"anonymous","email":"steipete@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"steipete@gmail.com"},{"name":"anonymous","email":"josh@clawd.bot"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/lobster_2026.1.24_1769347109707_0.6359861336902057"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-01-25T13:18:29.976Z","publish_time":1769347109976,"_source_registry_name":"default","contributors":[]},"2026.4.6":{"name":"@clawdbot/lobster","version":"2026.4.6","description":"Workflow runtime for AI agents - deterministic pipelines with approval gates","type":"module","bin":{"lobster":"bin/lobster.js","openclaw.invoke":"bin/openclaw.invoke.js","clawd.invoke":"bin/clawd.invoke.js"},"exports":{".":"./dist/src/sdk/index.js","./sdk":"./dist/src/sdk/index.js","./core":"./dist/src/core/index.js","./recipes/github":"./dist/src/recipes/github/index.js"},"main":"./dist/src/sdk/index.js","scripts":{"clean":"node -e \"require('fs').rmSync('dist', { recursive: true, force: true })\"","build":"pnpm clean && pnpm exec tsc -p tsconfig.json","prepack":"pnpm build","typecheck":"tsc -p tsconfig.json --noEmit","lint":"oxlint --tsconfig tsconfig.json src test","fmt":"oxlint --tsconfig tsconfig.json --fix src test","test":"pnpm build && node --test dist/test/*.test.js"},"devDependencies":{"@types/node":"^22.0.0","oxlint":"^0.15.0","typescript":"^5.7.0"},"engines":{"node":">=20"},"keywords":["workflow","automation","ai-agent","approval","pipeline","lobster","openclaw"],"repository":{"type":"git","url":"git+https://github.com/openclaw/lobster.git"},"bugs":{"url":"https://github.com/openclaw/lobster/issues"},"homepage":"https://github.com/openclaw/lobster#readme","license":"MIT","dependencies":{"ajv":"^8.17.1","yaml":"^2.8.2"},"gitHead":"4bd02a21ae0bc1da90006b725aa0b06e7b71c480","_id":"@clawdbot/lobster@2026.4.6","_nodeVersion":"25.3.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-v8QQHAykISyiSIVBtdBKDSQtfigZ4mUoPkUFYVZjvn2LRQGvtnX6uDvhgXu3QaxLF3MDSGMphgzDpkLrh1xnbw==","shasum":"f898ce40c75648ceb823f4ebdfbb5ce9042595b8","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@clawdbot/lobster/-/lobster-2026.4.6.tgz","fileCount":185,"unpackedSize":792880,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCwPXsHEv/tTQTvSrYXETncRcWjIdZLK1gJL6Uill8iVQIgNH8ROxllczLKc7+nUayKXhoxvcRbGylm6Yi3kJzoO4M="}],"size":142187},"_npmUser":{"name":"anonymous","email":"steipete@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"steipete@gmail.com"},{"name":"anonymous","email":"josh@clawd.bot"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/lobster_2026.4.6_1775483844668_0.7411919776152278"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2026-04-06T13:57:24.873Z","publish_time":1775483844873,"_source_registry_name":"default","contributors":[]}},"dist-tags":{"beta":"2026.1.21-1","latest":"2026.4.6"},"name":"@clawdbot/lobster","time":{"created":"2026-01-22T11:09:09.010Z","modified":"2026-04-06T13:57:43.761Z","2026.1.21-1":"2026-01-22T11:08:55.310Z","2026.1.21":"2026-01-22T10:21:18.138Z","2026.1.22":"2026-01-23T07:33:50.415Z","2026.1.23":"2026-01-24T12:40:03.345Z","2026.1.24":"2026-01-25T13:18:29.976Z","2026.4.6":"2026-04-06T13:57:24.873Z"},"readme":"# Lobster\n\nAn OpenClaw-native workflow shell: typed (JSON-first) pipelines, jobs, and approval gates.\n\n\n## Example of Lobster at work\nOpenClaw (or any other AI agent) can use `lobster` as a workflow engine and avoid re-planning every step — saving tokens while improving determinism and resumability.\n\n### Watching a PR that hasn't had changes\n```\nnode bin/lobster.js \"workflows.run --name github.pr.monitor --args-json '{\\\"repo\\\":\\\"openclaw/openclaw\\\",\\\"pr\\\":1152}'\"\n[\n  {\n    \"kind\": \"github.pr.monitor\",\n    \"repo\": \"openclaw/openclaw\",\n    \"prNumber\": 1152,\n    \"key\": \"github.pr:openclaw/openclaw#1152\",\n    \"changed\": false,\n    \"summary\": {\n      \"changedFields\": [],\n      \"changes\": {}\n    },\n    \"prSnapshot\": {\n      \"author\": {\n        \"id\": \"MDQ6VXNlcjE0MzY4NTM=\",\n        \"is_bot\": false,\n        \"login\": \"vignesh07\",\n        \"name\": \"Vignesh\"\n      },\n      \"baseRefName\": \"main\",\n      \"headRefName\": \"feat/lobster-plugin\",\n      \"isDraft\": false,\n      \"mergeable\": \"MERGEABLE\",\n      \"number\": 1152,\n      \"reviewDecision\": \"\",\n      \"state\": \"OPEN\",\n      \"title\": \"feat: Add optional lobster plugin tool (typed workflows, approvals/resume)\",\n      \"updatedAt\": \"2026-01-18T20:16:56Z\",\n      \"url\": \"https://github.com/openclaw/openclaw/pull/1152\"\n    }\n  }\n]\n```\n### And a PR that has a state change (in this case an approved PR)\n\n```\n node bin/lobster.js \"workflows.run --name github.pr.monitor --args-json '{\\\"repo\\\":\\\"openclaw/openclaw\\\",\\\"pr\\\":1200}'\"\n[\n  {\n    \"kind\": \"github.pr.monitor\",\n    \"repo\": \"openclaw/openclaw\",\n    \"prNumber\": 1200,\n    \"key\": \"github.pr:openclaw/openclaw#1200\",\n    \"changed\": true,\n    \"summary\": {\n      \"changedFields\": [\n        \"number\",\n        \"title\",\n        \"url\",\n        \"state\",\n        \"isDraft\",\n        \"mergeable\",\n        \"reviewDecision\",\n        \"updatedAt\",\n        \"baseRefName\",\n        \"headRefName\"\n      ],\n      \"changes\": {\n        \"number\": {\n          \"from\": null,\n          \"to\": 1200\n        },\n        \"title\": {\n          \"from\": null,\n          \"to\": \"feat(tui): add syntax highlighting for code blocks\"\n        },\n        \"url\": {\n          \"from\": null,\n          \"to\": \"https://github.com/openclaw/openclaw/pull/1200\"\n        },\n        \"state\": {\n          \"from\": null,\n          \"to\": \"MERGED\"\n        },\n        \"isDraft\": {\n          \"from\": null,\n          \"to\": false\n        },\n        \"mergeable\": {\n          \"from\": null,\n          \"to\": \"UNKNOWN\"\n        },\n        \"reviewDecision\": {\n          \"from\": null,\n          \"to\": \"\"\n        },\n        \"updatedAt\": {\n          \"from\": null,\n          \"to\": \"2026-01-19T05:06:09Z\"\n        },\n        \"baseRefName\": {\n          \"from\": null,\n          \"to\": \"main\"\n        },\n        \"headRefName\": {\n          \"from\": null,\n          \"to\": \"feat/tui-syntax-highlighting\"\n        }\n      }\n    },\n    \"prSnapshot\": {\n      \"author\": {\n        \"id\": \"MDQ6VXNlcjE0MzY4NTM=\",\n        \"is_bot\": false,\n        \"login\": \"vignesh07\",\n        \"name\": \"Vignesh\"\n      },\n      \"baseRefName\": \"main\",\n      \"headRefName\": \"feat/tui-syntax-highlighting\",\n      \"isDraft\": false,\n      \"mergeable\": \"UNKNOWN\",\n      \"number\": 1200,\n      \"reviewDecision\": \"\",\n      \"state\": \"MERGED\",\n      \"title\": \"feat(tui): add syntax highlighting for code blocks\",\n      \"updatedAt\": \"2026-01-19T05:06:09Z\",\n      \"url\": \"https://github.com/openclaw/openclaw/pull/1200\"\n    }\n  }\n]\n```\n\n## Goals\n\n\n- Typed pipelines (objects/arrays), not text pipes.\n- Local-first execution.\n- No new auth surface: Lobster must not own OAuth/tokens.\n- Composable macros that OpenClaw (or any agent) can invoke in one step to save tokens.\n\n## Quick start\n\nFrom this folder:\n\n- `pnpm install`\n- `pnpm test`\n- `pnpm lint`\n- `node ./bin/lobster.js --help`\n- `node ./bin/lobster.js doctor`\n- `node ./bin/lobster.js \"exec --json --shell 'echo [1,2,3]' | where '0>=0' | json\"`\n\n### Notes\n\n- `pnpm test` runs `tsc` and then executes tests against `dist/`.\n- `bin/lobster.js` prefers the compiled entrypoint in `dist/` when present.\n## Commands\n\n- `exec`: run OS commands\n- `exec --stdin raw|json|jsonl`: feed pipeline input into subprocess stdin\n- `where`, `pick`, `head`: data shaping\n- `json`, `table`: renderers\n- `approve`: approval gate (TTY prompt or `--emit` for OpenClaw integration)\n\n## Next steps\n\n- OpenClaw integration: ship as an optional OpenClaw plugin tool.\n\n## Workflow files\n\nLobster workflow files are meant to read like small scripts:\n\n- `run:` or `command:` for deterministic shell/CLI steps\n- `pipeline:` for native Lobster stages like `llm.invoke`\n- `approval:` for hard workflow gates between steps\n- `stdin: $step.stdout` or `stdin: $step.json` to pass data forward\n\n```\nlobster run path/to/workflow.lobster\nlobster run --file path/to/workflow.lobster --args-json '{\"tag\":\"family\"}'\n```\n\nExample file:\n\n```yaml\nname: jacket-advice\nargs:\n  location:\n    default: Phoenix\nsteps:\n  - id: fetch\n    run: weather --json ${location}\n\n  - id: confirm\n    approval: Want jacket advice from the LLM?\n    stdin: $fetch.json\n\n  - id: advice\n    pipeline: >\n      llm.invoke --prompt \"Given this weather data, should I wear a jacket?\n      Be concise and return JSON.\"\n    stdin: $fetch.json\n    when: $confirm.approved\n```\n\nNotes:\n\n- `run:` and `command:` are equivalent; `run:` is the preferred spelling for new files.\n- `pipeline:` shares the same args/env/results model as shell steps, so later steps can still reference `$step.stdout` or `$step.json`.\n- If you need a human checkpoint before an LLM call, use a dedicated `approval:` step in the workflow file rather than `approve` inside the nested pipeline.\n- `cwd`, `env`, `stdin`, `when`, and `condition` work for both shell and pipeline steps.\n\n## Calling LLMs from workflows\n\nUse `llm.invoke` from a native `pipeline:` step for model-backed work:\n\n```bash\nllm.invoke --prompt 'Summarize this diff'\nllm.invoke --provider openclaw --prompt 'Summarize this diff'\nllm.invoke --provider pi --prompt 'Summarize this diff'\n```\n\nProvider resolution order:\n\n- `--provider`\n- `LOBSTER_LLM_PROVIDER`\n- auto-detect from environment\n\nBuilt-in providers today:\n\n- `openclaw` via `OPENCLAW_URL` / `OPENCLAW_TOKEN`\n- `pi` via `LOBSTER_PI_LLM_ADAPTER_URL` (typically supplied by the Pi extension)\n- `http` via `LOBSTER_LLM_ADAPTER_URL`\n\n`llm_task.invoke` remains available as a backward-compatible alias for the OpenClaw provider.\n\n## Calling OpenClaw tools from workflows\n\nShell `run:` steps execute in your system shell, so OpenClaw tool calls there must be real executables.\n\nIf you install Lobster via npm/pnpm, it installs a small shim executable named:\n\n- `openclaw.invoke` (preferred)\n- `clawd.invoke` (alias)\n\nThese shims forward to the Lobster pipeline command of the same name.\n\n### Example: invoke llm-task\n\nPrereqs:\n\n- `OPENCLAW_URL` points at a running OpenClaw gateway\n- optionally `OPENCLAW_TOKEN` if auth is enabled\n\n```bash\nexport OPENCLAW_URL=http://127.0.0.1:18789\n# export OPENCLAW_TOKEN=...\n```\n\nIn a workflow:\n\n```yaml\nname: hello-world\nsteps:\n  - id: greeting\n    run: >\n      openclaw.invoke --tool llm-task --action json --args-json '{\"prompt\":\"Hello\"}'\n```\n\n### Passing data between steps (no temp files)\n\nUse `stdin: $stepId.stdout` to pipe output from one step into the next.\n\n## Args and shell-safety\n\n`${arg}` substitution is a raw string replace into the shell command text.\n\nFor anything that may contain quotes, `$`, backticks, or newlines, prefer env vars:\n\n- every resolved workflow arg is exposed as `LOBSTER_ARG_<NAME>` (uppercased, non-alnum → `_`)\n- the full args object is also available as `LOBSTER_ARGS_JSON`\n\nExample:\n\n```yaml\nargs:\n  text:\n    default: \"\"\nsteps:\n  - id: safe\n    env:\n      TEXT: \"$LOBSTER_ARG_TEXT\"\n    command: |\n      jq -n --arg text \"$TEXT\" '{\"result\": $text}'\n```","users":{}}