Skip to content

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 02 Nov 23:36
Immutable release. Only release title and notes can be modified.

Before upgrading. fxbot now runs as containers, and Settings' Update in 0.1 or 0.2 can't make that move. Run setup.sh again instead, the command under Install: it stops the old service, copies its database into the database container, and starts the containers on the same chats, key, and settings. The old files and database stay until you remove them, and sudo fxbot status says how, or how to go back. Migration 0005_memories adds memories and vectors, and needs pgvector, which the database container has: on the machine's own Postgres, it stops and says to run setup.sh. The local embedder downloads its 310 MB model on its first start, holds about 380 MB, and fills in vectors for existing messages in the background. A checkout moves its database too: see the README's Run from a checkout.

  • Containers. setup.sh installs fxbot as containers, with podman, or docker when only docker is installed: fxbot's image from ghcr.io, for amd64 and arm64, pgvector's Postgres image, and the local embedder. It no longer installs Node or the distro's Postgres. sudo fxbot runs them: status, logs, update, up, down, restore, rotate-key, and embedder.
  • Updates through the machine. Settings' Update asks the machine, which starts the new release and waits until it answers. If it doesn't, the old release comes back by itself, on the backup taken before the new one's migrations, and Settings shows why. The database keeps running, and running chats finish first.
  • Memories. Each bot keeps what it learns: it saves one fact at a time with memory_save, finds them with memory_search, and removes wrong ones with memory_forget, which the chat shows as sentences. The newest are in its instructions on every turn, within 2% of the model's context window, and the owner sees, adds, edits, and deletes them in the bot panel's Memories tab.
  • Memory search by meaning. Memory search and chat_history match by meaning as well as by words. The vectors come from a local embedder (EmbeddingGemma 2 on the CPU, or Qwen3-Embedding on an NVIDIA GPU), from a provider's embedding model, or from none, picked in Settings' Memory search, or with sudo fxbot embedder. Chat messages get vectors too, from their first 8,000 characters, which Settings can change or turn off.
  • sudo fxbot rotate-key seals every stored key and token again under a new key, and keeps the old key until you remove it.
  • A checkout's database and local embedder run from deploy/compose.dev.yaml. npm run update is gone: a checkout updates with git.
  • The server listens on FXBOT_HOST, 127.0.0.1 by default.
  • fxbot reads its own lists of MCP servers and skills from its site, https://fxbot.sh, every hour, so new picks show up between releases. Before, it read them only with FXBOT_LISTS_URL set, which now points it at another site.
  • The website's top bar and the README link to the Hackers in the Loop community on Discord.