An autonomous agent runtime built for service operations. Triggers fire, the model reasons, tools execute, work gets done — at the bottom of a real workflow, not the top of a chat window.
It's not a chatbot. It's an agent that gets handed a job, thinks through it, executes against real tools, and reports back. Same loop every time, whether the trigger is a phone call or a calendar gap.
Voice answering is table stakes. Where OpenClaw actually earns its place is in the messy bits — the modifications, the escalations, the after-hours edge cases.
Each row is one OpenClaw workflow running in production today. Same engine, four different jobs — built by configuring triggers, tools, and rules, not by writing code.
OpenClaw isn't a wrapper around an LLM. It's a stack: ingress, context resolution, planning, tool execution, observation, persistence. Each layer is independently versioned and rate-limited.
Voice is the hard constraint. Below ~600ms end-to-end and humans don't notice; above and they hang up. We hit a P50 of 380ms by streaming partial STT into the planner and starting TTS on the first sentence boundary.
The planner runs against multiple models in parallel for high-stakes turns — quotes over $1k, escalations, refunds — and uses the fastest valid response. For routine turns it's pinned to the cheapest model that meets the latency SLO.
Tools execute against real systems with idempotency keys and a 3-tier retry policy. Every external write goes through a dry-run shadow pass before commit when a workflow is in "supervised" mode — turn it off once you trust the agent.
Workflows are versioned config, not prompts. They define triggers, tools the agent is allowed to call, guardrails, and escalation paths. Anything you can build in the visual editor compiles to this.
# When a call rings outside business hours, the agent answers as Mike's Auto, # qualifies the job, proposes two open slots, and books on confirmation. workflow: after-hours-booking version: 2.4 trigger: type: inbound_call when: outside_business_hours || phones_busy context: load: - caller.history # last 5 visits, lifetime value - calendar.next_72h # bookable slots, holds, capacity - business.rules # pricing, services, "we don't do X" tools: - calendar.propose_slots # read-only, suggest 2–3 - calendar.book # write, requires confirmation - sms.send_confirmation - crm.create_or_update_contact - human.escalate # last resort guardrails: refuse_if: - quote_total > 1500 # escalate to GM - sentiment.anger > 0.7 - caller.history.complaints >= 2 confirm_before_writing: true max_turn_count: 12 handoff: to: on_call_human with: [transcript, suggested_action, caller.history]
The model is one component. What keeps the runtime safe is everything around it — schemas, allowlists, classifiers, idempotency, and a "panic button" that kicks any conversation to a human in <500ms.
Workflows can only call tools they've been granted. Calendar-book can't suddenly become charge-credit-card. Every tool has an explicit schema and the planner can't synthesize arguments outside it.
SCOPE_KEY → SHA256 → SIGNED CALL
Any write that touches money, calendar, or customer records is confirmed against business rules before commit. New workflows ship in "supervised" mode — every action is shadowed and reviewed for the first 50 runs.
DRY-RUN → HUMAN APPROVE → COMMIT
A separate, smaller model runs on every turn watching for anger, confusion, high-value asks, or anything outside the workflow's competence. P95 escalation-to-human time is 480ms — usually before the customer notices.
SENTIMENT · COMPLEXITY · POLICY
Every plan, tool call, retry, and external write is logged with content hashes and the exact model version used. Searchable in the console for 13 months. Customer data isn't used for training and is purged on schedule.
SOC 2 TYPE II · 13-MONTH RETENTION
P50 / P95 measured across the last 30 days of production traffic, all customers, all workflows. Updated nightly in the status dashboard.
status.serviceai.com