Modular Deployment
How to set up a new assistant deployment without rebuilding from scratch.
The goal is that deploying an assistant for a new person or use case is a configuration change, not a rebuild. This page describes the target architecture and what's been built toward it so far.
The Identity Layer
Everything that makes a deployment unique belongs in the identity layer:
- Domain name and DNS config
SOUL.mdfiles per agent (identity, capabilities, instructions)- Site theme and content (if a site is included)
- API credentials (Anthropic key, Google service account, Twilio, Brave)
- Agent names and personalities
Everything else โ the infrastructure, the bridge services, the OpenClaw config structure โ is shared across deployments.
What You're Reusing
When setting up a new deployment, you're reusing:
- The same Ubuntu + Caddy + OpenClaw + systemd setup
- The same bridge service code (GSuite bridge, SMS bridge, CRM service)
- The same
openclaw.jsonstructure (different agents/keys, same config format) - The same 11ty site template (different content, same build pipeline)
Target Deployment Manifest
We're working toward a single config file that describes a complete deployment:
domain: example.com
agents:
primary:
model: claude-sonnet-4-6
tools: [web, crm, gsuite]
chat:
model: claude-haiku-4-5
tools: [web]
bridges:
gsuite: true
sms: false
crm: true
site:
enabled: true
template: default
This file should eventually drive an automated setup script. It's not there yet โ but all decisions made in the current setup are made with this target in mind.
Current Manual Setup Sequence
Until the setup script exists, here's the sequence for a new deployment:
Infrastructure (one-time per server):
- Provision Ubuntu droplet (4GB RAM minimum)
- Install Node.js v22, git, build tools
- Install OpenClaw via install script
- Install and configure Caddy
- Point domain DNS at server
Platform (per deployment): 6. Create bridge service directories, copy service code 7. Install npm dependencies for each bridge 8. Create systemd unit files and enable services 9. Configure Caddy virtualhost for the domain
Identity (unique per deployment):
10. Write openclaw.json with agents and API keys
11. Create workspace directories with SOUL.md per agent
12. Configure opt/openclaw.env with credentials
13. Set up 11ty site with content (optional)
14. Add Google credentials for GSuite bridge (optional)
15. Add Twilio credentials for SMS bridge (optional)
Opt-In Components
Every component is optional. A deployment can include:
| Component | When to include |
|---|---|
| 11ty site | Needs a public-facing website |
| GSuite bridge | Needs email/calendar access |
| SMS bridge | Needs text messaging |
| CRM service | Needs lead tracking |
| Discord channel | Needs a Discord bot |
| Public chat widget | Needs a site chat interface |
A deployment that only handles email triage needs OpenClaw + OpenClaw + GSuite bridge. That's it.
What Changes Between Deployments
| Changes | Stays the same |
|---|---|
| Domain | Bridge service code |
| Agent names and identities | openclaw.json structure |
| SOUL.md content | Caddy config structure |
| API credentials | Systemd unit format |
| Site content and theme | Build pipeline |
| Which bridges are enabled | Server OS and runtime |
Current Status
This is being built and documented as mcinnis.dev is built. The setup script doesn't exist yet. When it does, it will live at /opt/deploy-assistant.sh and be documented here.
If you're setting this up yourself before the script exists, follow the manual sequence above and open an issue if anything is missing or unclear.