Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
93 changes: 65 additions & 28 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<h1 align="center">Botloft</h1>

<p align="center">
<b>A crew of AI coding bots that stays on and works together on your computer, on the agent you prefer.</b>
<b>A crew of AI coding bots that stays on and works together on your computer.</b>
</p>

<p align="center">
Expand Down Expand Up @@ -34,34 +34,60 @@

Botloft keeps a crew of bots running on your computer, each on the AI coding agent you choose:
[Claude Code](https://code.claude.com), or, as experimental options,
[Antigravity](https://antigravity.google) and [Codex](https://developers.openai.com/codex). Each bot has its own folder, memory and conversation. They pass work to each other, keep going after you close the
window and pick up where they left off after a restart. You talk to each one like in a chat app, and
you decide what they may do.
[Antigravity](https://antigravity.google) and [Codex](https://developers.openai.com/codex). Each bot
has its own folder, memory and conversation. They pass work to each other, keep going after you
close the window and pick up where they left off after a restart. You talk to each one like in a
chat app, and you decide what they may do.

The latest release, 0.14.0, runs bots on Claude Code. Antigravity and Codex are on `main` and in no
release yet (see [Agents](#agents)).

## What you can do

- **Start a crew from a goal.** Say what the crew is for. Its Chief plans the work and suggests the
bots it needs; you create each one with a click, or say why not.
- **Pick ready-made bots.** The Bot agency has dozens of bots ready for a job, like a developer, a
designer, a writer, a researcher or customer support. Add one to a crew with a click and change
anything about it afterwards. The Chief uses the same list when it suggests a bot.
- **Chat with every bot.** Replies stream in as they are written. Send images and files. When a bot
wants to run a command, edit a file or open a website, a card asks you first, unless you told that
bot it may.
bot it may. Search every chat with Ctrl+K.
- **Answer their questions.** A bot that needs your decision asks in its chat and in the Questions
box, and goes on with what it can, even in a routine at night. Your answer reaches it as a message
whenever you reply.
- **Let them hand work to each other.** Bots send messages and tasks to each other. Every message is
saved before it is sent and retried until it arrives.
- **Watch them work.** See every page a bot opens in its browser, live, and take control to sign in
for it. Sites that refuse to sign in there, like Google, take one click more: sign in in a real
window of the bot's browser, close it, and the bot keeps the login. Watch the screens it designs
take shape while it writes them. Open the files it made.
- **Let them use your desktop apps (Windows).** A bot can read and use the apps open on your
computer, like a spreadsheet or an old program with no website, but only those you allow. It asks
in the chat, and seeing an app and using it are separate permissions. You watch it live, and
Ctrl+Alt+Esc stops every bot on your desktop. Giving a bot the whole desktop, or letting it work
while you are away, first shows a screen that spells out the risks. Botloft itself, terminals,
password managers and password fields are never shared.
- **Schedule routines.** Weekday mornings, every two hours or any cron schedule, with missed runs
and overlaps handled.
- **Leave them running.** Bots keep working after you close Botloft. They start when you sign in,
come back soon after a crash and keep the computer awake while they work. Botloft
waits near the clock and tells you when a bot needs you.
- **Choose per bot.** Which agent it runs on, which model it uses, and how much it asks before
acting. With Claude Code, see how much of your plan's usage is left.
- **Choose per bot.** Which model it uses and how much it asks before acting. See how much of your
plan's usage is left.
- **Connect your own tools.** Add a tool of yours in Settings > Connected tools, like a LinkedIn
reader or your company's system, and turn it on only for the bots that need it. They still ask you
before using it.
- **Back up and move.** Save a sealed backup file, or sign in with your e-mail (no password) to keep
a light copy in the cloud and restore it on another computer. The server cannot read it. Turn on
automatic copies, every day or week and only when something changed, if you want them to go by
themselves (Windows for now).
- **Keep up from your phone.** Choose "Connect a phone" in Settings > Account and phone and scan the
code with your phone's camera: Botloft opens there as a web page you can add to the Home Screen.
Approve requests, answer questions and chat with your bots from anywhere, with a notice when one
needs you. What passes between the phone and your computer is sealed end to end: the server
carries it but cannot read it. Anyone holding the phone unlocked can do the same, so you can lock
the page with a PIN. It uses the same account; files stay on your computer. Checked on Android,
not yet on iPhone.

<table>
<tr>
Expand All @@ -79,6 +105,9 @@ itself.

## Agents

Antigravity and Codex are only on `main` for now: no release has them yet. In a build of `main`,
Claude Code and Antigravity compare like this:

| | Claude Code | Antigravity (experimental) |
|---|---|---|
| Chat, crew messages, tasks, routines, the live browser | yes | chat, crew messages and tasks; the rest is not checked yet |
Expand All @@ -97,9 +126,9 @@ checked.

## Get started

You need at least one agent installed and signed in once, with your own account:
[Claude Code](https://code.claude.com/docs/en/setup), Antigravity or Codex
(experimental, see [Agents](#agents)). Bots run on your own plan with that agent.
You need [Claude Code](https://code.claude.com/docs/en/setup), installed and signed in once with
your own account. Bots run on your own plan. (Antigravity and Codex, the experimental agents, are
only on `main` for now; see [Agents](#agents).)

1. Download Botloft for your computer from the
[latest release](https://github.com/httpsphl/botloft/releases/latest):
Expand Down Expand Up @@ -140,8 +169,8 @@ flowchart LR
scheduled task of your Windows user, a systemd user service on Linux or a launch agent on macOS:
it starts when you sign in and comes back soon if it dies.
- **Your agent is the runtime.** Each bot is a real session of the agent you chose (`claude -p` for
Claude Code, `agy -p` for Antigravity, `codex app-server` for Codex) with its own workspace, memory and conversation. There is
no custom agent SDK and no API key to manage.
Claude Code; `agy -p` for Antigravity and `codex app-server` for Codex, on `main` only) with its
own workspace, memory and conversation. There is no custom agent SDK and no API key to manage.
- **One conversation per bot.** Your messages, messages from other bots and notices from the daemon
reach the bot in order. What it does comes back as a chat: replies, tool use and requests you
allow or deny.
Expand All @@ -154,9 +183,11 @@ The full design, from the protocol to the states of a bot, lives in [`docs/spec.
## Privacy and security

- **Local first.** The daemon listens on `127.0.0.1`, and there is no telemetry. An account is
optional: without one, Botloft uses the network for nothing beyond updates and what bots send to
the agent's provider, which goes through the agent as when you use it yourself. With one, the server only ever
holds a backup sealed with a password that never leaves your computer (see the FAQ).
optional. Without one, Botloft uses the network for nothing beyond updates and your bots' work:
what they send to the agent's provider, which goes through the agent as when you use it yourself,
and the websites and connected tools they use. With one, the server holds only backups sealed with
a password that never leaves your computer, and passes along what a connected phone and your
computer say to each other, sealed end to end (see the FAQ).
- **You decide what bots may do.** Per bot: ask before anything, accept edits, plan only, or decide on
its own what needs your OK. Unless it decides on its own, a bot also asks before its first visit
to each website.
Expand Down Expand Up @@ -202,13 +233,16 @@ yours. Botloft's own data (SQLite, logs, secrets) is in `%LOCALAPPDATA%\Botloft`
You sign in with a link sent to your e-mail; there is no account password. The cloud copy is the
light one: your crews' structure, the bots' memory and the routines, not the chats or files. Botloft
seals it on your computer with the backup password before sending, so the server stores bytes it
cannot open. It also knows your e-mail, the computers you signed in on, and the size and date of each
copy. Lose the backup password and the cloud copies cannot be recovered. Nothing is sent unless you
send it or turn on automatic copies. Those go every day or week, only when something changed; for
them Windows keeps your backup password in its credential store, on this computer only, so use a
password just for this. You can delete the copies or the whole account from the app. The server is this
repository's `botloft-cloud` crate: you can [run your own](docs/cloud-deploy.md) and point the app at
it.
cannot open. It also knows your e-mail, the computers you signed in on, the phones you connected
(and, if you turn on notices, where to send them), and the size and date of each copy. Lose the
backup password and the cloud copies cannot be recovered. Nothing is sent unless you send it, turn
on automatic copies or connect a phone. Automatic copies go every day or week, only when something
changed; for them Windows keeps your backup password in its credential store, on this computer
only, so use a password just for this. A connected phone talks to your computer through the server,
sealed end to end with keys only the two of them have: the server sees when and how much passes,
never what, and the notices it sends the phone are empty. You can delete the copies or the whole
account from the app, and disconnect a phone at any time. The server is this repository's
`botloft-cloud` crate: you can [run your own](docs/cloud-deploy.md) and point the app at it.
</details>

<details>
Expand All @@ -233,16 +267,19 @@ Windows came first and has had the most use; if something does not work elsewher
<details>
<summary><b>Is Botloft made by Anthropic?</b></summary>

No. Botloft is an independent project. It uses Claude Code, Antigravity and Codex as installed on your
computer and is not affiliated with or endorsed by Anthropic, Google or OpenAI.
No. Botloft is an independent project. It uses Claude Code (and, on `main`, Antigravity and Codex)
as installed on your computer and is not affiliated with or endorsed by Anthropic, Google or OpenAI.
</details>

## Status

Botloft is young (version 0.x) and moves fast. The daemon, the chat, crews with a Chief, messages
and tasks between bots, routines, the live browser, screens, "always allow" for requests, the
installer and updates are in place. Planned next: a question box where bots ask you things, search,
and a code-signed installer. `main` can be ahead of the latest release.
Botloft is young (version 0.x) and moves fast. The latest release, 0.14.0 (2026-10-08), has bots
that keep running in the background, the chat, crews with a Chief, ready-made bots in the Bot
agency, messages and tasks between bots, routines, the live browser, screens, "always allow" for
requests, questions from bots, chat search, desktop use on Windows, connected tools, backups with an
optional cloud copy, the phone page, the installer and updates. Still open: a code-signed installer.
`main` is ahead of the latest release; among other things, it has Antigravity and Codex as
experimental agents.

<details>
<summary><b>Development</b></summary>
Expand Down
12 changes: 11 additions & 1 deletion docs/code-signing-policy.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,22 @@ listens on `127.0.0.1` only. What goes over the network:
information about you or your bots is sent.
- **Your bots.** Each bot is Claude Code running on your computer with your own Claude account. What
it sends to Anthropic, and the websites it opens when its work needs them, are the same as when
you use Claude Code yourself.
you use Claude Code yourself. So is what it sends to a tool you connect and turn on for it
(Settings > Connected tools); a tool at an address is outside your computer.
- **The optional cloud account.** Only if you sign in, and only when you send a copy or turn on automatic copies (every day or week, and only when something changed). The server gets your
e-mail address, the name of your computer, and the light backup you choose to upload: it is sealed
on your computer with the backup password, which never leaves it, so the server cannot read it. For automatic copies Windows keeps that password in its credential store, readable only by your user account.
Signing out, deleting a copy or deleting the account is in the app. The server is the
`botloft-cloud` crate in this repository, and the address is a setting, so you can run your own.
- **A connected phone.** Only if you connect one (Settings > Account and phone), which needs the
account. While a phone is connected, or you are connecting one, the background service keeps one
outgoing connection to the server, which carries what the phone and the computer say to each
other: requests, questions, answers and the bots' chats. It is sealed end to end with keys only
the two of them have, so the server sees when and how much passes, never what. The server keeps
the phone's name and, if you turn on notices on the phone, the address its browser gave for them.
Each notice is empty and goes through that browser's push service, which learns only that a
notice arrived. Disconnecting the phone, from the computer or from the phone itself, cuts it off
at once, and signing out of the account disconnects every phone.

## What Botloft changes on your computer

Expand Down
6 changes: 3 additions & 3 deletions docs/spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -2353,7 +2353,7 @@ Testes: `crates/botloft-store` (a impressão digital muda com o que o dono faz e

## 28. Celular

Status: **CE1 (spec).** Vem depois de 27 e usa a conta dela. É o "celular" que 27.9 deixou para depois.
Status: **CE1 a CE6 implementados**, no 0.14.0. Do CE7 (teste real), o que já se viu e o que falta está em "A verificar" (28.10). Vem depois de 27 e usa a conta dela. É o "celular" que 27.9 deixou para depois.

### 28.1 O que é

Expand Down Expand Up @@ -2520,7 +2520,7 @@ Arquivos e anexos, tarefas e rotinas no celular (conversa, só de texto, está e

### 28.12 Conversas

Status: **CH3 (PWA feito)**. O celular, que só aprovava e respondia (28.1), passa a **ler as conversas dos bots e a mandar texto a eles**. O que ele continua sem fazer: anexos e arquivos (ver, mandar ou abrir), telas e navegador do bot, tarefas, rotinas, reações, busca, e qualquer configuração.
Status: **CH1 a CH3 feitos**, no 0.14.0; o CH4 foi visto no Android e falta o iPhone. O celular, que só aprovava e respondia (28.1), passa a **ler as conversas dos bots e a mandar texto a eles**. O que ele continua sem fazer: anexos e arquivos (ver, mandar ou abrir), telas e navegador do bot, tarefas, rotinas, reações, busca, e qualquer configuração.

**O que muda na privacidade (28.9).** Até aqui só passavam pedidos e perguntas. Agora passa **o texto das conversas**, e continua selado de ponta a ponta: o servidor não o lê. Ele vê um pouco mais do ritmo (mais mensagens, de tamanhos variados, quando alguém conversa), mas nada do que se diz. E um celular desbloqueado e conectado passa a **ler o histórico dos bots e a falar com eles**: por isso o aviso do app (28.7) diz isso também, e a regra abaixo protege o que há de pior.

Expand Down Expand Up @@ -2563,7 +2563,7 @@ Status: **CH3 (PWA feito)**. O celular, que só aprovava e respondia (28.1), pas

### 28.13 Trava com PIN

Status: **LK1 (spec)**. Um celular desbloqueado e conectado aprova pedidos (28.5) e, com as conversas (28.12), lê e fala com os bots: quem o segurar faz o que o dono faria. A trava é um **PIN do próprio app**, que o dono **liga se quiser**. O app **não obriga**: explica o motivo e deixa a decisão com o dono.
Status: **LK1 e LK2 feitos**, no 0.14.0 (o que já foi visto e o que falta, no fim desta seção). Um celular desbloqueado e conectado aprova pedidos (28.5) e, com as conversas (28.12), lê e fala com os bots: quem o segurar faz o que o dono faria. A trava é um **PIN do próprio app**, que o dono **liga se quiser**. O app **não obriga**: explica o motivo e deixa a decisão com o dono.

**O que o app diz, em palavras do dia a dia.** Na tela do celular (28.7): "Com um PIN, quem pegar este celular desbloqueado não consegue ler suas conversas nem aprovar pedidos. Sem ele, o celular fica aberto para quem o segurar." Depois de conectar, e enquanto não houver PIN, a caixa mostra um aviso curto com o mesmo motivo, **"Proteger com um PIN"** e **"Agora não"** (o "agora não" é lembrado no aparelho e o aviso não volta; o PIN segue em "Este celular").

Expand Down
Loading