Nanobot

Nanobot drafts a second archive boundary for idle memory

Nanobot proposes a dream-tail marker so short idle sessions reach its Dream memory pipeline, but the draft also documents a 16,000-character truncation hazard and at-least-once crash semantics. Concurrent work makes Mattermost thread policy configurable and adds optional multi-engine search.

← Back to homeOriginal source ↗

HKUDS/nanobot PR #5231 is the inspected primary source: “feat(memory): archive idle sessions for Dream.” The related records below were inspected as supporting context rather than independent confirmation.

The facts

- HKUDS/nanobot PR #5231 was created 2026-08-03T10:50:07Z and was open at inspection; its title is “feat(memory): archive idle sessions for Dream.” - HKUDS/nanobot PR #5233 was created 2026-08-03T17:20:24Z and was open at inspection; its title is “feat(mattermost): separate group policy for threads and expose in WebUI.” - HKUDS/nanobot PR #5234 was created 2026-08-03T17:31:11Z and was open at inspection; its title is “feat(agent): integrate mst-python as a metasearch provider.” - The repository reported 46580 stars, 775 open issues, default branch main, and last push 2026-08-03T16:38:42Z. - The latest tagged-release baseline checked was v0.3.0 published 2026-07-25T08:08:47Z.

What changed

HKUDS/nanobot PR #5231 reports: Problem history.jsonl is Dream's only input source. A short idle session that never exceeds retain_recent_legal_suffix's protected recent-suffix window never produces a history.jsonl entry, no matter how long it idles — so Dream has no input to process for that session. Solution Add a lightweight archive path for sessions the real archive path structurally can't reach yet: sessions with last_consolidated == 0 and unarchived messages. It reuses MemoryStore.raw_archive() and tracks progress via a new dream_tail_marker. Every real archive boundary now starts from max(last_consolidated, dream_tail_marker), so the two paths never re-cover each other's range; last_consolidated's own semantics are unchanged. The LLM's summarization context and the removal/raw-fallback boundary are kept separate, so a session already tail-archived doesn't lose that content from future summaries. Tail entries are written under

HKUDS/nanobot PR #5233 reports: This PR is a follow-up to [#4459] which added Mattermost channel support. It adds the groupPolicyInThread config field so users can set different mention requirements for threads vs. main channels, and exposes it in the WebUI. Changes **nanobot/channels/mattermost/runtime.py** — added group_policy_in_thread config option (defaults to "open") and updated _should_respond_in_channel to select the appropriate policy based on whether a message is in a thread **nanobot/channels/mattermost/tests/test_mattermost_channel.py** — added 4 tests covering all three policies (open, mention, allowlist) for threads **nanobot/channels/mattermost/webui/index.ts** — added groupPolicyInThread to the WebUI config (visible) **nanobot/channels/mattermost/webui/locales/*.json** — i18n strings for all 10 locales Why this matters Thread replies are contextually anchored to the bot's message, so requiring an @bot mention in threads is often unnecessary friction. This feature lets users keep strict channel behavior

HKUDS/nanobot PR #5234 reports: This PR adds the Meta-Search Tool (mst) as a new web search provider for nanobot. What it is MST aggregates results from multiple search engines (DuckDuckGo, Google, Brave, Bing, etc.) simultaneously and merges them using Reciprocal Rank Fusion (RRF). This gives richer coverage than any single provider alone. Inspired by [SearXNG] — MST brings the same metasearch concept to Python code directly, without needing a separate web server or Docker container. Package at https://github.com/openmtx/meta-search-tool. Changes **nanobot/agent/tools/web.py** — added mst as a new search provider with _search_mst() method. Supports: mst_engines config / MST_ENGINES env var to select which engines to query (defaults to all ready engines) mst_weights config / MST_WEIGHTS env var for per-engine ranking weight overrides Graceful fallback when mst-python is not installed **nanobot/webui/settings_api.py** —

Why it matters

The proposal is valuable because it names its own dangerous edge: advancing a marker past truncated content can permanently hide material from Dream. A second archive boundary is acceptable only if its scope and payload-fit rule are explicit and testable. The operator test is whether persisted state, execution authority and the visible user outcome describe the same event after retries, restarts or delegation.

Current

The primary record was open when captured on 2026-08-04. The release baseline was v0.3.0 published 2026-07-25T08:08:47Z. Repository metadata, pull requests, issues, release records, Google News discovery, Hacker News discovery, Lobsters, Metamesh and the rendered ClawCharts row were checked. ClawCharts selected the subject; it did not prove the claim.

Evidence

The primary URL is https://github.com/HKUDS/nanobot/pull/5231. Supporting records are https://github.com/HKUDS/nanobot/pull/5233 and https://github.com/HKUDS/nanobot/pull/5234. Source bodies, timestamps and states are preserved in the daily evidence bundle. Test counts, reproductions and deployment observations remain attributed to their authors unless explicitly identified as independently rerun.

Source boundary

Open work is described as open, closed work as closed, and operator reports as reports. A pull request is evidence of proposed or reviewed direction, not proof of a shipped release. Search residue, package mirrors and historically published source spines were excluded.

Operator take

Bound the tail path, distinguish written bytes from attempted bytes, preserve restart idempotency evidence, and keep channel/search additions separate from the memory contract. Preserve a before-state receipt, make the smallest reversible change, and verify the original failure independently after intervention.

Caveat

Public project records are mutable. Status, scope and evidence can change after publication. This brief records the inspected state and does not authorize changes to a reader’s deployment.

Source inspected; source state, environment and release boundary remain explicit.