Mike Engle

OpenClaw

Your agents, your configs, no limits

What we are building today

A self-hosted agent server you own and control. By the end of this talk you will know how to build one from scratch. Everything you need is linked below.

Online resources

What you will walk away with

  • A working server with Tailscale, Claude Code, and workspace management
  • The scripts and skills to maintain it
  • A pattern for building agents that do real work
  • The honest trade-offs and costs of running it
Chapter 0

Some tools I tried first

Lindy.ai

iMessage only

Could not reach Slack, email, or any work surface. Dead on arrival for a multi-channel workflow.

Co-work

LinkedIn blocked by ToS

Anthropic's hosted agent refused to touch LinkedIn. Understandable, but that was half the use case.

Manus

$4 per task (for $0.10 of work)

Per-task credits at 40x the API cost. Fine for a demo, unsustainable for daily operations.

Common thread: none of them give you access to the underlying scripts.

Thesis

You own the config, you own the exit

"If I wanted to migrate everything off OpenClaw tomorrow, a script could crawl the configs and move it."

What that script would find:

25
agent JSONs
36
skill folders
9
QMD memory files
30
cron exports
33
Slack bindings

All plain text or SQLite. No proprietary formats. No vendor lock.

Setting expectations

What this talk is and isn't

What it is

  • A pattern you can replicate on your own infrastructure
  • Honest numbers: cost, time, failure modes
  • Live demos on the production server
  • A companion guide and GitHub repo you can use today

What it isn't

  • A vendor pitch (there is no OpenClaw company)
  • A claim that this is the only way
  • Production-ready out of the box (tuning required)
  • A replacement for your security team's judgment
1

Linux and Tailscale foundation

8 minutes + demo

Chapter 1

The hardware

Two identical Hostinger VPS boxes.

Production

srv1456044

Canary

englebert1

CPU: AMD EPYC 9354P, 8 vCPU
RAM: 32 GB
Disk: 387 GB
OS: Ubuntu 24.04 LTS
Cost: ~$30/month each

Chapter 1

Tailscale

A private mesh network across all your devices. Runs alongside everything you already use without conflict.

Free tier covers up to 100 devices. The entire 11-node mesh for this project costs nothing.

Chapter 1

Getting started

Seven steps from zero to a working agent server. Details in the deployment guide.

  1. 1
    Set up a Tailscale account

    Free at tailscale.com. This becomes your private network.

  2. 2
    Get an Anthropic API key

    Sign up at console.anthropic.com and generate an API key.

  3. 3
    Build or rent a server

    Mac Mini at home, or a VPS from Hostinger ($10-30/mo). Select Ubuntu.

  4. 4
    Log in as root and install Tailscale
    curl -fsSL https://tailscale.com/install.sh | sh
    sudo tailscale up
  5. 5
    Install Claude Code
    npm install -g @anthropic-ai/claude-code
  6. 6
    Log in to your Claude account
    claude login
  7. 7
    Install Claude Workspaces management
    git clone https://github.com/mikeengleai/openclaw-framework.git
Chapter 1

The order to build in

This is the roadmap for the rest of the talk. Each step builds on the last.

  1. SSH + Tailscale (secure access to your box)
  2. tmux + Claude Code + cw (persistent development sessions)
  3. One agent that solves one painful thing
  4. Slack binding (give it a channel)
  5. Cron a daily report (make it proactive)
  6. Add a second agent (now you have a pattern)
2

The development loop

18 minutes, mostly demo

Chapter 2

"I want to work on three things at once and pick any of them up from my phone while walking the dogs."

Chapter 2

Four ingredients

SSH
Get to the box from anywhere
tmux
Persistent terminal sessions
Claude Code
AI-native development
/remote-control
Mobile web access to sessions
Chapter 2

The cw script

claude-workspaces: 46.6 KB of battle-tested bash on production.

  • Lists all active workspaces
  • Attaches by name
  • Creates new workspaces with CLAUDE.md scaffolding
  • Indexes recent sessions
  • Grew from 12.6 KB (canary) to 46.6 KB (prod) through daily use
$ cw list
  b-1kpreso      active  2h ago
  aisf-sweep      active  4h ago
  hubspot-fix     idle    1d ago
  linkedin-draft  idle    3d ago

$ cw new peptide-research
Creating workspace...
Scaffolding CLAUDE.md...
Attaching to tmux session.

GitHub: github.com/openclaw-framework

Chapter 2

Claude Code Agent View

Press the left arrow in Claude Code to see all sessions in one terminal window. The terminal-native counterpart to the web-based /remote-control.

