OpenClaw Setup — Client Onboarding & Agent Deployment Skill
Deploy OpenClaw for a new client from scratch. Covers: discovering what's needed, configuring the agent stack, wiring external services, and launching production-ready.
This skill is platform-agnostic and BYOK — it works with any LLM provider, any external service, any vertical. The client owns their API keys and data.
Workflow Overview
Client Discovery → Agent Design → External Services → Configuration → Launch → Handoff
Phase 1: Client Discovery
Before touching any config, answer these questions. Some come from the client directly, some from research.
The 12 Questions (Answer Every One)
- What does the client do? (industry, size, revenue model)
- What is the client's primary goal? (more clients, lower costs, better output, all of the above)
- Who are the end users? (the client alone, their staff, their customers)
- What tools does the client already use? (CRMs, ERPs, scheduling, communication)
- What does the client hate doing? (the work that never gets done because it's tedious)
- What does the client do manually that should be automated? (intake, follow-up, reporting, research)
- What is the client's budget? (one-time setup, monthly recurring, or both)
- What is the client's timeline? (need it yesterday, exploring, have a launch date)
- Who is the technical contact? (someone who will be the gatekeeper for integrations)
- Who is the business decision maker? (who signs off on proposals)
- Are there compliance requirements? (HIPAA, SOC2, GDPR, bar association rules, industry regulations)
- What data is sensitive? (PII, financial, medical, legal case data)
Discovery Methods (In Order)
- Existing vault research: Check
/vault-cache/Rogue State/PHATT-TECH/Customers/<client-name>/first. Don't redo work already done. - Client interview: Direct conversation or questionnaire. Prefer async (email/Signal) for complex answers.
- Website research: Crawl the client's site. Understand their services, positioning, client-facing language.
- Competitor research: What do similar businesses in their space already automate? What's working?
Output: Client Brief
Write a brief to /tmp/client-brief.md:
# [Client Name] — Discovery Brief
## Business
- Industry: [industry]
- Size: [solo / small firm / mid-market / enterprise]
- Primary revenue model: [product / service / subscription / retainer]
## Goals
- [Goal 1]
- [Goal 2]
## Users
- [End user 1]: does [X]
- [End user 2]: does [Y]
## Existing Tools
- [Tool]: [what it does, what's missing]
- [Tool]: [what it does, what's missing]
## Pain Points (Automate These First)
1. [Pain point]: [what it costs the client today]
2. [Pain point]: [what it costs the client today]
## Budget
- Setup: $[amount]
- Monthly: $[amount]
## Timeline
- [Date or condition]
## Technical Contact
- [Name]: [email/Signal]
## Business Decision Maker
- [Name]: [email/Signal]
## Compliance
- [Requirement]: [implication for OpenClaw setup]
## Sensitive Data
- [Data type]: [storage requirement]
## Agent Recommendations
1. [Agent name] — [what it does]
2. [Agent name] — [what it does]
3. [Agent name] — [what it does]
Phase 2: Agent Architecture Design
Design the agent stack before writing any config.
Agent Design Principles
- One agent per domain: Don't pile everything into one agent. Separate research from operations from communication.
- Human in the loop for client-facing: Every agent action that touches the client or their customers gets a human approval gate.
- Native tools first: Use built-in OpenClaw tools before adding external MCPs.
- Stateless where possible: Agents that maintain state between calls are harder to debug and cost more.
- Trigger-based, not polling: Agents respond to events (webhook, cron, user message) rather than constantly running.
Standard Agent Types
| Agent | Purpose | Triggers | Tools |
|---|---|---|---|
| Research Agent | Deep-dive research, multi-source, structured output | On-demand, cron | web_search, crawl4ai, browser, reddit, twitter |
| Operations Agent | Routine tasks, data processing, CRM/ERP ops | Webhook, cron | REST APIs, file ops, scripting |
| Communication Agent | Drafting, email, Signal, approvals | User message, workflow trigger | Signal, email (ms-graph/resend), drafting |
| Monitoring Agent | Health checks, alerting, log review | Cron | glances-api, healthcheck, alerting |
| Marketing Agent | Content, social, SEO, lead gen | Cron, webhook | Platform APIs (Meta, Later, GBP), web tools |
How Many Agents Does This Client Need?
- 1-2 agents: Single-person business, clear primary use case (e.g., research + drafting)
- 3-4 agents: Small team, multiple workflows (e.g., research + intake + billing + marketing)
- 5+ agents: Complex operation, multiple client types, high volume
Start conservative. Clients can add agents. Removing agents is harder.
Agent Interaction Design
Define how agents talk to each other:
User → Communication Agent → [approves] → Operations Agent → External Service
↓
Research Agent → [feeds context] → Operations Agent
Design the handoffs explicitly. Every handoff is a potential failure point — minimize them.
Output: Agent Architecture Document
Write to /tmp/agent-architecture.md:
# [Client Name] — Agent Architecture
## Agents
### Agent 1: [Name]
- **Role**: [one sentence]
- **Model**: [model to use, cost tier]
- **Trigger**: [what starts this agent's work]
- **Tools**: [list of tools, local scripts, MCPs]
- **Approval gate**: [yes/no, and what/who approves]
- **Input from**: [what other agents or systems feed this one]
- **Output to**: [what this agent produces]
### Agent 2: [Name]
[...]
## Agent Interaction Map
[Describe how agents hand off work]
## External Service Connections
| Service | Agent | What it does | Auth method |
|---------|-------|-------------|-------------|
| [Service] | [Agent] | [action] | [API key / OAuth / other] |
## Security Model
- [How are API keys stored?]
- [Who has access to what?]
- [Data residency / compliance notes]
Phase 3: External Service Integration
For each external service the agents will use:
Integration Checklist
For each service, document:
- Service name and purpose
- Which agent uses it
- What operations are needed (read, write, or both)
- Authentication method (API key, OAuth 2.0, username/password, service account)
- Rate limits and quotas
- Where credentials are stored (OpenClaw config, env vars, secret manager)
- Fallback behavior (what if the service is unavailable)
Credential Management Pattern
# Store in OpenClaw config.yaml under agents.[name].env
# Or use OpenClaw's secret management
# NEVER hardcode keys in agent workspace files
environment:
SERVICE_API_KEY: "pcp_xxxx" # Reference to secret, not raw value
SERVICE_BASE_URL: "https://api.service.com"
MCP Server vs Direct API
| Approach | When to use | Tradeoff |
|---|---|---|
| MCP Server | Multiple agents need the same service; standardized tool interface | More setup; better for complex services |
| Direct API call | Only one agent uses the service; simple operations | Less overhead; agent-specific code |
| Webhook | Service pushes data to OpenClaw (events, not queries) | Real-time; requires the service support webhooks |
Output: Integration Spec
Write to /tmp/integrations.md:
# [Client Name] — External Integrations
## [Service Name]
- **Purpose**: [what this service does for the client]
- **Agent owner**: [which agent uses it]
- **Operations**: [read/write/list/etc.]
- **Auth**: [method]
- **Rate limits**: [any known limits]
- **Credentials location**: [where stored]
- **Fallback**: [what happens if unavailable]
- **MCP or direct**: [which approach]
Phase 4: Configuration
OpenClaw Agent Config Template
For each agent, create a workspace config:
# agents/[agent-name]/AGENTS.md
# Workspace-level config for this agent
model: litellm/minimax/MiniMax-M2.7 # Or client's preferred model
default_model: litellm/minimax/MiniMax-M2.7
channels:
signal: # If Signal integration needed
enabled: true
webhook: # For incoming webhooks
enabled: true
agents:
[agent-name]:
trigger:
cron: "0 9 * * 1" # Weekly Monday 9am, example
# OR webhook: "/api/agents/[agent-name]/trigger"
tools:
- web_search
- browser
- file_read
env:
EXTERNAL_SERVICE_KEY: "ref://secret/service-key"
Workspace File Structure
agents/[agent-name]/
├── AGENTS.md # Agent configuration and identity
├── SOUL.md # Agent persona and tone
├── USER.md # User context (client info)
├── MEMORY.md # Long-term memory / completed work log
├── TOOLS.md # Tool configs and credentials refs
├── HEARTBEAT.md # Periodic tasks (keep empty unless needed)
└── workspace/ # Agent's working files
Critical Config Rules
- Never commit secrets: Use
ref://secret/references or environment variables, never raw API keys in config files. - Model selection: Match model to task complexity. Research = capable model (M2.7 or better). Simple tasks = cheaper model.
- Channel config: Enable only channels the client actually uses. Don't configure Slack if they use Signal.
- Heartbeat: Keep HEARTBEAT.md empty unless the agent genuinely needs periodic background tasks.
Phase 5: Launch Checklist
Before going live with any client:
Pre-Launch Verification (Run Every Item)
- Vault created: Client vault at
PHATT-TECH/Customers/<client-name>/ - Client brief saved:
/tmp/client-brief.md→ vault - Agent architecture saved:
/tmp/agent-architecture.md→ vault - Integration spec saved:
/tmp/integrations.md→ vault - Credentials configured: All API keys in OpenClaw config, not hardcoded
- Signal channel tested: Agent can send and receive from client's Signal
- Webhook endpoints tested: If used, verify endpoints receive and process correctly
- Approval workflow tested: From trigger → agent → approval → action end-to-end
- Error handling verified: Agent handles API failures gracefully (retry logic, alerting)
- First-run manual override: Someone monitors the first 24-48 hours closely
- Client briefed: Client knows what to expect, how to approve, how to escalate issues
- Runbook delivered: Client-facing doc explaining what the agent does, how to interact
Client Runbook Template
# [Client Name] — OpenClaw Runbook
## What We Built
[One paragraph: what the system does for the client]
## Your Agents
### [Agent Name]
- **What it does**: [description]
- **When it runs**: [frequency or trigger]
- **What you approve**: [what shows up in your Signal/email for approval]
- **How to request work**: [how to ask the agent to do something new]
## How to Work With the System
1. **Approvals**: You'll receive Signal messages when an action needs your approval. Reply with `APPROVE`, `EDIT`, or `SKIP`.
2. **New requests**: Message [Signal channel] with [what format]. The agent will acknowledge and get back to you.
3. **Issues**: If something looks wrong, message [PHATT TECH contact].
## What to Expect
- [Day 1]: [what happens]
- [Week 1]: [what happens]
- [Ongoing]: [what happens]
## What We Monitor
PHATT TECH monitors: [list what Van Dam/Ledger monitors]
## Emergency Contacts
- Technical issues: [contact]
- Billing questions: [contact]
Phase 6: Post-Launch
First Week
- Monitor agent outputs closely
- Log every deviation from expected behavior
- Collect client feedback on what feels right vs wrong
- Adjust prompts, tools, and workflows based on real usage
First Month
- Generate a usage report: what agents did, what was approved vs skipped
- Identify: what got automated that the client didn't expect? What is still manual that should be?
- Review: are the right approval thresholds set? Too many approvals = friction. Too few = risk.
- Cost review: are the models being used efficiently? Any expensive calls that could be cheaper?
Ongoing
- Monthly: check that integrations still work (API keys valid, permissions correct)
- Quarterly: client check-in — is the system still serving their goals?
- On-demand: when the client's business changes, the agent stack may need to change too
Common Patterns
Pattern: Approval Gate
Agent detects work to do
↓
Drafts content / action
↓
Sends to client via Signal: [preview] → APPROVE / EDIT / SKIP
↓
Client approves (one tap)
↓
Agent executes
Pattern: Event-Triggered Pipeline
External event (webhook from CRM, form submit, etc.)
↓
OpenClaw receives event
↓
Agent processes and routes
↓
Appropriate action taken (update CRM, draft email, alert staff)
Pattern: Scheduled Report
Cron trigger (e.g., every Monday 8am)
↓
Agent pulls data from integrations
↓
Compiles report
↓
Sends to client via Signal / email
Pattern: Research Sprint
User requests research on [topic]
↓
Research agent runs 20-50 searches across multiple sources
↓
Agent cross-references and synthesizes
↓
Structured brief delivered to user
↓
User approves / requests follow-up
Skills Reference
For common vertical use cases, check these existing skills before building custom:
| Need | Skill |
|---|---|
| Legal research | Build custom (no good existing skill) |
| CRM operations (HubSpot, Clio) | ms-graph, phatt-claw |
| Social media | Build custom (Meta/Later APIs) |
| Financial data | mercury-bank, litellm |
| Meeting transcription | youtube-watcher, fathom |
| Cloud infrastructure | cloudflare, glances-api |
| Container management | phatt-claw, plex |
File Output Conventions
All planning documents go to /tmp/ first, then to the client vault:
# Write to vault
vault-write "PHATT-TECH/Customers/<client>/[document-name].md" --file /tmp/[document-name].md
All agent workspace files go in:
/root/.openclaw/workspace/agents/<agent-name>/
Never write directly to vault-cache — always use vault-write.