+
+
+
+
+
+
+Botloft keeps a crew of [Claude Code](https://code.claude.com) bots running on your computer. 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.
+
+## 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.
+- **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.
+- **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. Watch the screens it designs take shape while it writes them. Open the files it made.
+- **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 with Windows, come
+ back within a minute if something crashes and keep the PC awake while they work. Botloft waits
+ near the clock and tells you when a bot needs you.
+- **Choose per bot.** How much it asks before acting, and which Claude model it uses. See how much
+ of your plan's usage is left.
+
+
+
+
Chat and live browser. Scout asks before using a new site, and you watch it browse.
+
Screens. Designer's pages take shape while it writes them.
+
+
+
A Chief for each crew. It suggests the bots the work needs.
+
Routines. Work that runs on a schedule, with the last result at a glance.
+
+
+
+Botloft speaks English, Portuguese (Brazil) and Spanish, follows your light or dark theme and updates
+itself.
+
+## Get started
+
+You need Windows 10 or 11 (64-bit) and [Claude Code](https://code.claude.com/docs/en/setup),
+installed and signed in once with your Claude account. Bots run on your own Claude plan.
+
+1. Download `Botloft__x64-setup.exe` from the
+ [latest release](https://github.com/httpsphl/botloft/releases/latest) and run it. It installs for
+ your Windows user only, with no administrator prompt. The installer is not code-signed yet, so
+ Windows SmartScreen may ask you to confirm ("More info", then "Run anyway").
+2. Open Botloft. It sets itself up; there is nothing to configure.
+3. Create your first crew and tell it what it is for.
+
+When a new version is out, an **Update available** button shows in the title bar. Uninstalling
+(Settings > Apps) removes the app and stops Botloft from running in the background. Your bots and
+their files stay in `%LOCALAPPDATA%\Botloft` and `%USERPROFILE%\Botloft`.
-Always-on Claude Code crews for Windows.
+## How it works
-Botloft keeps groups of persistent Claude Code bots ("crews") running on your machine and lets
-them hand work to each other. A Rust daemon, `botloftd`, runs each bot as headless Claude Code,
-stores everything in SQLite and delivers messages between bots durably. A Tauri + React desktop
-app shows each bot as a chat: you talk to it, send it images and files, and approve what it asks
-to do.
+```mermaid
+flowchart LR
+ app["Botloft app Tauri + React"] -- "JSON-RPC over WebSocket 127.0.0.1 only" --> daemon["botloftd Rust daemon"]
+ daemon --> db[("SQLite")]
+ daemon -- "stdin and stdout stream-json" --> bots["One claude -p per bot"]
+ bots -- "Botloft's MCP tools messages, tasks, requests" --> daemon
+```
-> **Status: pre-alpha.** Milestones M0 to M4.1 are done: the daemon, the chat, messages and
-> tasks between bots. M5 (distribution) is in progress. The design lives in
-> [`docs/spec.md`](docs/spec.md).
+- **The daemon is the source of truth.** Closing the app never stops a bot. `botloftd` runs as a
+ scheduled task of your Windows user: it starts when you sign in and comes back within a minute if
+ it dies.
+- **Claude Code is the runtime.** Each bot is a real `claude -p` session with its own workspace,
+ memory (`CLAUDE.md`) 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.
+- **Durable before delivered.** Every message is written to SQLite before it is sent and retried
+ until it is delivered or marked as failed, which you can retry.
+
+The full design, from the protocol to the states of a bot, lives in [`docs/spec.md`](docs/spec.md)
+(in Portuguese).
+
+## Privacy and security
+
+- **Local only.** The daemon listens on `127.0.0.1`. No cloud service of our own, no telemetry, no
+ accounts. What bots send to Claude goes through Claude Code, as when you use it yourself.
+- **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.
+- **Tokens stay safe.** The app authenticates with an owner token readable only by your Windows user.
+ Each bot gets its own token per start, and the daemon keeps only its SHA-256 hash.
+- **Botloft is not a sandbox.** Every bot runs as your Windows user, so isolation between bots is
+ cooperative: a bot can read other bots' folders if it decides to. Give bots only the permissions
+ you would give Claude Code directly.
-## Install
+## FAQ
-1. Install [Claude Code](https://code.claude.com/docs/en/setup) and sign in once.
-2. Download `Botloft__x64-setup.exe` from
- [Releases](https://github.com/httpsphl/botloft/releases) and run it. It installs for your
- Windows user only, with no administrator prompt. The installer is not code-signed yet, so
- Windows SmartScreen may ask you to confirm.
-3. Open Botloft. It sets itself up; there is nothing to configure.
+
+Does Botloft cost anything?
-Botloft updates itself: when a new version is out, an "Update available" button shows in the
-title bar. Uninstalling (Settings > Apps) removes the app and stops Botloft from running in the
-background; your bots and their files stay in `%LOCALAPPDATA%\Botloft` and
-`%USERPROFILE%\Botloft`.
+No. Botloft is free and open source under the Apache 2.0 license. The bots run on Claude Code with
+your own Claude account, so they use your plan's limits; Botloft shows how much is left.
+
-## How it works
+
+Do I need to keep the window open?
-- **The daemon is the source of truth.** Closing the app never stops a bot. The daemon runs as a
- scheduled task of your Windows user: it starts when you sign in and comes back within a minute
- if it dies.
-- **Claude Code is the runtime.** Each bot is a real `claude -p` session with its own workspace,
- memory (`CLAUDE.md`) and conversation, talking `stream-json` over stdin and stdout. There is no
- custom agent SDK.
-- **One conversation per bot.** Your messages, messages from other bots and notices from the
- daemon all reach the bot in order. What it does comes back as a chat: replies, tool use and
- permission requests you allow or deny.
-- **Durable before delivered.** Every message is written to SQLite before it is sent and is
- retried until it is delivered or marked dead.
-- **Local only.** The daemon listens on `127.0.0.1`. No cloud services, no telemetry.
+No. The bots run in the background, even after you close Botloft, and start with Windows if you want.
+Settings has a switch to stop them when you close the app instead.
+
-## Layout
+
+Where are my bots and their files?
-```
-crates/botloft-core domain types, IDs, message envelope, protocol types
-crates/botloft-store SQLite storage and migrations
-crates/botloftd the daemon
-app/ Tauri v2 + React desktop app
-docs/ specification and ADRs
-```
+Each bot has a folder under `%USERPROFILE%\Botloft\\`, and each crew a shared work folder
+that you can point at a project of yours. Botloft's own data (SQLite, logs, secrets) is in
+`%LOCALAPPDATA%\Botloft`.
+
+
+
+Why does Windows warn me when I install it?
+
+The installer is not code-signed yet, so SmartScreen does not know its publisher. Each release is
+built by GitHub Actions from this repository, and updates are signed and checked by the app before
+they install.
+
+
+
+Does it run on macOS or Linux?
-## Development
+Not yet. Botloft is Windows-first: it uses scheduled tasks, Job Objects and Windows notifications.
+
+
+
+Is Botloft made by Anthropic?
+
+No. Botloft is an independent open-source project. It uses Claude Code as installed on your computer
+and is not affiliated with or endorsed by Anthropic.
+
+
+## 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, the installer and updates are in place.
+Planned next: a question box where bots ask you things, "always allow" for requests, search, and a
+code-signed installer. `main` can be ahead of the latest release.
+
+
+Development
Requirements: Windows 10 or 11, Rust stable (MSVC toolchain), Node.js 24 and pnpm. Running real
bots also needs Claude Code (the native `claude.exe`) installed and signed in.
@@ -67,6 +190,7 @@ cargo fmt --all --check
cd app
pnpm install
pnpm tauri dev
+pnpm dev # the UI alone in a browser, with a fake daemon and sample crews
pnpm check # typecheck + Biome + Vitest
pnpm bundle # NSIS installer with the daemon inside
```
@@ -86,29 +210,17 @@ botloftd service uninstall # stop it and remove the task; bots and data stay
Each data folder gets its own task, so a dev daemon installed with `BOTLOFT_HOME` (or `--home`)
never replaces the real one.
-## Security model
-
-- The daemon binds to `127.0.0.1` only. The app authenticates with an owner token stored under
- `%LOCALAPPDATA%\Botloft\secrets`, readable only by your Windows user.
-- Each bot gets its own token per process start; the daemon keeps only its SHA-256 hash.
-- Bots ask in their chat before they run commands or edit files, and wait for you to allow or
- deny each request.
-- **Botloft is not a sandbox.** Every bot runs as your Windows user, so isolation between bots is
- cooperative: a bot can read other bots' workspaces if it decides to. Give bots only the
- permissions you would give Claude Code directly.
-
-## Roadmap
-
-| Milestone | Scope |
-|---|---|
-| M0 | Workspace, empty app, CI |
-| M1 | Daemon base: config, storage, RPC, crews and bots |
-| M2 | Runtime: supervisor, restarts with backoff, Job Objects |
-| M3 | Messaging: durable delivery, bot tools, tasks between bots |
-| M4 | Desktop app: onboarding, crews, bots, timeline |
-| M4.1 | Headless bots with a chat, approvals, attachments |
-| M5 | Distribution: start with Windows, keep awake, installer, updater |
+```
+crates/botloft-core domain types, IDs, message envelope, protocol types
+crates/botloft-store SQLite storage and migrations
+crates/botloftd the daemon
+app/ Tauri v2 + React desktop app
+docs/ specification and ADRs
+```
+
## License
-Botloft is licensed under the [Apache License 2.0](LICENSE). See [NOTICE](NOTICE) for the copyright notice that goes with redistributions.
+Botloft is licensed under the [Apache License 2.0](LICENSE). See [NOTICE](NOTICE) for the copyright
+notice that goes with redistributions. The screenshots show sample crews from the app's preview, not
+real data.
diff --git a/docs/assets/chat-browser.png b/docs/assets/chat-browser.png
new file mode 100644
index 00000000..a1e29b04
Binary files /dev/null and b/docs/assets/chat-browser.png differ
diff --git a/docs/assets/chief.png b/docs/assets/chief.png
new file mode 100644
index 00000000..2d23af80
Binary files /dev/null and b/docs/assets/chief.png differ
diff --git a/docs/assets/hero-dark.png b/docs/assets/hero-dark.png
new file mode 100644
index 00000000..e3e2b41b
Binary files /dev/null and b/docs/assets/hero-dark.png differ
diff --git a/docs/assets/hero-light.png b/docs/assets/hero-light.png
new file mode 100644
index 00000000..3658a055
Binary files /dev/null and b/docs/assets/hero-light.png differ
diff --git a/docs/assets/mascot.svg b/docs/assets/mascot.svg
new file mode 100644
index 00000000..7cca0281
--- /dev/null
+++ b/docs/assets/mascot.svg
@@ -0,0 +1,82 @@
+
diff --git a/docs/assets/routines.png b/docs/assets/routines.png
new file mode 100644
index 00000000..837caf23
Binary files /dev/null and b/docs/assets/routines.png differ
diff --git a/docs/assets/screens.png b/docs/assets/screens.png
new file mode 100644
index 00000000..6293fd21
Binary files /dev/null and b/docs/assets/screens.png differ