Agent View (terminal)

  • All sessions visible at once
  • Fast switching between workspaces
  • Native terminal performance

/remote-control (web)

  • Works from any browser, including mobile
  • No SSH client needed
  • More flexible for phone-based work

Both have their place. Web is more flexible for mobile. Terminal is faster at the desk.

Chapter 2

The Superpowers plugin

A development methodology for coding agents, packaged as a Claude Code plugin. 14 composable skills that enforce structure on how the agent works.

Before you code

  • Brainstorming (Socratic design refinement with the user)
  • Writing implementation plans
  • Git worktree isolation

While you code

  • Test-driven development (red-green-refactor)
  • Systematic debugging (4-phase root cause analysis)
  • Parallel subagent dispatch
  • Subagent-driven development with review checkpoints

Before you ship

  • Verification before completion
  • Code review (requesting and receiving)
  • Branch finishing (merge, PR, or cleanup)

Works across Claude Code, Codex, Cursor, Gemini CLI, and GitHub Copilot. The same skills enforce the same rigor regardless of which tool you use.

Live demo

Three workspaces, one phone

12 minutes

Chapter 2

Three lessons

The session is the unit of work

Each workspace has its own Claude Code instance, working directory, and CLAUDE.md context. Close the laptop, pick it up later.

Naming matters

cw list only helps if workspace names describe the work. Use project names, ticket numbers, feature descriptions.

Mobile parity changes how you work

"At the computer" stops being a prerequisite for development.

3

OpenClaw anatomy and vocabulary

17 minutes + demo

Chapter 3

The one-page mental model

Agents

25 configured. Each binds a model, profile, skills, and channel. JSON config files.

Skills

36 packages. SKILL.md + optional scripts. Registered (active) or dir-only (present but disabled).

Channels

33 Slack channel bindings. Message arrives, bound agent processes it.

Cron jobs

30 enabled. System health, security sweeps, content ingestion, weekly digests.

Memory (QMD)

SQLite-backed per-agent memory. Structured frontmatter, queryable across agents.

Gateway

Port 18789. Local mode, token auth. The front door for all API and Slack traffic.

Chapter 3

Agents: 25 configured

Five representative agents from production:

AgentModelProfilePurpose
mainSonnet 4.6fullGeneral assistant, bound to most Slack channels
outlook-engleOpus 4.7codingEmail management, calendar, high-stakes comms
ai-security-frameworkSonnet 4.6codingDaily AISF threat sweeps, weekly digest
youtube-kbDeepSeek v4-profullYouTube transcript ingestion (cost-optimized)
content-curatorGemini 2.5 FlashcodingHigh-volume content processing

Each agent picks the model that fits its workload. Sensitive work goes to Anthropic. Bulk processing goes to cheaper providers.

Chapter 3

Skills: 36 packages

A skill is a capability folder: SKILL.md describing what it does, optional executable scripts.

SkillStatusScriptsWhat it does
agent-browserRegistered-Persistent browser automation with cookie store
hubspotRegisteredhubspot_crm.pyCRM data: contacts, companies, deals, pipelines
gsheetsRegistered-Read, write, manage Google Sheets
ms365Registered-Outlook email and calendar access
youtube-kbRegistered7 scriptsChannel subscriptions, transcript chunking, search
linkedin-feedRegistered10 scriptsFeed monitor, post drafting, company page tracking
otter-searchRegistered-Meeting transcript search via Otter MCP
system-mapRegisteredsystem_map.pyFull system config snapshot to markdown

8 of 36 shown. Registered = active. Dir-only = present but disabled.

Chapter 3

Subagent limits and why they matter

SettingValueWhat it prevents
maxConcurrent 8 Caps parallel subagent threads. Without it, one request fans out into dozens of API calls. Token cost explosion.
maxSpawnDepth 3 Prevents recursive subagent spawning. Without it, a misconfigured agent produces a process tree that consumes the box.
maxChildrenPerAgent 5 Caps fan-out per parent agent. Same blast-radius concept, scoped per parent.
runTimeoutSeconds 900 Circuit breaker. If a subagent hangs on a network stall or rate-limit retry storm, kill it at 15 minutes.

These limits exist because earlier users hit exactly these failure modes. Trial and error, codified.

Chapter 3

Channel bindings

33
Slack channels bound to agents

Each channel maps to one agent. When a message arrives, the bound agent processes it. The requireMention flag controls whether the agent responds to every message or only when @-mentioned.

29 channels respond to all messages. 4 require an @-mention.

