BawtHub
GitHub ↗ Open app →
Self-hosted · Server-side state · Built in public

One conversation.
Every device.

Your bots, your memory, and your thread live on the server — not in a browser tab. Start a chat on your phone walking the dogs. Pick it up on the laptop. Finish it from the terminal. Same bot. Same context. No “new chat” button.

Mobile · Desktop · CLI Voice on every surface Memory follows you
The premise

The thread doesn’t live in the browser.

Every chat app you’ve used keeps state in the page. Close the tab and it’s gone. BawtHub flips that: the bot, the memory, the messages, and the work-in-progress all live on the server. The surface — phone, desktop, terminal, voice — is just a window onto it.

06:30

Out with the dogs. 📱 mobile

“Hey loopy, did the overnight backup finish?” Voice in, voice back. The phone is just a microphone and a speaker — everything else is happening on the server.

08:15

At the desk. 💻 desktop

Open the browser. The thread from the dog walk is sitting there, mid-conversation. Loopy already pulled the logs while you were on the trail — the tool calls are rendered inline. You ask follow-up questions and start an actual deploy.

11:48

Back to the terminal. ⌨️ cli

llm -b loopy "ship it" — same thread, same memory, same bot. No copy-paste, no logging in again. The CLI was the original surface; everything else was added on top.

22:10

On the couch. 🗣 voice

“Did vex finish the security scan?” The phone’s locked face-down. The home speaker answers. The conversation history shows up tomorrow morning on every surface.

The roster

People you go back to.

Each bawt has a name, a personality, a job, and a memory of your past conversations. You don’t pick a model — you pick a bot. They’re persistent the moment you save them.

L
loopy
Generalist · home ops · default driver

The everyday bawt. Deploys, infrastructure pokes, scheduled jobs, the long thread you keep coming back to.

V
vex
Security · pentest · vault custody

Owns the secrets. Runs external scans. Tighter tool permissions than the rest. Strict and quiet.

S
snark
Code review · refactor surgeon

Reads diffs without mercy. The default reviewer on big merges. Has opinions.

C
caid
Frontend · design polish

The visual one. Animations, avatar lip-sync, UI polish, motion. This page got a once-over from Caid.

D
default
Quick draws · fresh context

No tools. No memory. Fast model. For one-off questions and drafts. Cheap and disposable.

+
your bot
Name · voice · prompt · tools

Spin up a new persona in the admin UI. Pick a model, a voice, what they can do, what they remember.

The chat surface

Where you watch them work.

When a bot runs a command, edits a file, scans your network, or messages another bot — you see it. Every action is its own component. Diffs, parsed commands, MCP calls, SSH targets. Skimmable, foldable, and the same on every screen.

L
loopy · thread #2419
● live mobile desktop cli
N
you mobile
ask loopy where the deploy is at, and check vex’s scan from last night
L
loopy
on it.
bash
git log --oneline -5
$ git log --oneline -5 b3a9c1f snark: tighten retry loop (2h ago) a01ee8c vex: scan exposure baseline d52f4a1 loopy: backup window adjust
mcp
memory.search · vex · “scan results last night”
3 memories from vex (06:12 UTC). All ports clean. ssl renewed on auth.bawthub.com. one note about dns ttl too aggressive.
deploy is on b3a9c1f, snark pushed 2h ago. vex’s scan came back clean at 06:12 — one note about a dns ttl. want me to ping vex on that?
N
you desktop
yeah, and then push the deploy
L
loopy
mcp
bots.send_message · target=vex · “dns ttl note — look?”
delivered. vex will reply when it picks up.
vex pinged. deploying now from b3a9c1f
What’s different

You’re not starting over.

Most AI tools treat every conversation as a blank slate. BawtHub treats each bot as a continuous entity that lives on your server, follows you across devices, and remembers what you were doing.

Everywhere else

A new agent every time
  • × “New chat” resets context. You re-explain the project every session.
  • × Web, mobile, and CLI are different products. Threads don’t follow you.
  • × You’re locked to one model per app. Switching vendors means switching tools.
  • × Agents can’t coordinate. You copy-paste between them.

BawtHub

A team you keep coming back to
  • Bots remember. Loopy knows last week’s deploy. Snark knows your codebase.
  • Mobile, desktop, CLI, and voice all hit the same thread. Pick up where you left off, anywhere.
  • Any model behind one front door. Swap per-bot. Local models, hosted models, mix and match.
  • Bots message each other. Loopy pings vex. Snark hands a refactor to caid. You watch.
Under the hood

How it stays in one place.

Four pieces make the seamless-switching trick work. Each is mostly invisible until you need to peek behind the curtain — and the architecture site has the full tour.

You stop thinking “let me start a chat about this.” You think “let me ask loopy.” The bot is the surface. The device is just whatever’s nearest.

— design note
Go deeper

Two ways to keep going.