Changelog
v0.3.2 (Current)
Section titled “v0.3.2 (Current)”Released 2026-08-27.
An agent long-term memory overhaul: recall is now scoped to the speaking agent, agents can query their own episodic memory directly, and NOTES.md becomes an index with room to grow — plus a workspace file-viewer upgrade and tunnel reliability fixes.
New & improved
- memory — Recall is scoped to the speaking agent.
recall_scopegains anagentvalue and becomes functional:projectandsessionhad never filtered anything, and now narrow within the agent’s own episodes - memory — New
memory_searchandmemory_fetchtools let an agent query its own episodic memory. Scope is bound by the executor and is not model-controllable;memory_fetchre-checks ownership per episode - memory — Reflection now runs for every agent that spoke in a conversation, not just the lead
- memory —
NOTES.mdcap raised 4,000 → 12,000 andUSER.md3,000 → 6,000, with an automatic consolidation pass at 80% that rewrites notes into a compact index - workspace — A single agent-directory resolver shared by the daemon and gateway, plus
snippbot agents conflictsandsnippbot agents reconcileto merge duplicate workspaces - chat — PDF previews and working downloads in the workspace file viewer, with a maximize toggle
Fixes
- memory — Cross-agent context bleed: every agent recalled against one undifferentiated episode pool
- workspace — Split-brain workspaces: the daemon scanned
vps/agentsfirst while the gateway scanned~/.snippbot/agentsfirst, so an agent’s notes were written to one file and displayed from another. Which file was written also depended on which checkout launched the daemon - memory —
memory_notesilently failed for months once a file reached its cap; reflection collapsedcap_exceededinto a generic failure counter and surfaced nothing - memory — An over-cap notes file could never be trimmed: the cap check rejected removals too, so the agent could neither add nor remove
- tools —
memory_noteanduser_notewere dropped by any allowlist tool profile, even with core tools included, so agents with a custom Tool Access profile could not write notes at all - memory —
/api/memory/searchparsed anagent_idparameter and never used it - workspace — Manual edits in the agent editor bypassed the character cap the agent’s own tools obey
- remote-access — Pin cloudflared to HTTP/2 so a blocked QUIC path can’t stall the tunnel
- chat — Scope the continuation cap to multi-agent rooms; alphabetize the gateway roster
- chat — Don’t let an un-renderable
ask_questionsform lock the composer - chat — Alphabetize the agent roster list
- swarm — Restore brainstorm send-memoization + mid-stream avatar attribution
v0.3.1
Section titled “v0.3.1”Released 2026-08-19.
A reliability release focused on chat delivery: agent work now survives the end of a turn, mid-response cutoffs are closed, and reconnects no longer drop messages. Adds opt-in semantic memory search and dynamic room-roster tools.
New & improved
- chat — Self-requeue continuations: a durable job-runner + job-done hook lets an agent’s work survive turn-end, with a
/continueendpoint that delivers the continuation live to web and mobile - chat — Capture
finish_reasonand resume truncated turns in place (turn-lifecycle matrix) - chat — Dynamic room-roster tools for a PM/lead agent (add/remove agents), gated through
ask_questionswith a native confirm dialog for removals - memory — Ship the memory-indexer as an entry point with opt-in semantic search; promote high-signal insights into episodic memory; make the file-memory layer coherent (writable + scheduled)
- ui — Composer no longer re-renders the whole app on every keystroke
Fixes
- chat — Close every mid-response cutoff path across mobile and backend
- chat — Catch up on reconnect so standby drops no longer lose delivered messages
- chat — Never deliver empty message shells; sweep orphaned placeholders surgically (age-gated, never touching in-flight turns)
- chat — Swallow the
[[defer]]sentinel universally and never stream it - chat — Deliver continuation turns live to connected web + mobile clients; give continuation turns an ephemeral prompt so claude-native actually generates
- chat — Agent-to-agent
@!handlehand-offs were silently dropped in turn-capped rooms — now delivered; roster lead-gate fixes - chat — Per-speaker question forms + honest manual-answer; don’t let queued messages or dead-end question forms eat the user’s answers
- chat — Stop duplicate React keys when a tool result is reported twice
- security — CSRF-exempt the self-requeue
/api/chat/continuecallback - ui — Raise the model dropdown above the agent hover popover
v0.3.0
Section titled “v0.3.0”Released 2026-08-08.
Adaptive Swarm graduates: it’s now on by default, gains a Collaborative Mode (agents work as a group chat), and a rebuilt execution console. This release also adds Remote Access (daemon tunneling + mobile QR pairing) and the first Insights delivery controls.
Highlights
- Adaptive Swarm is on by default —
SNIPPBOT_SWARM_ENABLEDnow defaults on (thegit-handoffsub-flag stays off). SetSNIPPBOT_SWARM_ENABLED=0to opt out. - Swarm Collaborative Mode — agents converse as a group chat: on-demand reactive turns, self-election, a peer-DM side-channel, room auto-compaction, and PM synthesis of the room into the plan.
- Remote Access — connect the mobile app to your daemon over a tunnel with QR pairing, configured from a guided Settings walkthrough.
New & improved
- swarm — Collaborative Mode: group-chat backbone with on-demand turns, self-elect + low-signal muting, a bounded/sanitized peer-DM side-channel, room auto-compaction,
search_room_historyrecall, an always-in-context Project TOC, and split collaboration budget caps - swarm — Rebuilt execution console: one unified Console + Steering + Activity surface, live agent-stream tab, Output (workspace) browser, named-agent org-chart, durable
swarm_eventsactivity log, and Project/Agents tab consolidation - swarm — Kickoff: Mermaid plan graph with zoom/drag-pan, mid-run plan control (add/edit/delete tasks while steering), file attachments when steering, and clearer gate-approval cards
- swarm — Milestone-approval gate: pause BUILD to review a milestone before continuing
- swarm — Slot-freeing suspend/resume for TEAM & PLAN gates; frozen compute-duration rail during gate waits
- remote-access — Daemon tunneling + mobile QR pairing, with a numbered Settings walkthrough and tunnel address learned from the pairing request
- insights — Phase 1 delivery controls: master switch, per-channel toggles (email + in-app tray), and a 1–4 frequency slider
- chat — Pause per-agent questions with resume and no pile-on in multi-agent turns
- history — Search message content, not just conversation titles
- ui — Live version chip with an update-available notice sourced from PyPI
Fixes
- security — The loopback auth bypass now requires a direct connection
- chat — Durable multi-agent streaming that survives client disconnect (mobile backgrounding); preserve partial streamed text when a turn is interrupted; reap orphaned “sending” ghosts + surface OpenRouter reasoning
- thinking — Idle thinking is now opt-in and gated on chat presence, with queue removal + retention (the toggle can no longer lie)
- tools — Keep
custom_pythoncalls off the event loop + reap the process tree; core tools read the Package-Credentials vault + repairedgenerate_image - providers — claude-native self-updates from the Anthropic catalog
- ui — Portal Dropdown menus correctly; stop the settings request storm that trips the rate limiter; anchor the idle-thinking toggle for every agent
- devices / push — Distinguish pairing state from WebSocket presence; give the push store its own DB file (no more
devices.dbcollision) - insights — Honor the off switch (normalize
user_idat the settings choke point); stop silent settings-save failures
v0.2.0
Section titled “v0.2.0”Released 2026-07-31.
Our biggest release yet. It introduces Adaptive Swarm — a new autonomous execution mode — alongside built-in chat slash commands with reversible compaction, and a broad security & marketplace-integrity pass.
Highlights
- Adaptive Swarm (new, opt-in) — a PM → parallel workers → QA → end-to-end execution mode for Projects, driven by a kickoff wizard (Define · Team · Brainstorm · Plan · Launch), PM-minted contract agents, and notify-with-veto. Ships behind
SNIPPBOT_SWARM_ENABLED(default off). - Chat slash commands + reversible, searchable compaction — built-in
/context,/compact,/export,/clear. - Security & integrity hardening — SSRF guard on by default, MCP env encrypted at rest, and the fake-success package generator removed.
New & improved
- swarm (opt-in) — the Adaptive Swarm engine end-to-end (P0–P7): PM-led planning, parallel workers, integration smoke-gate, QA and E2E, with plan validation, graceful partial delivery, resume/edit, github_pr handoff, and a contract-agent pool. Gated by
SNIPPBOT_SWARM_ENABLED(default off). - chat — Built-in slash commands with reversible, searchable compaction
- chat — Server-side source filter for the conversations feed
- chat — Multi-agent turns: deliver the user’s message to every speaker, label the human’s turns, and halt on
ask_questionsso each agent’s questions stay answerable - chat — Surface a Stop control in every mode, plus per-agent stop
- channel-echo — Mirror app/web turns into the bound channel thread
- monitoring — Real system health on the Monitor page (was a hardcoded stub)
- settings — New Insights section in the Settings nav
- thinking — Internal-model gate honors the selected Default Internal Model instead of forcing the paid API
- files — Robust upload MIME detection: sniff magic bytes + infer from extension
Fixes
- security — SSRF guard denies internal/loopback by default
- security — Encrypt MCP env at rest, fix a CVE false-clean, harden validation
- security — Log the
X-Forwarded-For/trust_proxywarning once per process - marketplace — Repair MCP install and stop generators emitting fake-success stubs; real implementations for 6 MCP servers
- evolution — Harden self-improvement: revert integrity, growth caps, rate limits
- claude-native — Pin the requested model version instead of collapsing it; recover a conversation whose
--resumesession is gone; paragraph breaks between text blocks - chat — Honor the
max_tokenscap in the Anthropic provider; let an explicit model pick override the agent’spreferred_model; keep swarm/lifecycle conversations out of history - providers — Stop OpenAI-compatible providers leaking internal kwargs
- workspace — Wire the pending-writes lifecycle + quiet polling access logs
- builder / skills — Render the AI package-builder plan as Markdown (not raw source); pin the approved plan into context
- swarm (opt-in) — gate-timeout hang,
execution_typereconcile, github_pr resume persistence, and the divergent-history push wedge
v0.1.15
Section titled “v0.1.15”Released 2026-07-16.
New & improved
- dispatch — M7 enforce: route scheduler push through PushExecutor (pilot)
- dispatch — M7 enforce: route scheduler announce through ChannelExecutor
- dispatch — M7 enforce: route autonomous followups through ChatExecutor
Fixes
- channels — Bound channel sessions: Telegram/email threading + compaction cap
- channels — Make the channel compaction cap model-aware (fraction of the window)
- channels — Treat a channel thread like a web chat + in-thread compaction heads-up
- channels — Receive inbound images over Google Chat
- scheduler — Concurrency, data-integrity & time-math hardening
- scheduler — Webhook signing secret + delivery correctness
- scheduler — Dispatch manual triggers + cascade chains via the tick loop
- scheduler — Eliminate orphaned-producer / dead-consumer defects across pipelines
- scheduler — Record user-message activity directly into the heatmap
- dispatch — Route scheduler push to
DELIVER_AS_PUSH+ wire PushExecutor - dispatch — Key push/announce enforce on
run_id+ treat deduped as success - dispatch — Flag agent divergence in shadow mismatch detection
- dispatch — Resolve remaining fresh-audit follow-ups: idempotency, audit, timestamps
- ui — Remove the vestigial “Per-Source Shadow Mode” card from dispatcher settings
- security — Pin the resolved IP for outbound webhooks (closes a DNS-rebind TOCTOU)
- hooks — Atomic delivery claim + in-flight dedup
v0.1.14
Section titled “v0.1.14”Released 2026-07-15.
New & improved
- channels — Surface per-channel agent picker on adapter Setup tab
- sandbox — Duplicate “Save Changes” in the page header (above the fold)
- channels — Thread the streaming placeholder into the inbound thread
Fixes
- chat — Address the personal user, not the platform account owner
- channels — Key Google Chat DMs per-thread too (real token-blowup fix)
- channels — Scope channel conversations per-thread to stop token blowup
v0.1.13
Section titled “v0.1.13”Released 2026-07-13.
New & improved
- sandbox — Overhaul isolation: profiles, a real Safe mode, and a correct file model
- sandbox — Gate claude-native Bash through the CLI permission tool (Phase 1)
- sandbox — Contain claude-native Bash + fail-close custom_python (Phase 2)
- sandbox — Surface claude-native gating in the UI + audit hardening (Phase 3)
- sandbox — Unify the master switch + contain plan/approval bash
- sandbox — Containerize installed custom_python tools
- sandbox — Strict daemon-only loopback for contained custom_python (opt-in)
- sandbox — Make custom_python containment a UI toggle (config-backed, with backfill)
- loops — Live execution visibility, browser verification & post-run audit
- loops — Per-loop Working Dir + open-folder button + audit restart-robustness
Fixes
- sandbox — Revive pooled containers + honest per-path containment docs
- sandbox — Pooled containers now honor
network.enabled+ workspace mounts - loops — Event-driven active-run seeding (zero idle polling) + WS retry-forever
v0.1.12
Section titled “v0.1.12”Released 2026-07-09.
New & improved
- channels — Single-bubble streaming for the 6 remaining editable adapters
- channels — Generalize single-bubble streaming into a capability framework (+Slack)
- channels — Branded logo header for Google Chat + single streaming answer bubble
- channels — Stream Google Chat replies into the placeholder in bursts
Fixes
- chat — Make queued-message dispatch atomic to kill re-enqueue loop
- usage-limits — Classify Claude CLI “session limit” wording + surface reset time
- chat — Queue multiple messages during streaming without loss or loops
- settings — Cover all sections in export/import/reset + Account & Access UI
- channels — Return inline “Thinking…” in the Google Chat webhook body
- channels — Auto-reload the channel adapter when it’s running stale code
- channels — Google Chat “not responding” — instant ack + live thinking indicator
- dev — Strip editable-install shadow + ship google-auth for Google Chat
v0.1.11
Section titled “v0.1.11”Released 2026-07-05.
New & improved
- usage-limits — Universal LLM usage-limit / balance-low warnings
- tasks — Durable background tasks (behind
SNIPPBOT_DURABLE_TASKS_ENABLED, default off)
Fixes
- channels — Ngrok tunnel resilience — stable URL + single-agent election
- tasks — Bind durable-task sub-agents to the conversation workspace
v0.1.10
Section titled “v0.1.10”Released 2026-07-05.
New & improved
- browser — Save screenshots to host + high-DPI/large-viewport capture
Fixes
- channels — Stream webhook replies so follow-ups aren’t truncated
v0.1.9
Section titled “v0.1.9”Released 2026-07-03.
New & improved
- scheduler — Literal-output jobs (deliver prompt verbatim, no LLM)
- channels — Autostart tunnel via ngrok CLI when pyngrok is absent
- ui — Compact agent cards + grid/list view toggle on AgentsPage
Fixes
- memory — Notebook dropdown z-index, proposal dedup, sticky agent
- scheduler — Default literal jobs to raw delivery so text isn’t wrapped
- channels — Detect running adapter via socket probe, not psutil
- providers — Don’t wipe the model catalog on a failed refresh
- chat — Stop claude-native silently downgrading unmapped models to sonnet
- chat — Resume claude-native sessions from their original cwd
- chat — Render agent-generated files inline when no project is linked
- channels — Accept Google Chat App-URL (OIDC) webhook tokens
- providers — Make model-catalog auto-refresh failure-aware + add 12h cadence
- chat — Default generated files to the chat session folder
- agents — Make DELETE /agents idempotent + remove the agents DB row
Hardening
- channels — Adapter detection via
/health(identity check, off the event loop) - channels — Tunnel lifecycle: shutdown teardown, own-stdout URL parsing, start lock
- channels — Bind Google Chat webhook audience to the configured URL + cache certs
v0.1.8
Section titled “v0.1.8”Released 2026-06-30.
New & improved
- loops — Label the Goal inputs in the create drawer + info popovers
- loops — Template gallery UI — browse, run, and customize built-in loops
Fixes
- awakening — Create the agents DB row at awakening, not next restart
- bounties — Add missing bounty_bids.rejection_reason column (migration 073)
v0.1.7
Section titled “v0.1.7”Released 2026-06-24.
New & improved
- model-router — Skip unconfigured/unserveable provider tiers when routing
- loops — Per-loop model selector + fix create-drawer layout/buttons
- loops — Autonomous goal-seeking loops, Phases 1–4
Fixes
- ui — Clarify why Report an Issue submit is blocked
v0.1.6
Section titled “v0.1.6”Released 2026-06-22.
Fixes
- ui — Add missing ‘login’ key to AccountStep brightnessMap
- awakening+setup — Make the Windows setup awakening work end-to-end
- marketplace — Default daemon to prod Singularity registry out of the box
v0.1.5
Section titled “v0.1.5”Released 2026-06-21.
Fixes
- Bundle awakening into wheel + 4 install/awakening hardening fixes
- daemon — Allow issues.snippbot.com in CSP connect-src so bug reports submit
- issues — Deploy issues.snippbot.com + fix the “Failed to fetch” bug-report error
v0.1.4 — Install-path hardening
Section titled “v0.1.4 — Install-path hardening”Reliability fixes for the first-run, service, and upgrade paths — especially on Windows.
- New
snippbot upgradecommand — upgrades from PyPI with cache-busting built in (defeats pip’s stale-index problem), so you never need to pass pip flags by hand. snippbot service installon Windows no longer requires Administrator — it installs a per-user Startup-folder launcher that starts the daemon hidden at logon (Task Scheduler needed elevation on many machines).snippbot uninstallnow removes the Windows / macOS autostart (previously only systemd was torn down, leaving a dangling autostart).snippbot uninstall --purgeandsnippbot resetnow honorSNIPPBOT_DATA_DIR/ a configureddata_dirinstead of assuming~/.snippbot.snippbot setupno longer hangs on Windows (daemon output is routed to a log file instead of an undrained pipe) and is more robust to transient errors while waiting for the server.- Setup network check is now advisory (a warning, not a hard block) so you can set up offline or with a non-Anthropic provider.
snippbot startcorrectly detects a free port when binding IPv6 (server_host = "::") and shows a clickable loopback URL instead ofhttp://:18781.--purgereports a partial removal honestly instead of falsely claiming success when files are locked.
v0.1.0 — Public Open Beta
Section titled “v0.1.0 — Public Open Beta”The first public release of Snippbot. The self-hosted daemon ships as a single PyPI wheel (pipx install snippbot) with the full UI bundled in. Everything below is included.
Core daemon & UI
- Self-hosted daemon (Starlette + uvicorn) serving the API and bundled React UI on one port
- React UI with Aurora dark theme
- Streaming chat over SSE
- Anthropic, OpenAI, and Gemini provider support
- API key and session token authentication
- SQLite storage
- Browser-based setup wizard, plus
snippbot start/stop/status/config/setup/doctor/resetandsnippbot service installfor OS-level service management
Agents, projects & execution
- Agent archetypes with distinct personalities and per-agent workspaces
- Multi-agent chat selection
- Permission tier system (Sandbox → Unrestricted)
- Project → Phase → Task hierarchy with DAG execution and dependency resolution
- Plan approval flow and real-time execution status in the UI
- Sub-agents (researcher, executor, reviewer, planner, communicator, aggregator, coordinator), nestable up to 3 levels, with result aggregation strategies
Scheduler
- Cron, interval (
every), and one-time (at) job types - Natural language schedule parsing
- Job chains and conditions, with auto-pause after consecutive failures
- Calendar view and activity heatmap in the UI
- IMAP email integration as a scheduler trigger
- Run output modal for viewing job results inline
Memory
- Episodic memory with FTS5 keyword search
- Vector embeddings for semantic similarity search
- Knowledge graph entity extraction
- Automatic consolidation and clustering
- 3D nebula visualization in the Memory UI
Workflows
- Visual DAG editor powered by React Flow
- 7 step types: HTTP request, script, agent task, condition, loop, wait, webhook
- Workflow templates and versioning
- Parallel branch execution
Channels & multi-platform messaging
- Channel adapter system with support for Slack, Discord, Telegram, WhatsApp, Microsoft Teams, and Google Chat
snippbot channel start/stop/status/listCLI commands- Channel bindings to route incoming messages to specific agents
- Webhook signature verification for all platforms
Browser automation
- CDP browser control with
BrowserPageUI (live viewport + chat panel) - Session recording and replay
- Auth manager for persistent browser sessions
- Auto-snapshot toggle with red/green visual indicator
Devices
- Device pairing via QR code and TOTP
- WebSocket-based device communication protocol
- Device groups for collective execution
- Per-device health metrics
Payments direction
- Marketing, docs, and the marketplace use Stripe (USD) as the live payment method. A USDC/x402 payments path is in development; the crypto UI is gated off behind
PUBLIC_USDC_PAYMENTS_ENABLED(default off).