Your agents, your configs, no limits
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.
Could not reach Slack, email, or any work surface. Dead on arrival for a multi-channel workflow.
Anthropic's hosted agent refused to touch LinkedIn. Understandable, but that was half the use case.
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.
"If I wanted to migrate everything off OpenClaw tomorrow, a script could crawl the configs and move it."
What that script would find:
All plain text or SQLite. No proprietary formats. No vendor lock.
8 minutes + demo
Two identical Hostinger VPS boxes.
srv1456044
englebert1
CPU: AMD EPYC 9354P, 8 vCPU
RAM: 32 GB
Disk: 387 GB
OS: Ubuntu 24.04 LTS
Cost: ~$30/month each
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.
Seven steps from zero to a working agent server. Details in the deployment guide.
Free at tailscale.com. This becomes your private network.
Sign up at console.anthropic.com and generate an API key.
Mac Mini at home, or a VPS from Hostinger ($10-30/mo). Select Ubuntu.
curl -fsSL https://tailscale.com/install.sh | sh sudo tailscale up
npm install -g @anthropic-ai/claude-code
claude login
git clone https://github.com/mikeengleai/openclaw-framework.git
This is the roadmap for the rest of the talk. Each step builds on the last.
18 minutes, mostly demo
cw scriptclaude-workspaces: 46.6 KB of battle-tested bash on production.
$ 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
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.
Both have their place. Web is more flexible for mobile. Terminal is faster at the desk.
A development methodology for coding agents, packaged as a Claude Code plugin. 14 composable skills that enforce structure on how the agent works.
Works across Claude Code, Codex, Cursor, Gemini CLI, and GitHub Copilot. The same skills enforce the same rigor regardless of which tool you use.
cw list to show current workspaces/remote-control12 minutes
Each workspace has its own Claude Code instance, working directory, and CLAUDE.md context. Close the laptop, pick it up later.
cw list only helps if workspace names describe the work. Use project names, ticket numbers, feature descriptions.
"At the computer" stops being a prerequisite for development.
17 minutes + demo
25 configured. Each binds a model, profile, skills, and channel. JSON config files.
36 packages. SKILL.md + optional scripts. Registered (active) or dir-only (present but disabled).
33 Slack channel bindings. Message arrives, bound agent processes it.
30 enabled. System health, security sweeps, content ingestion, weekly digests.
SQLite-backed per-agent memory. Structured frontmatter, queryable across agents.
Port 18789. Local mode, token auth. The front door for all API and Slack traffic.
Five representative agents from production:
| Agent | Model | Profile | Purpose |
|---|---|---|---|
main | Sonnet 4.6 | full | General assistant, bound to most Slack channels |
outlook-engle | Opus 4.7 | coding | Email management, calendar, high-stakes comms |
ai-security-framework | Sonnet 4.6 | coding | Daily AISF threat sweeps, weekly digest |
youtube-kb | DeepSeek v4-pro | full | YouTube transcript ingestion (cost-optimized) |
content-curator | Gemini 2.5 Flash | coding | High-volume content processing |
Each agent picks the model that fits its workload. Sensitive work goes to Anthropic. Bulk processing goes to cheaper providers.
A skill is a capability folder: SKILL.md describing what it does, optional executable scripts.
| Skill | Status | Scripts | What it does |
|---|---|---|---|
agent-browser | Registered | - | Persistent browser automation with cookie store |
hubspot | Registered | hubspot_crm.py | CRM data: contacts, companies, deals, pipelines |
gsheets | Registered | - | Read, write, manage Google Sheets |
ms365 | Registered | - | Outlook email and calendar access |
youtube-kb | Registered | 7 scripts | Channel subscriptions, transcript chunking, search |
linkedin-feed | Registered | 10 scripts | Feed monitor, post drafting, company page tracking |
otter-search | Registered | - | Meeting transcript search via Otter MCP |
system-map | Registered | system_map.py | Full system config snapshot to markdown |
8 of 36 shown. Registered = active. Dir-only = present but disabled.
| Setting | Value | What 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.
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.
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.
~/.openclaw/3-4 minutes
5 minutes
SQLite-backed per-agent memory with structured frontmatter, queryable across agents.
Tobi Lutke, founder of Shopify.
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.
Real file sizes from production:
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.
20 minutes, 5 per flagship
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.
| Daily research sweep | 6 AM UTC |
| Source discovery | 8 AM UTC |
| Nightly cleanup | 10 PM UTC |
| Nightly synthesis | 10:30 PM UTC |
| Weekly digest | Monday 5 AM ET |
| Weekly pinned sites | Monday 5 AM UTC |
| Discovery health | Monday 9 AM UTC |
| Dashboard export | 11 PM UTC |
| Capability refresh | Monday 4:45 AM ET |
150+ entries across 127 stories from 11+ domains on production. Source count grows automatically.
Show the AISF channel, last week's digest, and a natural-language query against the knowledge base.
~2 minutes
Meeting transcripts locked inside Otter's app are invisible to anyone not in the room. This agent makes them searchable from Slack.
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."
Ask a real question. Return a real answer with citations to specific meetings.
~2 minutes
Data fragmented across three systems. The EA spent half her time switching tabs.
ms365 skill for Outlook email and calendarhubspot skill for CRM datagsheets skill for spreadsheet outputmain agentAsk the main agent to pull a contact list with engagement filters from HubSpot.
~2 minutes
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.
Open the dashboard, search the knowledge base.
~2 minutes
9 minutes + demo
Hosted AI services refuse to interact with sites that prohibit automation. LinkedIn was the reason Co-work failed.
Most valuable data sits behind login walls. Agents need persistent browser sessions with cookie storage on disk.
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.
agent-browser skill~/.openclaw/skills/agent-browser/cookies/ ├── linkedin-engle/ ├── mybrowser/ └── youtube-kb/
The agent liked a competitor's post. What went wrong, what changed, what guardrails were added.
manage_channels.py | Subscribe/unsubscribe |
ingest.py | Fetch and chunk transcripts |
search_kb.py | Full-text search |
add_videos.py | Manual video addition |
browser_transcript_fetcher.py | Browser-based fallback |
Query youtube_kb for a topic. Show results with source videos and timestamps.
~2 minutes
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 minutes
| Model | Provider | Used for | Why this model |
|---|---|---|---|
| Claude Sonnet 4.6 | Anthropic | 20 of 25 agents | Workhorse. Best balance of quality and cost. |
| Claude Opus 4.7 | Anthropic | outlook-engle | High-stakes email and calendar. Worth the premium. |
| Gemini 2.5 Flash | content-curator | High volume, low cost. Good enough for content processing. | |
| DeepSeek v4-pro | DeepSeek | youtube-kb | Bulk transcript processing. Cost is the priority. |
| Ollama (local) | Local | Unassigned | qwen2.5:7b, gemma3:4b, granite3-guardian:2b installed. Not yet trusted for real work. |
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.
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.
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.
Sensitive work goes to Anthropic. Bulk processing goes to cheaper providers. Never the reverse.
6 minutes
Architectures kept similar on purpose (same Slack patterns, same skill structure) so issues surface on canary before they reach production.
system-upgrade skill10 checkpointed bash scripts. Each one can be run independently. Each one can be rolled back.
00-preflight.sh10-backup-files.sh20-version-discover.sh30-recon.sh40-pre-upgrade-snapshot.sh50-apt-upgrade.sh60-openclaw-upgrade.sh70-post-upgrade-verify.sh99-reboot.shpost-reboot-notify.sh| Job | Schedule | What it does |
|---|---|---|
| Daily system map | 5:30 AM | Full markdown snapshot of the entire system |
| Daily backup | 5:03 AM | Automated file backup (host-level backups before major upgrades) |
| Daily health report | 6:00 AM | CPU, memory, disk, service status, agent health |
| VPS monitor | Every minute | Process watchdog, service restart on failure |
| Chrome guardian | Every 2 minutes | Browser process cleanup, memory leak prevention |
Honest position on backups: no restore drills. Host-level backups taken through the Hostinger interface before major upgrades.
github.com/mikeengleai/openclaw-framework
claude-workspaces (the cw workspace manager)compaction-prompt.md (memory compaction curator)skills/system-map/ (daily system snapshot)skills/system-upgrade/ (10 checkpointed upgrade scripts)5 minutes
Cron-only orchestration works until you have 30 jobs. Systemd gives you logging, restart policies, and dependency ordering for free.
70 rules on canary. 119 on production. That growth is the lesson. Start restrictive.
Human-in-the-loop approval for destructive commands prevents the mistakes that erode trust in the system.
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.
6 minutes
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.
14 sections covering every step from Tailscale account creation to troubleshooting.
Each section: prerequisites, numbered steps, expected output, common failure modes.
github.com/mikeengleai/openclaw-frameworkclaude-workspaces (cw script)compaction-prompt.mdskills/system-map/skills/system-upgrade/agents/ sample configs (redacted)skills/agent-browser/cron/ templatesApache 2.0 license. Clone it, fork it, make it yours.
5 minutes
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.
Slack works for this setup because per-channel separation makes it obvious which agent handles which domain. But Slack is not the only option.
Best for multi-agent setups. One channel per domain. Team-accessible. 33 channels on production.
Single-agent, single-user. Free. Fast setup. Plugin already enabled on canary.
If your team already lives in WhatsApp. Requires Meta Business API. Plugin enabled on canary.
Reach out on Slack or email for follow-up.
Companion guide and GitHub repo links shared in the chat.