Open source · Apache-2.0 · pre-release
The open-source runtime that keeps your AI bots’ sessions alive.
Disconnect, restart the daemon, reboot the host. Each bot keeps its session, and you pick it up where you left it: from a team chat in the browser, or with botkeep attach in a terminal.
curl -fsSL https://botkeep.app/install.sh | sudo bash
Ubuntu 22.04+ or Debian 12+. The installer ships with the first release; until then it only prints where to follow along.
What Botkeep looks like
$ botkeep new
name Nick
handle nick
driver claude-code
✓ created @nick · starting
$ botkeep send nick "Move the billing tests to vitest and open a PR"
✓ accepted · queued for @nick
$ botkeep logs nick --follow
▸ Bash npm test
▸ Edit src/billing/invoice.test.ts
◆ daemon restarted · keeper still running
▸ Bash npx vitest run
$ botkeep attach nick
attached to @nick · Ctrl+] to detach
- NNickworking
- BBiaidle
- OOpsqueued 2
Move the billing tests to vitest and open a PR.
▸ Bash npm test
▸ Edit src/billing/invoice.test.ts
restarted after host reboot · resumed
▸ Bash npx vitest run
e-mail · untrusted
Billing tests run on vitest now and the pipeline passed. PR is open for review.
Illustration of the Botkeep CLI and web UI. Botkeep is pre-release; screens may change.
How persistence works
Sessions don’t live in your terminal, or in the daemon.
Botkeep separates the thing you talk to from the thing that keeps your bot running.
-
01
A keeper per bot
Each bot’s session runs under its own keeper, detached from the daemon. Stop, kill or upgrade the daemon and the session keeps working. When it comes back, it reconnects to every live keeper.
-
02
Every event on disk first
The keeper writes each event to the bot’s event log on disk before acknowledging it. Clients resume from the last event they saw, with no gaps and no duplicates.
-
03
Back after a reboot
After a host reboot, every bot that should be running starts again and resumes its conversation. A turn that was cut off is re-delivered with a note saying so.
Features
Run a small team of bots like services, talk to them like people.
-
Persistent sessions
Sessions survive disconnects, daemon restarts and reboots. Crashed agents restart with backoff and resume their conversation.
-
Attach and detach
Watch and steer a live session from the browser or with
botkeep attach nick. Ctrl+] detaches and the bot keeps going. -
Team chat
Every bot in one list with its status. Messages sent while a bot is working are queued, in order, and never lost.
-
Bot e-mail
Give a bot its own address. Inbound mail arrives as a message marked untrusted; unknown senders wait for your approval.
-
Computer use on demand
A bot can lease a disposable desktop for a short task. Every lease has a TTL; you can open the live view or kill it.
-
Operator CLI
new,send,logs --follow,attach,doctorand more, locally or remotely with an API token. Listings support--json.
Self-host
Your server, your bots, your data.
Botkeep is Apache-2.0 and runs on a VPS you control. One command installs it as a service with its own botkeep user. Bots never run as root.
- Ubuntu 22.04+ or Debian 12+, x86-64 or arm64
- The daemon listens on 127.0.0.1; reach it over an SSH tunnel
- Add
--domainfor HTTPS with automatic certificates - Prefer containers? A Docker image is available too
-
botkeep doctortells you what is misconfigured
curl -fsSL https://botkeep.app/install.sh | sudo bash -s -- --domain bots.example.com
# then open the printed setup link
✓ botkeepd.service running
open https://bots.example.com/setup?token=…
$ botkeep doctor
pass node
pass data dir permissions
pass claude found, logged in
warn computer provider not configured
Read the source
Hosted plan
Rather not run a server?
We are considering a hosted Botkeep. It is a waitlist for now: no plans, no billing. Leave your e-mail and we will write when there is something to try.
You’re on the list.
We will e-mail you when the hosted plan opens. Meanwhile, the source is on GitHub.