Channel separation makes it obvious which agent handles which domain. One channel for email. One for HubSpot. One for AISF. One for meeting transcripts. The Slack channel IS the interface.

Channel IDs redacted for recording distribution.

Chapter 3

The daily system map

Every day at 5:30 AM, a cron job regenerates a full markdown snapshot of the entire system: agents, skills, bindings, cron jobs, memory files, Tailscale nodes, security config.

The fact that this artifact auto-regenerates daily IS the point. You always have a current, readable, diffable record of what your system looks like. No manual audits. No stale documentation.

20 sections. Covers infrastructure, agents, skills, cron, memory, security, plugins, Tailscale, scripts. The system map for this talk was generated on 2026-05-23.

Live demo

Inside ~/.openclaw/

3-4 minutes

4

QMD

5 minutes

Chapter 4

What QMD is

SQLite-backed per-agent memory with structured frontmatter, queryable across agents.

Created by

Tobi Lutke, founder of Shopify.

Replaces

The flat-markdown-on-disk pattern most early agent stacks use. Dozens of agents writing thousands of memory entries to individual files becomes slow and fragile. QMD solves that.

Why it works

  • Free and open source
  • SQLite is a portable format (one file per agent)
  • Handles concurrent reads without locking
  • Full-text search built in
  • Drop-in replacement for markdown-on-disk
  • Migration path is clean: copy the .sqlite files
Chapter 4

Proof it's in use

Real file sizes from production:

30 MB
youtube_kb.sqlite
6.5 MB
scout.sqlite
5.5 MB
sales-prospector.sqlite
70 KB
main.sqlite

9 memory files total on production. The youtube_kb database holds months of transcripts from subscribed channels. scout holds competitor intelligence. These are working databases, not demos.

5

The four flagships

20 minutes, 5 per flagship

Flagship 1: AISF

AI Security Framework

Keeping tabs on what competitors and partners are doing in the AI security space. The agent scours sources daily so you don't have to.

What it does

  • 13-topic taxonomy covering the AI security landscape
  • Daily 6 AM sweep via Perplexity Sonar through OpenRouter
  • Automated source discovery finds new content daily
  • Results stored in QMD, queryable from Slack
  • Weekly Monday digest summarizes the landscape
  • Nightly cleanup and synthesis at 10 PM

9 cron jobs

Daily research sweep6 AM UTC
Source discovery8 AM UTC
Nightly cleanup10 PM UTC
Nightly synthesis10:30 PM UTC
Weekly digestMonday 5 AM ET
Weekly pinned sitesMonday 5 AM UTC
Discovery healthMonday 9 AM UTC
Dashboard export11 PM UTC
Capability refreshMonday 4:45 AM ET
Flagship 1: AISF

Sources scoured daily

Search engines

  • Perplexity Sonar via OpenRouter — primary research sweep
  • Brave Search — secondary discovery, theme-specific queries

Discovery pipeline

  • 7 rotating themes, one per day
  • Candidate URLs extracted and deduplicated
  • LLM relevance scoring (1-10 scale, accept at 7+)
  • Follow-link extraction from accepted articles (one level deep)

What it tracks

  • Competitor product launches and partnerships
  • AI security standards and frameworks (NIST, OWASP, ISO)
  • Vulnerability disclosures and adversarial research
  • Regulatory developments (EU AI Act, state-level bills)
  • Vendor security certifications and audit results
  • Red team findings and jailbreak research
  • Identity and authentication in AI systems

150+ entries across 127 stories from 11+ domains on production. Source count grows automatically.

Live demo

AISF in Slack

Show the AISF channel, last week's digest, and a natural-language query against the knowledge base.

~2 minutes

Flagship 2: Otter

Meeting intelligence for the whole company

Meeting transcripts locked inside Otter's app are invisible to anyone not in the room. This agent makes them searchable from Slack.

Architecture

  • Otter MCP server connects to Otter.ai
  • Indexed transcripts searchable across the team
  • Slack channel as the natural-language interface
  • Answers include citations to specific meetings

The value

Anyone in the company can ask "what did we decide about X?" in Slack and get an answer with a link to the meeting where it was discussed. No more "I think someone mentioned that in a call last week."

Live demo

Real Otter query in Slack

Ask a real question. Return a real answer with citations to specific meetings.

~2 minutes

Flagship 3: EA workflow

Email, calendar, and HubSpot in one place

Data fragmented across three systems. The EA spent half her time switching tabs.

Architecture

  • ms365 skill for Outlook email and calendar
  • hubspot skill for CRM data
  • gsheets skill for spreadsheet output
  • All callable from the main agent
  • Slack as the single input surface
