OPENCLAW

A self-hosted AI team I can reach from my phone, with guardrails built into how it’s wired

Architect & OperatorOpenClaw / Chat-ops / Docker / Local LLMs2026 — NOW

What It Is

OpenClaw is an agent harness, a framework for running AI agents. I run it on my own hardware as a small team of AI agents, each with its own job. I message the team from a chat app with a goal. The lead agent breaks it into tasks, hands them to specialists, and the results come back to the same chat. Overnight batches end in a morning digest.

The interesting part is not that the agents can act. It’s that they can act without being handed the keys to everything. Credentials sit in the gateway, out of the model’s view. The agents that run code do it inside locked-down sandboxes. Anything that publishes, sends or spends waits in an approval queue for me.

Illustration: seven stone pieces arranged around a central piece, beside a keyed metal block and three mesh-covered compartments in a fitted tray.
ONE LEAD AGENT, SIX SPECIALISTS, CREDENTIALS HELD SEPARATELY, WORK IN SEALED COMPARTMENTS

The Team

Seven core agents, each with a written role and only the tools that role needs. The reviewers can read and write notes but cannot run commands. The director starts the specialists, and the maker can call in the reviewer. Each agent loads the skill bundles for the task in front of it. There are 17 hand-built bundles covering things like content rules, image workflows, marketplace listings and cost tracking.

Core Agents
DIRECTORTakes the goal, breaks it into tasks, and starts the right specialist for each one.
MAKERCreative work: briefs, social posts, content drafts.
BUILDERTechnical work: code, audio, video, image workflows.
SELLERSales research, marketplace listings, lead lists. Drafts only.
OPSInfrastructure health, cost tracking, the status dashboard.
WIGGUMThe hostile reviewer. Checks quality, brand voice and policy before anything moves on.
SKILL REVIEWERVets new skill bundles before any agent is allowed to load them.

How It’s Wired

The gateway holds the keys. The chat bot token, the gateway’s own token and the model-provider keys live in a team secret store. The config points at them by reference, and the gateway fills them in. A key in the store never becomes part of what the model reads, so no prompt, not even a hostile web page, can talk the model into leaking it.

Sandboxes for the hands. The agents that execute code run every command in their own tightly locked-down container, isolated from the host and from each other. I proved it with a real run: the agent’s command ran as an unprivileged sandbox user inside a throwaway container, not on the host.

Approvals for anything risky. Publishing, sending a message to someone outside, or spending money goes into an approval queue instead of happening. The agents draft and I decide.

Local first. By default the agents run on local open-weights models served from my own hardware. That costs nothing per call and keeps the data at home. Hosted models are a fallback, not a dependency.

The safest credential is the one the model never sees. Put the keys in the gateway, the commands in a sandbox, and the risky decisions in front of a human.

Does It Work?

I don’t trust “the service is running.” Before calling the team ready, I gave 11 agents a real task each and scored the answers. 10 passed and 1 was partial, with an average quality of 8.5 out of 10. The hostile reviewer scored 10 out of 10 at catching a bad claim. The partial was a sales agent that correctly started a helper agent, but the helper’s results didn’t come back within a single turn. That one is logged, not hidden.

I also keep a plain list of what isn’t finished. The system was designed as a full virtual company, with a CEO layer over CTO, CMO, CIO, CSO and CRO roles talking over message streams. At the last full audit only the CEO and CMO layers did real work; the rest were stubs that acknowledge and log. That line stays on the page until it’s untrue.

What It Taught Me

Running agents day after day is mostly operations. Three real incidents, and the rule each one left behind:

L-01
SYMPTOMA burst of billing errors hit every agent at once, at the same moment, more than once.
ROOT CAUSEIdle worker agents were running around the clock with no throttle, and a scheduled heartbeat fired a turn on every agent at the same moment. When the hosted model provider ran out of credit, all of them failed together.
RULE NOWIdle agents get switched off, not left spinning. The heartbeat was spaced out, and a billing error now falls back to a local model instead of failing.
L-02
SYMPTOMAfter a routine upgrade the health check still said 200 OK, but configuration changes were quietly being ignored.
ROOT CAUSEThe package was upgraded underneath a process that was still running. The old process later tried to load code files by names that the upgrade had already replaced, so config reloads failed in the background.
RULE NOW“Healthy” has to mean the thing you care about works, not that a port answers. Upgrades now follow snapshot, dry run, upgrade, restart, and a check of the real behavior.
L-03
SYMPTOMIn a smoke test, the lead agent could not answer at all.
ROOT CAUSEA session lock left behind by an earlier run was blocking it. Nothing cleared the lock automatically.
RULE NOWEvery agent gets tested with a real prompt and a scored answer, not just a “the service is running” check. Finding the stuck lock was the point of running the test.

Built is not armed. New agent work ships switched off. It runs in draft or shadow mode, I look at real output, and only then does it go live. Upgrades follow the same idea: snapshot first, dry run, upgrade, then check real behavior. On the last major upgrade, that check caught a new rule. With several agents behind one chat bot, the bot account now has to name the agent that owns it. The channel stayed down until I added that routing, and the check is how I knew.

Stack

OpenClawMulti-agent orchestrationChat-ops botsRedisDocker sandboxesLocal open-weights modelsKVM virtualizationsystemd

Result

A working AI team that lives on hardware I own, answers from my phone, and runs mostly on local models. The guardrails are part of the structure, not a prompt asking the model to behave: credentials in the gateway, commands in sandboxes, risky actions behind an approval.

Measured: 7 core agents, 17 skill bundles, and a smoke test with 10 of 11 passing at 8.5/10 average quality. Revenue from the agents and hours saved are UNMEASURED, so I don’t quote them.

Harnessing AI isn’t about the smartest model. It’s about deciding what the model is allowed to touch, and proving the answer holds.