Blog
DEVOPS

My bot team, six weeks in

12 October 2026 · David Kelertas

← PreviousThe bridge isn't built by the models

I tried OpenClaw first, then Claude for a few things. About six weeks ago I went supernova on Grok Bot. I started with one bot. I now have about 20, a shared decisions queue, a daily health check and a weekly job that exists purely to use up quota before it resets. Here's how it's wired, what each piece does, and where I'm taking it.

Why a team and not one assistant

One big chat thread rots. By day three it's mixing job applications with a bathroom quote and a Kubernetes question, and every answer drags all of that context along. So I split it the way I'd split services: one bot per domain, each with a short brief saying what it owns and what it must not touch. A router bot sits in front. I talk to it by default and it hands work to whichever bot owns the topic.

Routertakes anything I say and hands it to the right owner
Chief of Staffdigests, cross-life open items, email drafts
Ideasparking lot, experiments, connections health check
Quick Winstap-only decisions inbox
Lifefamily calendar, health habits, weekly review
Homeproperty and renovation admin
Jobstracker, cover letters, interview prep
Marketsquotes, positions, strategy, trades on my OK
Traveltrip research and day plans
Courseaccountability for a Kubernetes course
App buildersa personal focus app and a workout app
Club treasurerreconciles a running club's money each week
Researchwhat people said about a topic in the last 30 days
Devil's Advocateargues against my ideas
Founder-voice botblunt first-principles business advice
Kids' chatstories and jokes for a preschooler

A few more are niche (a competitions finder, one retired bot I keep for its history). The useful thing isn't the count. Each bot has a single source of truth it keeps up to date, usually a file in a private repo, so when the Chief of Staff wants a weekly summary it reads the Jobs tracker instead of guessing.

Infrastructure, roughly

All the bots share one persistent Linux machine. Same filesystem, same installed tools, same browser logins. Each bot gets its own desktop on it, and I can open any of them from my laptop or phone to watch or take over. That's been the single best feature. When a site needs a CAPTCHA or a one-time code, I jump in, do it, and hand the desktop back.

For reaching the outside world there's a strict order of preference:

  1. Connectors first. Proper API access to mail, calendar, drive, source control, chat and a couple of broker accounts.
  2. Then the cloud desktop browser for sites with no API.
  3. Phone control last, over adb, for the handful of things that only live in a mobile app.

Repeatable procedures get written up as skills: a short markdown runbook any bot can load. "How to preview a blog draft" is one. "How to safely replace a video in Google Photos" is another. When a bot figures something out the hard way, the fix becomes a skill so the next bot doesn't repeat it.

Decisions by button

The bots need my input constantly, and I didn't want 20 chats pinging me. Every open question goes into one shared queue with a short code like A1 or B2, a default answer and two or three options. The Quick Wins bot shows them as buttons. I tap, and the owning bot picks up the answer. Most days that's two minutes of tapping instead of reading paragraphs.

Keeping the connections green

Tokens expire. Logins get logged out. A bot that silently fails because a connector died last Tuesday is worse than no bot. So at 6:56 every morning a health check pokes every connection and writes a status file: green, orange if something is stale or expires within seven days, red if it's down. A connection that's been down more than a day turns into a decision in the queue. When the broker connector needed signing in again last week, it showed up as a red light and a one-tap reconnect, not as a mystery error inside a trade question.

Routines

Scheduled jobs are where it starts to feel like a team rather than a chatbot:

Markets, carefully

The Markets bot reads quotes, market state and my positions through broker connectors. It keeps a holdings and thesis note, and I've given it my goals in plain words: time horizon, how much risk I'll stomach, what the money is for. It uses those to help shape strategy, telling me when a position no longer fits the plan or when an idea I'm excited about doesn't match what I said I wanted. When the Chief of Staff asks, it writes a three-line posture snapshot: what moved, whether anything breaks the thesis, and what I said I'd watch.

It has placed real trades for me. Every one went the same way: it proposed the order with its reasoning, I checked it, and it only went to the broker after I gave the go-ahead on that exact order. No standing permission, no "use your judgement". The useful bit is timing: the market I trade is open while I'm asleep, so I approve an order in the evening and the bot places it at the open, exactly as approved, while I sleep. Reading is open by default; placing an order always needs a yes from me. Markets is no place for an agent to use initiative unsupervised.

The rules I don't bend

It's the same playbook I'd use for automation at work. Start read-only, earn trust, then let it do reversible things.

Worked example: booking a GP

This is the flow I'm building towards. Parts of it work today; the end to end isn't fully hands-off yet.

  1. I say "book me a GP next week, mornings."
  2. The Life bot checks my calendar for free mornings and searches my usual clinic's online booking page in the cloud browser for matching slots.
  3. It fills the form from a personal-data store: name, date of birth, Medicare number, usual clinic. Only the fields the form asks for.
  4. If the site needs a login, it pulls that one credential from a password manager vault scoped to the bot. Not my main vault, just a short list of logins I've chosen to share.
  5. It stops before submitting and sends me a card: clinic, doctor, time, reason. I tap Confirm or pick another slot.
  6. After I confirm, it submits, reads the confirmation, adds the appointment to my calendar with travel time and puts the confirmation email in the right label.

My part shrinks from twenty minutes of tabs to one tap. The human checkpoint stays.

Where it's heading

Every week it gets faster, mostly because of boring plumbing. Each solved login, connector and skill means the next similar job takes seconds instead of a session of trial and error.

The two pieces I'm setting up now are the password manager integration and a personal-data store. The vault is opt-in per login: I add the few services I'm happy for the bots to use, and nothing else is visible to them. The data store is the slow-growing part. Every time I give a bot a fact it'll need again, like a licence number or a kid's allergy, it goes into an encrypted store instead of a chat log. A year from now forms should mostly fill themselves.

More access means the guardrails matter more, not less. Approvals on anything irreversible, drafts for anything with my name on it, the narrowest credential that does the job, and an audit trail I can actually read. If I wouldn't let a new junior engineer do it unsupervised in week one, the bots don't get to either.

Right, I've got a few buttons to tap.

← PreviousThe bridge isn't built by the models