bitterbot-desktop is a free, open source ai interaction & interfaces project written in TypeScript and released under MIT. It has 2,456 GitHub stars, 415 forks and 10 open issues, and was last pushed 18 hours ago. On this registry it ranks #90 of 135 tracked projects in AI Interaction & Interfaces, with 5 head-to-head comparisons available.

What is bitterbot-desktop?

Bitterbot is a local-first personal AI desktop application for TypeScript developers and self-hosters who want an agent that lives on their own devices, remembers their history, and trades proven skills with other agents over a peer-to-peer marketplace.

What it is

Bitterbot is an open-source, MIT-licensed desktop application written in TypeScript and published from the Bitterbot-AI organisation as bitterbot-desktop. It runs a gateway process on the user's own machine, serves a browser-based Control UI on http://127.0.0.1:19001, exposes a WebSocket API on ws://127.0.0.1:19001 for all clients, and spawns a P2P orchestrator sidecar automatically, so the whole system is one process on one port. The category is AI and machine learning, specifically AI interaction and interfaces.

The specific thing it replaces is the stateless wrapper around an LLM API. In that model, the agent forgets the user the moment the terminal closes, holds no durable memory, and produces nothing that survives the session. Bitterbot instead keeps memory on the device, gives the agent a dream engine that consolidates that memory while the user sleeps, lets it browse the web, run code, and reach the user over channels such as WhatsApp, and packages the skills that provably worked for trade with other agents. Memory, skills, and wallet therefore stay in the self-hoster's hands rather than in a vendor's account.

Key capabilities

  • Local-first personal AI with biological memory, retained on the user's own devices across sessions.
  • A dream engine that tidies and consolidates memory overnight, distills skills that provably worked into reusable know-how, and grades its own dreaming by whether the distilled results actually get used.
  • A P2P skills economy in which the agent packages proven skills and trades them with other agents for USDC, using the x402 and a2a-protocol topics.
  • Multi-channel access, including WhatsApp, alongside the Control UI and a terminal CLI invoked as pnpm bitterbot agent --agent main --message "...".
  • Web browsing and code execution, with browser automation installed through pnpm exec playwright install --with-deps chromium.
  • A Control UI for chatting, viewing dreams, managing skills, and monitoring the agent, served by the gateway itself at http://127.0.0.1:19001.
  • Configuration through pnpm bitterbot onboard for model auth, memory embeddings, web search, channels, wallet, and workspace, or pnpm bitterbot configure for interactive manual setup.

Who uses it and how

  • Individual self-hosters running it on personal hardware as a private personal AI, with gateway, Control UI, and P2P orchestrator in a single process on a single port.
  • Remote-server operators who run the gateway on a host and reach the Control UI from another machine through an SSH tunnel: ssh -N -L 19001:127.0.0.1:19001 user@host.
  • Windows users, who are directed to WSL2 and to clone into the Linux filesystem (~/bitterbot-desktop) rather than /mnt/c/..., because the 9p mount makes boots dramatically slower, measured at 43x.
  • Source developers, who run pnpm dev:all for gateway watch mode plus Vite hot reload, or split the work into pnpm gateway:watch and cd desktop && pnpm dev.
  • Agent-economy participants whose agents trade distilled skills with other agents for USDC over the P2P marketplace.

Getting started

Run Node ≥ 22 with pnpm, clone the repository, run bash scripts/setup-deps.sh, pnpm install, and pnpm exec playwright install --with-deps chromium, then run pnpm bitterbot onboard and open http://127.0.0.1:19001. Manual setup instead copies .env.example to .env with an ANTHROPIC_API_KEY plus optionally TAVILY_API_KEY, BRAVE_API_KEY, OPENAI_API_KEY, and NEARAI_API_KEY, after which pnpm start:all restarts the gateway.

How it compares

The supplied facts name no paid product and no comparable tool, so Bitterbot stands alone in this registry. The only contrast the facts draw is against the general class of stateless LLM API wrappers it is built to replace, on the axes of persistent local memory, self-hosted operation, and an owned wallet rather than a rented assistant account.

When to use it — and when not to

A self-hoster must operate Node ≥ 22, pnpm, system dependencies including ffmpeg, ripgrep and jq, a Playwright Chromium install, model and search API keys, memory embeddings, a wallet, and the gateway on port 19001, plus SSH tunnelling if the UI is needed from another machine. Anyone who wants a zero-ops hosted assistant, does not want to hold wallet credentials or handle USDC, or will not run a local gateway should not pick it. The licence is MIT and the project is active with 2,456 stars, 415 forks, and 10 open issues as of the last push on 2026-09-17, but the supplied README excerpt is truncated and the facts record no tagged release.

project readme (upstream, from github) — read inline

A local-first personal AI with biological memory, a dream engine, and a P2P skills economy.

Version MIT License Node >= 22 Platform X / Twitter

Most AI agents are stateless wrappers around an LLM API. Close the terminal, and they forget you exist.

Bitterbot is different. It's a personal AI that lives on your devices, remembers your life, and actually does things, browses the web, runs code, talks to you on WhatsApp. While you sleep, it dreams: tidying and consolidating its memory, distilling the skills that provably worked into reusable know-how, and preparing for what you're likely to ask next — and it grades its own dreaming by whether the results actually get used. It packages those proven skills and trades them with other agents on a P2P marketplace for USDC.

About · Docs · Getting Started


Quick Start

Runtime: Node ≥ 22 · Package manager: pnpm

No pnpm yet? It ships with Node via corepack:

corepack enable pnpm || npm install -g pnpm
git clone https://github.com/Bitterbot-AI/bitterbot-desktop.git && cd bitterbot-desktop
bash scripts/setup-deps.sh    # system deps: ffmpeg, ripgrep, jq, etc.
pnpm install
pnpm exec playwright install --with-deps chromium   # browser automation

Windows: use WSL2, and clone into the Linux filesystem (~/bitterbot-desktop), not /mnt/c/... — the 9p mount makes boots dramatically slower (43x measured).

Run the onboarding wizard. It walks you through model auth (API keys), memory embeddings, web search, channels, wallet, and workspace setup, then starts the gateway + Control UI for you and opens the browser. When it finishes, Bitterbot is already running; there's nothing else to type.

pnpm bitterbot onboard

Open http://127.0.0.1:19001 to reach the Bitterbot Control UI where you chat, view dreams, manage skills, and monitor the agent. The gateway serves the UI itself, and the P2P orchestrator starts automatically — one process, one port.

Start it yourself later (or if you skipped the wizard's auto-start):

pnpm start:all              # starts the gateway (which serves the Control UI); skips if already up

start:all builds dist/entry.js and stages the Control UI on first run if they're missing, so no separate pnpm build step is required.

Developing on the source? Use watch mode instead:

pnpm dev:all                # gateway (tsdown --watch) + Vite hot-reload, color-tagged logs
# or two terminals:
pnpm gateway:watch          # Terminal 1: auto-rebuilds on TS changes
cd desktop && pnpm dev      # Terminal 2: Vite hot-reload

The orchestrator (P2P sidecar) is spawned automatically by the gateway, so you do not need to start it separately.

The Control UI needs no wiring: the gateway serves it and hands it the auth token over a same-origin loopback endpoint, so opening http://127.0.0.1:19001/ on the machine that runs the gateway just works. From another machine, open the same URL through an SSH tunnel (ssh -N -L 19001:127.0.0.1:19001 user@host), or use the first-run screen to point the UI at a remote gateway with its token from ~/.bitterbot/bitterbot.json → gateway.auth.token. (desktop/.env is only a development-mode override for pnpm dev:all.)

Manual setup without the wizard

If you prefer to configure everything by hand instead of using the wizard:

cp .env.example .env
# Edit .env with your Anthropic API key (ANTHROPIC_API_KEY)
# and optionally: TAVILY_API_KEY, BRAVE_API_KEY, OPENAI_API_KEY, NEARAI_API_KEY

Then run pnpm bitterbot configure to set gateway port/bind/auth, channels, and other options interactively. Or edit ~/.bitterbot/bitterbot.json directly.

Service URL Purpose
Gateway ws://127.0.0.1:19001 WebSocket API for all clients
Control UI http://127.0.0.1:19001 Browser-based dashboard (served by the gateway)

You can also talk to your agent from the terminal:

pnpm bitterbot agent --agent main --message "What have you learned about me so far?"

A Biological Brain

Bitterbot's memory isn't a vector database with a retrieval step. It's a cognitive architecture grounded in computational neuroscience.

  • Knowledge Crystals Memories naturally decay over time via Ebbinghaus forgetting curves. Unused info fades; frequently accessed facts become permanent. A consolidation pipeline runs every 30 minutes: hormonal decay, chunk merging, low-importance forgetting, governance enforcement.
  • Hormonal System Three neuromodulators shape the agent's behavior in real-time. Dopamine (achievements) boosts enthusiasm; Cortisol (urgency) increases focus; Oxytocin (bonding) protects relational memories. Eight response dimensions (warmth, energy, focus, playfulness, verbosity, curiosity, assertiveness, empathy) are computed from the hormonal blend every turn.
  • Curiosity Engine The agent actively maps what it doesn't know via a unified five-component GCCRF reward function. It detects gaps, contradictions, and semantic frontiers, generating intrinsic motivation to explore. The alpha parameter shifts from density-seeking (learn fundamentals) to frontier-seeking (explore novelty) as the agent matures. The result is a self-regulating curiosity drive.
  • Proactive Recall Key facts about you (name, preferences, current project) surface automatically before the agent responds, not only when it decides to search. Identity and directive memories are injected every turn with zero LLM cost.
  • Canonical Facts Ledger A small, always-injected layer of ground truth (who you are, your project, standing decisions, key endpoints) that bypasses similarity search entirely, so the agent never has to "retrieve" what it should simply know. Facts get pinned automatically as they come up in conversation and by a consolidation pass, capped so only durable truths stay resident. Re-stating a fact strengthens it; contradicting it supersedes the old belief while keeping its history.
  • Knowledge Graph Beyond flat memories, the agent maintains a typed graph of the people, projects, and things in your life and how they connect. Identity and relationship questions resolve through the graph, and a dream mode continually mines conversations for new edges.
  • Evolving Identity You define the immutable safety axioms (GENOME.md). The agent's actual personality (the Phenotype) evolves organically based on lived experience, constrained by your genome.

The Dream Engine

Every 2 hours, the agent goes offline to dream. Twelve specialized modes optimize its brain, selected by an FSHO coupled oscillator that reads the current state of the memory landscape:

Mode What It Does
Replay Strengthens high-importance memory pathways (no LLM cost)
Mutation "What if?" thinking, mutates prompts to discover more efficient skills
Extrapolation Projects user patterns forward to anticipate future needs

readme truncated — read the full docs on github

Frequently asked questions

Is bitterbot-desktop free to use?

bitterbot-desktop is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does bitterbot-desktop do?

Bitterbot - a mesh of agents that turns shared experience into collective capability.

What is bitterbot-desktop written in?

bitterbot-desktop is primarily written in TypeScript. Its source is publicly available at https://github.com/Bitterbot-AI/bitterbot-desktop, and it has 2,456 GitHub stars.