A guide for setting up OpenClaw on DigitalOcean, plus an architectural review of clawchief — Ryan Carson's "Chief of Staff" starter kit.
Clawchief is an opinionated OpenClaw starter kit that turns your AI assistant into an executive assistant / chief of staff. It handles:
- Email triage and replies (Gmail)
- Calendar management (Google Calendar)
- Task management (Todoist)
- Business development outreach
- Meeting note ingestion
- Proactive Slack updates
Solid separation of concerns:
| File | Owns |
|---|---|
priority-map.md |
WHO and WHAT matters (people, programs, urgency levels) |
auto-resolver.md |
WHEN to act vs draft vs escalate |
task-system-contract/SKILL.md |
Shared Todoist behavior contract across all skills |
meeting-notes.md |
Meeting note ingestion policy |
Helper scripts (ea_gmail.py, etc.) |
Stable command surface for Google Workspace |
Smart task architecture:
- Todoist is the single source of truth for live tasks (not markdown files)
- Tasks map to "program sections" derived from
priority-map.md - Owner assignments (
ryanvsr2) flow through Todoist collaborators - Metadata keys enable idempotent upserts (no duplicate tasks)
Well-designed cron templates:
{
"name": "Executive assistant sweep",
"schedule": { "expr": "*/15 8-21 * * *" },
"payload": {
"message": "Executive assistant sweep. Use the existing executive-assistant skill..."
}
}Short trigger prompts + skill-based logic = deterministic, bounded runs.
Heavy dependency stack:
gwsCLI authenticated for multiple Google accounts- Todoist Pro (for task assignments)
- Slack (for proactive updates)
- ~1000 lines of Python just for
todoist_cli.py
Very personalized:
priority-map.mdis 500+ lines of Ryan's family, companies, yacht club- Helper scripts assume his email addresses, calendar IDs, sheet IDs
- You'd need to gut and rewrite most content
Resource requirements:
- Multiple Python +
gwsprocesses during EA sweeps - 1GB droplet will struggle; 2GB recommended
Google-centric:
- Meeting notes workflow assumes Gemini-generated Google Docs
- No support for other meeting tools (Otter, Fireflies, etc.)
| Keep | Skip |
|---|---|
| ✅ Separation pattern (priority-map, auto-resolver, task-contract) | ❌ Ryan's actual people/programs |
| ✅ Cron template structure | ❌ The gws dependency (unless you're deep in Google) |
| ✅ Todoist as single task source | ❌ Meeting notes workflow (unless using Gemini) |
| ✅ Idempotent task upsert pattern | ❌ Multi-account calendar complexity |
- DigitalOcean account (signup with $200 credit)
- SSH key pair
- ~20 minutes
- Log into DigitalOcean
- Click Create → Droplets
- Configure:
- Region: Closest to you
- Image: Ubuntu 24.04 LTS (avoid Marketplace 1-clicks)
- Size: Basic → Regular → $12/mo (1 vCPU, 2GB RAM) — recommended for clawchief-style workloads
- Authentication: SSH key (recommended)
- Click Create Droplet
- Note the IP address
# Connect
ssh root@YOUR_DROPLET_IP
# Update system
apt update && apt upgrade -y
# Add swap (important for memory headroom)
fallocate -l 2G /swapfile
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab
# Verify swap
free -hcurl -fsSL https://deb.nodesource.com/setup_22.x | bash -
apt install -y nodejs
# Verify
node --version # Should be v22.xcurl -fsSL https://openclaw.ai/install.sh | bash
# Verify
openclaw --versionopenclaw onboard --install-daemonThe wizard walks you through:
- Model auth (API keys for Claude, GPT, etc.)
- Channel setup (Telegram, WhatsApp, Discord)
- Gateway token (auto-generated)
- Daemon installation (systemd)
# Check OpenClaw status
openclaw status
# Check systemd service
systemctl --user status openclaw-gateway.service
# View logs
journalctl --user -u openclaw-gateway.service -fOption A: SSH Tunnel (simplest)
# From your LOCAL machine
ssh -L 18789:localhost:18789 root@YOUR_DROPLET_IP
# Then open in browser
open http://localhost:18789Option B: Tailscale (recommended for persistent access)
# On the droplet
curl -fsSL https://tailscale.com/install.sh | sh
tailscale up
# Configure OpenClaw to use Tailscale Serve
openclaw config set gateway.tailscale.mode serve
openclaw gateway restart
# Access via your Tailscale MagicDNS name
# https://your-droplet.tailnet-name.ts.net/Telegram:
openclaw pairing list telegram
openclaw pairing approve telegram <CODE>WhatsApp:
openclaw channels login whatsapp
# Scan QR code with your phoneDiscord:
openclaw channels add discord
# Follow the bot setup instructionsIf you want to use clawchief's architecture:
cd ~/.openclaw/workspace
git clone https://github.com/snarktank/clawchief.git clawchief-ref
# Review the structure
ls clawchief-ref/# Install gws (Google Workspace CLI)
# See: https://github.com/snarktank/gws
# Install Python dependencies
apt install -y python3-pip
pip3 install todoist-api-python# Add to ~/.openclaw/.env
echo "TODOIST_API_TOKEN=your_token_here" >> ~/.openclaw/.env# Copy skills (customize after)
cp -r clawchief-ref/skills/* ~/.openclaw/skills/
# Copy workspace structure (customize after)
cp -r clawchief-ref/clawchief ~/.openclaw/workspace/
cp clawchief-ref/workspace/HEARTBEAT.md ~/.openclaw/workspace/
cp clawchief-ref/workspace/TOOLS.md ~/.openclaw/workspace/Edit these files to match YOUR context:
~/.openclaw/workspace/clawchief/priority-map.md— your people and programs~/.openclaw/workspace/TOOLS.md— your local environment details~/.openclaw/skills/business-development/resources/partners.md— your partners- Cron jobs from
clawchief-ref/cron/jobs.template.json
python3 ~/.openclaw/workspace/clawchief/scripts/todoist_cli.py bootstrap# Backup OpenClaw state
tar -czvf ~/openclaw-backup-$(date +%Y%m%d).tar.gz ~/.openclaw
# Consider automating via cron# Update OpenClaw
npm update -g openclaw
# Restart gateway
openclaw gateway restart# Memory usage
free -h
htop
# Logs
journalctl --user -u openclaw-gateway.service -f
# OpenClaw diagnostics
openclaw doctor --non-interactive| Component | Cost |
|---|---|
| DigitalOcean Droplet (2GB) | $12/mo |
| Todoist Pro (optional) | $5/mo |
| Model API usage | Variable |
| Total | ~$17/mo + API costs |