4-5 hrs
saved per employee per week
45 min → 30 sec
HubSpot contact extract
Live demo

HubSpot extract via Slack

Ask the main agent to pull a contact list with engagement filters from HubSpot.

~2 minutes

Flagship 4: personal use

Peptide research database

Same architecture pattern as AISF, different domain. Daily sweeps, QMD storage, searchable from a dashboard.

Once you have the pattern, applying it to a new domain is a weekend.

The personal-use mirror proves the pattern is domain-agnostic. The architecture that monitors AI security threats works identically for personal health research. Swap the topic taxonomy and the data sources. Everything else stays the same.

Live demo

Peptide research dashboard

Open the dashboard, search the knowledge base.

~2 minutes

6

Browsing, scraping, content ingestion

9 minutes + demo

Chapter 6

The browser problem

ToS blocks

Hosted AI services refuse to interact with sites that prohibit automation. LinkedIn was the reason Co-work failed.

Cookie auth

Most valuable data sits behind login walls. Agents need persistent browser sessions with cookie storage on disk.

Anti-bot defenses

Cloudflare, Akamai, and custom bot detection. Headless browsers get fingerprinted and blocked.

Self-hosting means you decide what the agent can access. The responsibility is yours.

Chapter 6

The agent-browser skill

~/.openclaw/skills/agent-browser/cookies/
├── linkedin-engle/
├── mybrowser/
└── youtube-kb/
Chapter 6

The LinkedIn workflow

Chapter 6

How my LinkedIn went off the rails

