SaluteClaw connects a Salute Chat App (scenario type SmartApp API) to a personal OpenClaw server through a standalone salute plugin.
- OpenClaw plugin source in
plugin/ - Salute inbound/outbound mapping logic
- Runtime handoff and background result cache
- Salute webhook fixtures in
fixtures/salute/ - Setup and architecture docs for OpenClaw and Salute Studio
flowchart TD
U[User voice/text] --> D[Salute device]
D --> A[Salute Chat App]
A --> W[SmartApp API HTTPS webhook]
W --> N[Nginx TLS reverse proxy :443]
N --> G[OpenClaw gateway loopback]
G --> P[salute plugin this repo]
P --> R[OpenClaw runtime]
R --> O[Salute-compatible response]
Salute SmartApp API has a strict synchronous webhook timeout, while tool-enabled runs can take much longer. The plugin uses a two-phase model:
- Return a fast reply immediately (
disableTools: true). - Start a full tool-enabled run in background (
disableTools: false). - On the next user turn, prepend the cached background result (if ready) before the new fast reply.
This introduces a one-message delay for richer tool-based results, but keeps webhook latency low and reliable.
Use the provided fixtures against your public webhook:
curl -i -X POST "https://your-domain.example/salute/webhook" \
-H "content-type: application/json" \
--data @/root/SaluteClaw/fixtures/salute/launch.json
curl -i -X POST "https://your-domain.example/salute/webhook" \
-H "content-type: application/json" \
--data @/root/SaluteClaw/fixtures/salute/message.json
curl -i -X POST "https://your-domain.example/salute/webhook" \
-H "content-type: application/json" \
--data @/root/SaluteClaw/fixtures/salute/close.jsonInspect plugin registration:
openclaw plugins inspect salute --jsonSPEC.md- full technical specification and decisionsdocs/overview.md- project scope and current statusdocs/architecture.md- runtime topology and request lifecycledocs/setup-openclaw.md- OpenClaw configuration and plugin loadingdocs/setup-salute.md- Salute SmartApp setupdocs/poc-plan.md- phased implementation plan