- Async background consolidation for memory
- Channel plugin architecture
- Ollama support for local models
- VolcEngine and BytePlus joined the provider ecosystem
- Support for openrouter/* models
- Langsmith integration for better conversation tracking
- Feishu reply and quote support
- Consolidation inputs are passed through more faithfully
- save_memory is enforced more consistently
- Channel discovery is now automatic
- Built-in channel and config boundaries are cleaner
- Web search providers are now configurable with fallback behavior
- Filesystem and shell tooling improvements for pagination, fallback matching, and output behavior
- Agent loops are less likely to crash
- MCP connections now handle cancellation better
- Orphaned tool results are preserved correctly
- Async CLI and subagent output behaves more cleanly
- Payloads are validated before persistence
- Built-in skill packaging
🐈 nanobot v0.1.4.post5 is here — 57 PRs merged, 29 new contributors, and a release cycle shaped less by spectacle than by something quieter: careful refinement where it matters most.
This is the kind of release that makes a project feel more trustworthy in daily use. The edges got smoother, the failure modes got softer, and the platform got broader. Across channels, providers, memory, MCP, CLI, and infrastructure, nanobot is becoming not just more capable, but more dependable — more like a tool you can actually live with.
Highlights
-
Reliability took center stage — A lot of this release is about making nanobot fail more gracefully. Agent loops are less likely to crash, MCP connections now handle cancellation better, orphaned tool results are preserved correctly, and async CLI/subagent output behaves more cleanly. (#1999, #1953, #2075, #1930, #2039)
-
Memory became more practical — Async background consolidation landed, consolidation inputs are passed through more faithfully, payloads are validated before persistence, and
save_memoryis enforced more consistently. This is a meaningful step toward memory that feels less magical and more reliable. (#1961, #1962, #1868, #1810, #1909) -
The channel layer keeps maturing — Channel plugin architecture arrived, channel discovery is now automatic, and built-in channel/config boundaries are cleaner. That kind of structural work matters: it makes growth easier without making the system brittle. (#1982, #1888)
-
Provider support keeps expanding outward — Ollama support landed for local models, VolcEngine and BytePlus joined the ecosystem,
openrouter/*models are supported, and web search providers are now configurable with fallback behavior. nanobot is increasingly meeting users where they already are. (#1863, #1608, #2026, #398) -
Observability and tooling got stronger — Langsmith integration brings better conversation tracking, built-in skill packaging got fixed up, and smarter filesystem/shell tooling improves pagination, fallback matching, and output behavior. The system is becoming easier to inspect and easier to trust. (#1920, #1416, #1895)
-
Feishu saw major polish — Reply/quote support landed, tool calls can now render in code blocks, group mention behavior improved, Groq Whisper audio compatibility was fixed, and broader multimedia handling got much better. Feishu support feels substantially more complete after this cycle. (#1963, #1966, #1768, #1741, #2034)
-
Telegram got meaningfully better in groups and media workflows — Group response behavior is now configurable, reply-to-message context works across text and media, and media filename collision bugs were cleaned up. These are small details individually, but together they make conversations feel much more natural. (#1389, #1900, #1796)
-
Enterprise and collaboration channels improved too — WeCom channel support landed, Slack thread behavior was clarified, QQ legacy plain-text replies were restored, and DingTalk gained both voice recognition text retrieval and multimedia improvements. (#1327, #1784, #1941, #1859, #2034)
-
CLI and runtime behavior are more predictable — Gateway port defaults now respect config, restart flows are more portable, Windows compatibility got attention, and shell/workspace guards became stricter around home-expanded and tilde-based paths. This is the kind of work users only notice when it’s missing — which is exactly why it matters. (#1797, #1785, #1958, #1479, #1827, #1845)
-
A lot of sharp edges disappeared — Hidden files are no longer synced by accident, non-vision models won’t receive
image_url, heartbeat and cron got less noisy, and version IDs now show up in logs. These aren’t flashy changes, but they make nanobot feel more settled, more deliberate, and more production-ready. (#1856, #1901, #1973, #2058)
Community
A huge welcome to our 29 new contributors in this release.
Open source grows in two ways: through bold new ideas, and through the patient work of noticing rough edges and smoothing them out. v0.1.4.post5 has plenty of both. Thank you to everyone who contributed features, fixes, refactors, docs, and infrastructure improvements — nanobot is becoming stronger not all at once, but through many careful hands moving it forward together.
Full Changelog: https://github.com/HKUDS/nanobot/compare/v0.1.4.post4...v0.1.4.post5
What's Next
Looking ahead, we’ll continue moving nanobot toward a more modular, plugin-oriented ecosystem. As a first step, we plan to experiment and iterate in the channel layer first — using channels as the proving ground for a more extensible architecture before expanding that approach further across the project.
We’ll also keep using the nightly branch for faster testing, earlier feedback, and quicker iteration on new ideas. If you’re interested in helping shape that future, we’d warmly welcome contributions there. You can find the contribution workflow and guidelines in CONTRIBUTING.md.
And one more small note: v0.1.4.post5 will likely be the last release in the 0.1.4 line. It closes out this cycle with a lot of polish and hard-earned stability — and also makes room for what comes next.
The next main version is already taking shape, and we think it will be worth the wait. 😉
What's Changed
- fix: ensure feishu audio file has .opus extension for Groq Whisper compatibility by @chengyongru in https://github.com/HKUDS/nanobot/pull/1741
- fix(slack): define thread usage in send() by @ailuntz in https://github.com/HKUDS/nanobot/pull/1784
- fix(cli): let gateway use config port by default by @Protocol-zero-0 in https://github.com/HKUDS/nanobot/pull/1797
- fix(cli): respect config.gateway.port in gateway command by @ailuntz in https://github.com/HKUDS/nanobot/pull/1785
- fix(telegram): add group_policy to control bot response behavior in groups by @haosenwang1018 in https://github.com/HKUDS/nanobot/pull/1389
- Add missing scripts to built-in skill
skill-creatorby @yankeguo in https://github.com/HKUDS/nanobot/pull/1416 - feat: add LLM retry with exponential backoff for transient errors by @kiplangatkorir in https://github.com/HKUDS/nanobot/pull/1512
- refactor: implement token-based context compression mechanism by @VITOHJL in https://github.com/HKUDS/nanobot/pull/1704
- fix: bump litellm version to 1.82.1 for Moonshot provider support by @greyishsong in https://github.com/HKUDS/nanobot/pull/1855
- feat: support retrieving DingTalk voice recognition text by @dingyanyi2019 in https://github.com/HKUDS/nanobot/pull/1859
- fix(subagent): preserve reasoning_content in assistant messages by @lailoo in https://github.com/HKUDS/nanobot/pull/1848
- fix: exclude hidden files when syncing workspace templates by @yapex in https://github.com/HKUDS/nanobot/pull/1856
- Add WeChat Work (WeCom) channel support by @chengyongru in https://github.com/HKUDS/nanobot/pull/1327
- feat: add Ollama as a local LLM provider by @letzdoo-js in https://github.com/HKUDS/nanobot/pull/1863
- fix(memory): pass temperature, max_tokens and reasoning_effort to memory consolidation by @ethanclaw in https://github.com/HKUDS/nanobot/pull/1868
- refactor: auto-discover channels via pkgutil, eliminate hardcoded registry by @Re-bin in https://github.com/HKUDS/nanobot/pull/1888
- feat: allow direct references in hatch metadata for wecom dep by @for13to1 in https://github.com/HKUDS/nanobot/pull/1885
- Fix Gemini thought_signature loss in tool-call replay by @WhalerO in https://github.com/HKUDS/nanobot/pull/1874
- fix(exec): enforce workspace guard for home-expanded paths by @suger-m in https://github.com/HKUDS/nanobot/pull/1827
- enhance: improve filesystem & shell tools with pagination, fallback matching, and smarter output by @Re-bin in https://github.com/HKUDS/nanobot/pull/1895
- fix: detect tilde paths in restrictToWorkspace shell guard by @nikolasdehor in https://github.com/HKUDS/nanobot/pull/1845
- fix: wecom-aibot-sdk-python should use pypi version by @chengyongru in https://github.com/HKUDS/nanobot/pull/1897
- fix: force save_memory in consolidation by @Re-bin in https://github.com/HKUDS/nanobot/pull/1909
- feat(channels): add "restart" command by @groudas in https://github.com/HKUDS/nanobot/pull/1751
- feat(feishu): add global group mention policy by @Zeknes in https://github.com/HKUDS/nanobot/pull/1768
- feat(telegram): support reply-to-message context (text and media) by @Schokobecher in https://github.com/HKUDS/nanobot/pull/1900
- feat: Add VolcEngine and BytePlus (Pay-per-use & Coding Plan) support by @Maaannnn in https://github.com/HKUDS/nanobot/pull/1608
- fix: preserve interactive CLI formatting for async subagent output by @ducheng121 in https://github.com/HKUDS/nanobot/pull/1930
- fix: catch BaseException in MCP connection to handle CancelledError by @chengyongru in https://github.com/HKUDS/nanobot/pull/1953
- fix(qq): restore plain text replies for legacy clients by @tsubasakong in https://github.com/HKUDS/nanobot/pull/1941
- [紧急]修复we_chat在pyproject.toml配置的问题 by @ALIZE126 in https://github.com/HKUDS/nanobot/pull/1919
- fix(restart): use -m nanobot for Windows compatibility by @chengyongru in https://github.com/HKUDS/nanobot/pull/1958
- fix(memory): validate save_memory payload before persisting by @shenchengtsi in https://github.com/HKUDS/nanobot/pull/1810
- feat(ci): add GitHub Actions workflow for test directory by @JiajunBernoulli in https://github.com/HKUDS/nanobot/pull/1916
- docs: correct BaiLian dashscope apiBase endpoint by @tsubasakong in https://github.com/HKUDS/nanobot/pull/1949
- Integrate Langsmith for conversation tracking by @korruz in https://github.com/HKUDS/nanobot/pull/1920
- feat(web): add configurable web search providers with key-missing fallback by @chris-alexander in https://github.com/HKUDS/nanobot/pull/398
- chore: bump wecom-aibot-sdk-python to >=0.1.5 by @chengyongru in https://github.com/HKUDS/nanobot/pull/1981
- feat: channel plugin architecture with decoupled configs by @Re-bin in https://github.com/HKUDS/nanobot/pull/1982
- fix(channels login): add shell=True for npm subprocess calls on Windows by @gongpx20069 in https://github.com/HKUDS/nanobot/pull/1479
- fix(cron, heartbeat): prevent notification spam from cron and heartbeat tasks by @SJK-py in https://github.com/HKUDS/nanobot/pull/1973
- feat:在MCP注册时指定启用工具以便让agent识别更准确并且减少token消耗 by @lvqiushi in https://github.com/HKUDS/nanobot/pull/1965
- fix: add exception handling to prevent agent loop crash by @chengyongru in https://github.com/HKUDS/nanobot/pull/1999
- fix(telegram): avoid media filename collisions by @Protocol-zero-0 in https://github.com/HKUDS/nanobot/pull/1796
- feat(feishu): implement message reply/quote support by @mru4913 in https://github.com/HKUDS/nanobot/pull/1963
- feat(feishu): display tool calls in code block messages + fix empty by @nne998 in https://github.com/HKUDS/nanobot/pull/1966
- Support
openrouter/*models by @rick2047 in https://github.com/HKUDS/nanobot/pull/2026 - fix: filter image_url for non-vision models at provider layer by @coldxiangyu163 in https://github.com/HKUDS/nanobot/pull/1901
- Fix builtin skills inaccessible when restrictToWorkspace is enabled by @benlenarts in https://github.com/HKUDS/nanobot/pull/2037
- Feat/dingtalk multimedia enhance by @chengyongru in https://github.com/HKUDS/nanobot/pull/2034
- fix(heartbeat): inject current datetime into Phase 1 prompt by @who96 in https://github.com/HKUDS/nanobot/pull/2038
- docs: add branching strategy and CONTRIBUTING guide by @chengyongru in https://github.com/HKUDS/nanobot/pull/2021
- fix(loop): restore /new immediate return with safe background consolidation by @chengyongru in https://github.com/HKUDS/nanobot/pull/1962
- feat: implement async memory background consolidation by @nne998 in https://github.com/HKUDS/nanobot/pull/1961
- Fix orphan tool results in truncated session history by @xx2689 in https://github.com/HKUDS/nanobot/pull/2075
- fix(cli): stop spinner before printing tool progress lines by @who96 in https://github.com/HKUDS/nanobot/pull/2039
- qol: add version id to log output by @pve in https://github.com/HKUDS/nanobot/pull/2058
New Contributors
- @ailuntz made their first contribution in https://github.com/HKUDS/nanobot/pull/1784
- @Protocol-zero-0 made their first contribution in https://github.com/HKUDS/nanobot/pull/1797
- @greyishsong made their first contribution in https://github.com/HKUDS/nanobot/pull/1855
- @dingyanyi2019 made their first contribution in https://github.com/HKUDS/nanobot/pull/1859
- @lailoo made their first contribution in https://github.com/HKUDS/nanobot/pull/1848
- @yapex made their first contribution in https://github.com/HKUDS/nanobot/pull/1856
- @letzdoo-js made their first contribution in https://github.com/HKUDS/nanobot/pull/1863
- @ethanclaw made their first contribution in https://github.com/HKUDS/nanobot/pull/1868
- @for13to1 made their first contribution in https://github.com/HKUDS/nanobot/pull/1885
- @WhalerO made their first contribution in https://github.com/HKUDS/nanobot/pull/1874
- @groudas made their first contribution in https://github.com/HKUDS/nanobot/pull/1751
- @Zeknes made their first contribution in https://github.com/HKUDS/nanobot/pull/1768
- @Schokobecher made their first contribution in https://github.com/HKUDS/nanobot/pull/1900
- @Maaannnn made their first contribution in https://github.com/HKUDS/nanobot/pull/1608
- @ducheng121 made their first contribution in https://github.com/HKUDS/nanobot/pull/1930
- @tsubasakong made their first contribution in https://github.com/HKUDS/nanobot/pull/1941
- @ALIZE126 made their first contribution in https://github.com/HKUDS/nanobot/pull/1919
- @JiajunBernoulli made their first contribution in https://github.com/HKUDS/nanobot/pull/1916
- @korruz made their first contribution in https://github.com/HKUDS/nanobot/pull/1920
- @SJK-py made their first contribution in https://github.com/HKUDS/nanobot/pull/1973
- @lvqiushi made their first contribution in https://github.com/HKUDS/nanobot/pull/1965
- @mru4913 made their first contribution in https://github.com/HKUDS/nanobot/pull/1963
- @nne998 made their first contribution in https://github.com/HKUDS/nanobot/pull/1966
- @rick2047 made their first contribution in https://github.com/HKUDS/nanobot/pull/2026
- @benlenarts made their first contribution in https://github.com/HKUDS/nanobot/pull/2037
- @who96 made their first contribution in https://github.com/HKUDS/nanobot/pull/2038
- @xx2689 made their first contribution in https://github.com/HKUDS/nanobot/pull/2075
Full Changelog: https://github.com/HKUDS/nanobot/compare/v0.1.4.post4...v0.1.4.post5