[Screenshot: LinkedIn likes on a competitor's post]

The agent liked a competitor's post. What went wrong, what changed, what guardrails were added.

Chapter 6

YouTube knowledge base

  • Channel subscriptions managed in SQLite
  • RSS polling for new videos
  • Transcript chunking and embedding into QMD
  • Runs on DeepSeek v4-pro (cost-optimized for bulk)
  • 30 MB knowledge base and growing

7 scripts

manage_channels.pySubscribe/unsubscribe
ingest.pyFetch and chunk transcripts
search_kb.pyFull-text search
add_videos.pyManual video addition
browser_transcript_fetcher.pyBrowser-based fallback
Live demo

Search the YouTube knowledge base

Query youtube_kb for a topic. Show results with source videos and timestamps.

~2 minutes

Chapter 6

The apartment dashboards

Boston and Pennsylvania rental markets. Same pattern: scrape structured data, store in SQLite, serve a dashboard.

The publish-static skill deploys any directory of HTML/CSS/JS to a Tailscale-accessible URL.

"If a web data source has a structure, I can have a dashboard against it in an afternoon."

7

Model selection, cost, security

7 minutes

Chapter 7

The model lineup

ModelProviderUsed forWhy this model
Claude Sonnet 4.6Anthropic20 of 25 agentsWorkhorse. Best balance of quality and cost.
Claude Opus 4.7Anthropicoutlook-engleHigh-stakes email and calendar. Worth the premium.
Gemini 2.5 FlashGooglecontent-curatorHigh volume, low cost. Good enough for content processing.
DeepSeek v4-proDeepSeekyoutube-kbBulk transcript processing. Cost is the priority.
Ollama (local)LocalUnassignedqwen2.5:7b, gemma3:4b, granite3-guardian:2b installed. Not yet trusted for real work.
Chapter 7

Honest takes

Local models

Three models installed. None doing real work yet. The trust gap is real. Local models handle simple classification well, but anything requiring judgment or nuance still goes to the cloud. This will change, but it hasn't changed yet.

DeepSeek

Used where the task is bulk-transformational and not strategy-sensitive. Transcript processing, content summarization, data extraction. Never for email drafting, security analysis, or anything touching customer data.

Chapter 7

Cost reality

~$100
API cost per month
~$60
Two VPS boxes per month
~$160
Total monthly cost

The Daily Model Health Report cron tracks API usage across providers. Cost varies with workload: a heavy week of YouTube ingestion or AISF sweeps pushes the number up. Quiet weeks drop below $100.

Chapter 7

Per-agent model choice as defense in depth

Sensitive work goes to Anthropic. Bulk processing goes to cheaper providers. Never the reverse.

8

Two-box pattern and ops discipline

6 minutes

Chapter 8

The canary pattern

englebert1 (canary)

  • Personal projects and experiments
  • Docker-based OpenClaw install
  • 13 agents, 20 skills
  • Sonnet 4 primary, DeepSeek fallback
  • maxConcurrent: 2
  • Upgrades land here first

srv1456044 (production)

  • Work projects, team-facing agents
  • Native npm install
  • 25 agents, 36 skills
  • Sonnet 4.6 primary, per-agent overrides
  • maxConcurrent: 8
  • Gets updates after canary proves them out

Architectures kept similar on purpose (same Slack patterns, same skill structure) so issues surface on canary before they reach production.

Chapter 8

The system-upgrade skill

10 checkpointed bash scripts. Each one can be run independently. Each one can be rolled back.

  1. 00-preflight.sh
  2. 10-backup-files.sh
  3. 20-version-discover.sh
  4. 30-recon.sh
  5. 40-pre-upgrade-snapshot.sh
  6. 50-apt-upgrade.sh
  7. 60-openclaw-upgrade.sh
  8. 70-post-upgrade-verify.sh
  9. 99-reboot.sh
  10. post-reboot-notify.sh
Chapter 8

Always-on monitoring

JobScheduleWhat it does
Daily system map5:30 AMFull markdown snapshot of the entire system
Daily backup5:03 AMAutomated file backup (host-level backups before major upgrades)
Daily health report6:00 AMCPU, memory, disk, service status, agent health
VPS monitorEvery minuteProcess watchdog, service restart on failure
Chrome guardianEvery 2 minutesBrowser process cleanup, memory leak prevention

Honest position on backups: no restore drills. Host-level backups taken through the Hostinger interface before major upgrades.

Chapter 8

Everything lives in the repo

github.com/mikeengleai/openclaw-framework

9

Where I'd push back on myself

5 minutes

Chapter 9

Things to do differently if starting over

Systemd earlier

Cron-only orchestration works until you have 30 jobs. Systemd gives you logging, restart policies, and dependency ordering for free.

Per-agent allowlists from day one

70 rules on canary. 119 on production. That growth is the lesson. Start restrictive.

Exec approvals immediately

Human-in-the-loop approval for destructive commands prevents the mistakes that erode trust in the system.

Chapter 9

What's still fragile

Chapter 9

The honest cost of running this

3-5 hrs
per week using the system
1-2 hrs
per week tuning and maintenance
~$160
per month (API + hosting)

This is not zero-maintenance. The system requires active attention. The return is 4-5 hours saved per employee per week, but only after you invest the time to set it up and tune it.

10

Starting your own

6 minutes

Chapter 10

The minimum viable build

The last item is the most important. Without a specific pain point, the project stalls after the initial setup. Pick something you do manually every week that takes more than 30 minutes.

Chapter 10

The companion implementation guide

14 sections covering every step from Tailscale account creation to troubleshooting.

  1. Create a Tailscale account
  2. Sign up for a Hostinger VPS
  3. Lock down the Linux server
  4. Install Node.js, Python, SQLite, tmux
  5. Install OpenClaw
  6. Configure your first agent
  7. Set up QMD memory
  1. Set up the browsing service
  2. Connect Slack (or Telegram/WhatsApp)
  3. Schedule your first cron job
  4. Set up ntfy.sh push notifications
  5. Map a Tailscale shared drive
  6. The cw workflow
  7. Troubleshooting and where to ask for help

Each section: prerequisites, numbered steps, expected output, common failure modes.

Chapter 10

github.com/mikeengleai/openclaw-framework

Published

  • claude-workspaces (cw script)
  • compaction-prompt.md
  • skills/system-map/
  • skills/system-upgrade/

Coming

  • agents/ sample configs (redacted)
  • skills/agent-browser/
  • cron/ templates
  • Companion implementation guide

Apache 2.0 license. Clone it, fork it, make it yours.

11

Close

5 minutes

The thesis

You own the config, you own the exit

25 agent JSONs. 36 skill folders. 9 QMD databases. 30 cron exports. 33 Slack bindings. All plain text or SQLite. A migration script could crawl these configs and move the entire stack to any future framework.

Chapter 11

Interface choice

Slack works for this setup because per-channel separation makes it obvious which agent handles which domain. But Slack is not the only option.

Slack

Best for multi-agent setups. One channel per domain. Team-accessible. 33 channels on production.

Telegram

Single-agent, single-user. Free. Fast setup. Plugin already enabled on canary.

WhatsApp

If your team already lives in WhatsApp. Requires Meta Business API. Plugin enabled on canary.

Chapter 11

What's next

[Content TBD: Mike to specify forward-looking items]

Questions

Reach out on Slack or email for follow-up.

Companion guide and GitHub repo links shared in the chat.