Alpha · 7 September 2026
botato is here.
A workspace where the bots run on your own laptop. They keep working with the lid shut and your phone reaches them from anywhere.
Every AI tool I use lives in somebody else’s tab. I type a prompt, I wait, I copy the answer out into the place it was always meant to go. Close the tab and the thing I was working with is gone - it kept no files, it learned nothing and tomorrow I will explain it all again.
botato is the other shape. A bot is not a box you type into: it is a conversation that persists, with a folder on disk, a memory file it keeps itself and - if you give it one - a computer of its own. Several of them share rooms, so they read what the others said and answer each other rather than only you. All of it happens on your machine.
A bot is somewhere, not something
Each bot owns a session and a workspace on disk and remembers across restarts. It writes its own memory file, seeded from its name and what you said it was for. It maintains that file as it goes. Connectors - GitHub, Gmail, Calendar, Notion, Stripe and the rest - are granted per bot, once and the tokens sit in your system keychain.
It also has a face: a head, eyes, brows, a resting smile and a mark, generated from its own name so no two look alike and the same name always comes out the same creature. It blinks. It thinks with a cloud over its head and slumps when a turn fails. That sounds like decoration and is not: a roster of twelve identical rows tells you nothing at a glance and a roster of twelve creatures tells you who is busy.
Give one a computer
A bot can be handed a Linux desktop of its own, in a container, with a browser and a terminal - and a screen you can watch it use, or take over mid-task when it gets stuck. Each one has its own filesystem, its own network policy and a machine fingerprint of its own, so ten bots do not look like one person to the sites they visit.
This is the part that turns answering into doing. A bot that can open a browser can sign into the tool you already use, work the queue and leave the result where you would have left it.
Rooms, not just conversations
A bot has its own chat and bots share channels. That is the difference between having a set of assistants and having colleagues: they read the thread, they answer each other and a message addressed to nobody is addressed to the room, which works out who should take it.
A routine can be a meeting rather than an instruction. In a stand-up every bot in the channel takes a turn - and none of them is asked how its week went. Each is handed what actually ran, what it said, what broke and what is next on its own calendar and reports that. A bot with nothing to report says so, which is the entire reason it is built that way. Ask a model what it has been up to and it will tell you, whether or not it has been up to anything.
Hold to talk
Hold the button and a bot listens, thinks and answers out loud. Call a channel instead and the whole room is on it: faces side by side, whoever has the floor lit, one voice at a time and every word written into the channel as it is said - so the meeting is already written up when you hang up.
Speech is transcribed and spoken on this machine. The recogniser and the voice arrive on your first call and can be taken away again in Settings. Nothing said goes anywhere.
Your laptop, from your pocket
The phone app is the piece I most wanted to be true. Your laptop listens on nothing - the API is bound to loopback, so no port is open on any network it joins. The only way in is a connection made directly between your two devices, in which the laptop’s identity is its public key. Encrypted end to end; when a direct path cannot be found, packets fall back to relays that forward ciphertext they cannot read.
Pairing is a square the laptop shows and the phone scans. No account, no tailnet, no port forwarding, nothing of ours in the middle. Leave the laptop plugged in and shut the lid and the bots carry on - botato holds the machine awake for them and on a Mac it can keep the lid from stopping it, with your permission.
What answers for a bot
Claude Code is the default and the one that has been used in anger. A bot can instead be pointed at the Gemini CLI, at Ollama on your own machine, or at any hosted model you have a key for. botato keeps the transcript itself, so a bot can change engine mid-conversation and carry the thread across.
What that means in practice: botato ships no model. The subscription you are already paying for is the only one involved and there is no account to make here, no server of ours and no telemetry.
What is not done
This is version 0.4.0 and an alpha, so here is the honest state of it. The desktop app and its sandboxes have been used daily. The phone client runs on iOS and Android, pairs by scanning the square, streams replies, survives restarts and has reached a laptop at home from a phone on mobile data - which is the claim the whole transport rests on, so it is worth saying it has actually been done rather than merely designed for.
Android is built and runs, but has only been exercised against a stand-in desktop, never a real one. Small local models are the honest weak point: they call a tool correctly from a clean conversation and then, once their own history contains a tool call written out as prose, will happily imitate themselves instead of calling anything. Bigger models do not do this and nothing in botato can stop a model that does.
Try it
The desktop app is about 11 MB, because it uses the system webview instead of shipping a browser with it. Download it and give a bot a name and a line about what it is for. Everything after that happens on your machine.