Releases: HKUDS/nanobot
Release list
v0.1.4.post3
🐈 nanobot v0.1.4.post3 just dropped — 33 PRs merged, 16 new contributors! You guys are unstoppable 🔥
This release is all about making the agent smarter by seeing less junk: cleaner context, hardened session history, and fewer ghost messages. Less noise in → less hallucination out. Plus a shiny new Matrix channel and experimental thinking mode.
Highlights
- Agent Loop Hardening — Empty assistant messages (no content, no tool calls) are now filtered instead of poisoning context; LLM error responses are no longer saved to history, preventing permanent 400-error loops; message tool suppression scoped to same-channel only (#1314, #1198, #1206)
- Context Noise Reduction — Runtime metadata (time, channel, chat ID) separated into an untrusted layer and excluded from session history, so the agent sees only what matters — fewer tokens, less confusion, less hallucination (#1126, #1222)
- Session Safety — Base64 images stripped from history to prevent context overflow; null responses no longer corrupt future turns (#1191, #1314)
- Matrix Channel — Full Matrix (Element) chat channel support with E2EE, media uploads, and typing indicators (#420, #1239)
- Provider Compatibility — Short alphanumeric
tool_call_idfor Mistral; list-type tool arguments handled gracefully; explicit provider selection in config (#1293, #1294, #1214, #1316) - Thinking Mode (experimental) — New
reasoning_effortconfig enables LLM reasoning for supported models; session history preservesreasoning_contentandthinking_blocksacross turns (#1351, #1330, #1074) - Subagent Improvements —
/stopcancels spawned subagents; streamlined prompt eliminates dead code and reuses ContextBuilder (#1180, #1347) - Feishu — Interactive card text extraction fix, configurable reaction emoji, corrected bot permissions (#1323, #1257, #1317, #1348)
- DingTalk — Images and media sent as proper message types instead of plain-text links (#1337)
- Telegram — Media groups aggregated into a single inbound message (#1258)
- QQ — Fixed C2C reply permissions, disabled file log on read-only filesystems (#1307, #1346)
- WhatsApp — Message deduplication prevents redundant agent processing (#1325)
- Shell & Security — Full Windows path parsing in workspace guard; configurable
path_appendfor subprocess PATH (#1286, #1083) - Memory & Concurrency — WeakValueDictionary for consolidation locks eliminates race conditions and manual cleanup (#1326)
- Workspace — Automatic template synchronization restores critical files on startup (#1253)
What's Changed
- fix: preserve reasoning_content in messages for thinking-enabled models by @haosenwang1018 in #1074
- feat/fix(exec): add path_append config to extend PATH for subprocess by @aiguozhi123456 in #1083
- feat: add stable system layer + untrusted runtime context layer by @pikaxinge in #1126
- feat: /stop cancels spawned subagents via session tracking by @coldxiangyu163 in #1180
- feat: support explicit provider selection in config by @Re-bin in #1214
- Fix assistant messages without tool calls not being saved to session history by @VITOHJL in #1198
- Fix: The base64 images are stored in the session history, causing context overflow. by @dxtime in #1191
- feat: add Matrix (Element) chat channel support by @tanishra in #420
- fix(agent): only suppress final reply when message tool sends to same… by @chengyongru in #1206
- fix(web): use self.api_key instead of undefined api_key by @yongPhone in #1228
- fix(telegram): aggregate media groups into a single inbound message by @KimGLee in #1258
- feat(feishu): make reaction emoji configurable by @kimkitsuragi26 in #1257
- feat: automatic workspace template synchronization by @honjiaxuan in #1253
- Fix Matrix channel initialization and configuration by @tanishra in #1239
- fix(agent): avoid persisting runtime context metadata into history by @KimGLee in #1222
- fix: update heartbeat tests to match two-phase tool-call architecture by @intelliot in #1200
- Fix(prompt): guide llm grep using timestamp by @aiguozhi123456 in #1278
- fix: generate short alphanumeric tool_call_id for Mistral compatibility by @Re-bin in #1293
- fix: remove overly broad "codex" keyword from openai_codex provider by @nikolasdehor in #1316
- fix: prevent session poisoning from null/error LLM responses by @nikolasdehor in #1314
- fix the feishu interactive message text cannot be extracted by @azhengzz in #1323
- Modify Feishu bot permissions in README by @yankeguo in #1317
- fix: pass msg_id in QQ C2C reply to avoid proactive message permissio… by @GabrielWithTina in #1307
- fix: handle list-type tool arguments in _tool_hint by @Michael-lhh in #1294
- fix(shell): parse full Windows absolute paths in workspace guard by @fengxiaohu in #1286
- refactor: use WeakValueDictionary for consolidation locks by @Re-bin in #1326
- fix: add message deduplication to WhatsApp channel by @spartan077 in #1325
- feat(dingtalk): send images as image messages, keep files as attachments by @asdf17128 in #1337
- refactor: streamline subagent prompt by reusing ContextBuilder and SkillsLoader by @Re-bin in #1347
- fix(qq): disable botpy file log to fix read-only filesystem error by @zerone0x in #1346
- feat: add reasoning_effort config to enable LLM thinking mode by @Re-bin in #1351
- fix(lark): Remove non-existent stop() call on Lark ws.Client when enable lark channel by @yorkhellen in #1348
- fix(providers): allow reasoning_content in message history by @fengxiaohu in #1330
New Contributors
- @aiguozhi123456 made their first contribution in #1083
- @VITOHJL made their first contribution in #1198
- @tanishra made their first contribution in #420
- @yongPhone made their first contribution in #1228
- @kimkitsuragi26 made their first contribution in #1257
- @honjiaxuan made their first contribution in #1253
- @intelliot made their first contribution in #1200
- @azhengzz made their first contribution in #1323
- @yankeguo made their first contribution in #1317
- @GabrielWithTina made their first contribution in #1307
- @Michael-lhh made their first contribution in #1294
- @fengxiaohu made their first contribution in #1286
- @spartan077 made their first contribution in #1325
- @asdf17128 made their first contribution in #1337
- @zerone0x made their first contribution in #1346
- @yorkhellen made their first contribution in #1348
Full Changelog: v0.1.4.post2...v0.1.4.post3
v0.1.4.post2
🐈 nanobot v0.1.4.post2 is here — 32 PRs merged, 14 new contributors! The community is on fire 🔥
This release focuses on reliability: a completely redesigned heartbeat, prompt caching for lower API costs, hardened provider compatibility, and dozens of channel-level fixes. Fewer surprises, more stability.
Highlights
- Heartbeat Overhaul — Replaced fragile token detection with a virtual tool-call decision mechanism; heartbeat is now truly silent when idle (#1102, #1054, #1039, #1036)
- Prompt Cache Optimization — Dynamic context (time, session) moved from system prompt to user message, enabling persistent prompt cache hits (#1115)
- Agent Reliability — Behavioral constraints, full tool history in context, and actionable error hints (#1046)
- Slack — Thread-isolated sessions, mrkdwn post-processing for bold/header artifacts, socket error handling (#1048, #1107, #957)
- Feishu — Rich-text image extraction in post messages, file download API fix (#1090, #986)
- Email — Proactive sends work even when autoReply is disabled, smarter dedup eviction (#1077, #959)
- Provider Fixes — DeepSeek
reasoning_contentnormalization, empty content block filtering, API key hot-reload via@property(#947, #955, #949, #1071, #1098) - Security — Path traversal prevention using
relative_to()instead ofstartswith()(#956) - MCP — Configurable timeouts to prevent agent hangs, removed conflicting defaults for HTTP transport (#950, #1062)
- Memory — Fixed TypeError when LLM returns dict arguments during consolidation (#1061)
- Discord — Break typing indicator loop on persistent HTTP failure (#1029)
- CLI — DingTalk, QQ, Email added to
nanobot statusoutput (#982) - Packaging — Workspace templates moved to
nanobot/templates/for proper pip packaging (#1043) - Docs — systemd user service deployment guide (#968)
What's Changed
- fix: change VolcEngine litellm prefix from openai to volcengine by @init-new-world in #951
- fix(context): Fix 'Missing
reasoning_contentfield' error for deepseek provider. by @homorunner in #947 - Remove redundant tools description by @vincentchen0x2-dev in #939
- feat(cli): add DingTalk, QQ, and Email to channels status output by @luoyingwen in #982
- fix(security): prevent path traversal bypass via startswith check by @nghiahsgs in #956
- fix(slack): add exception handling to socket listener by @nghiahsgs in #957
- fix(session): handle errors in legacy session migration by @nghiahsgs in #958
- fix(email): evict oldest half of dedup set instead of clearing entirely by @nghiahsgs in #959
- fix(loop): serialize /new consolidation and preserve session on archival failure by @Athemis in #881
- fix(qq): make start() long-running per base channel contract by @nghiahsgs in #962
- docs: add systemd user service instructions to README by @katafractari in #968
- fix(mcp): add 30s timeout to MCP tool calls to prevent agent hangs by @eliumusk in #950
- fix(providers): normalize empty reasoning_content to None at provider level by @nghiahsgs in #955
- fix(feishu): replace file.get with message_resource.get to fix feishu file download problem by @FloRainRJY in #986
- fix(provider): filter empty text content blocks causing API 400 by @eliumusk in #949
- feat(channels): add send_progress option to control progress message … by @luoyingwen in #1000
- fix(heartbeat): route heartbeat runs to enabled chat context by @KimGLee in #1036
- refactor: move workspace/ to nanobot/templates/ for packaging by @Re-bin in #1043
- improve agent reliability: behavioral constraints, full tool history, error hints by @Re-bin in #1046
- feat(slack): isolate session context per thread by @pjbakker in #1048
- fix(heartbeat): deliver agent response to user and fix HEARTBEAT_OK detection by @Re-bin in #1054
- fix(heartbeat): make start idempotent and require exact HEARTBEAT_OK by @cyzlmh in #1039
- fix: break Discord typing loop on persistent HTTP failure by @nikolasdehor in #1029
- fix(heartbeat): replace HEARTBEAT_OK token with virtual tool-call decision by @Re-bin in #1102
- fix(web): resolve API key on each call + improve error message by @coldxiangyu163 in #1098
- Fix: memory consolidation TypeError when LLM returns dict arguments by @suportly in #1061
- feat(feishu): support images in post (rich text) messages by @xzq-xu in #1090
- fix(email): allow proactive sends when autoReplyEnabled is false by @chengyongru in #1077
- **fix(mcp): Remove default timeout for HTTP transport to avoid tool imeout conflicts by @dulltackle in #1062
- fix: resolve API key at call time so config changes take effect without restart by @haosenwang1018 in #1071
- fix: stabilize prompt prefix for better cache reuse by @pikaxinge in #1115
- fix(slack): post-process slackify_markdown to fix leftover bold artifacts by @devops-tomorrow-io in #1107
New Contributors
- @homorunner made their first contribution in #947
- @vincentchen0x2-dev made their first contribution in #939
- @luoyingwen made their first contribution in #982
- @nghiahsgs made their first contribution in #956
- @katafractari made their first contribution in #968
- @eliumusk made their first contribution in #950
- @FloRainRJY made their first contribution in #986
- @cyzlmh made their first contribution in #1039
- @suportly made their first contribution in #1061
- @xzq-xu made their first contribution in #1090
- @dulltackle made their first contribution in #1062
- @haosenwang1018 made their first contribution in #1071
- @pikaxinge made their first contribution in #1115
- @devops-tomorrow-io made their first contribution in #1107
Full Changelog: v0.1.4.post1...v0.1.4.post2
v0.1.4.post1
🎉 Another big release from the 🐈 nanobot community — thanks to all contributors, especially our 19 new ones!
This release brings major channel improvements across Feishu, Slack, and Discord, a new provider, prompt caching, and a significant agent loop refactor. More reliable, more capable, leaner code 😄.
Highlights
- Feishu Media — Bot can now send and receive images, audio, and files (#844, #922)
- Slack Media Upload — Send files directly from the agent (#904)
- Discord Long Messages — Automatically splits messages exceeding 2000 characters (#900)
- VolcEngine Provider — New LLM provider support (#812)
- Prompt Caching — Anthropic and OpenRouter cache_control support for lower costs (#854, #905)
- MCP Auth Headers — Custom HTTP headers for authenticated MCP servers (#807)
- Telegram Improvements — Configurable reply-to behavior, /help bypasses ACL (#879, #824)
- CLI Subagent Support — CLI now routes through message bus, enabling full subagent support (#908)
- Reliable Memory — Memory consolidation uses structured tool calls instead of fragile JSON parsing (#866)
- Leaner Agent Loop — Extracted memory logic, merged redundant methods, -31% lines (#930)
- Smarter File Editing — edit_file now shows a diff when old_text doesn't match (#921)
- Bug Fixes — MCP reconnection, session key persistence, duplicate replies, cron execution, and more (#892, #902, #832, #821, #823, ...)
What's Changed
- feat(feishu): support sending images, audio, and files by @KinglittleQ in #844
- fix: Codex provider routing for GitHub Copilot models by @Molunerfinn in #836
- fix: wait for killed process after shell timeout to prevent fd leaks by @nikolasdehor in #851
- Fix safety guard false positive on 'format' in URLs by @rubychilds in #820
- fix: remove dead pub/sub code from MessageBus by @AlexanderMerkel in #870
- fix: use loguru native formatting to prevent KeyError on curly braces by @nikolasdehor in #864
- Fix: Add UTF-8 encoding and unicode support for JSON output by @chtangwin in #455
- fix(tools): resolve relative file paths against workspace by @omdv in #653
- fix(cron): validate timezone inputs when adding jobs by @Athemis in #763
- fix(agent): handle non-string values in memory consolidation by @jswxharry in #644
- feat: add Anthropic prompt caching via cache_control by @tercerapersona in #854
- fix: allow retry for models that send interim text before tool calls by @nikolasdehor in #825
- fix: prevent duplicate memory consolidation tasks per session by @nikolasdehor in #823
- fix: /help command bypasses ACL on Telegram by @nikolasdehor in #824
- feat: Add VolcEngine LLM provider support by @init-new-world in #812
- feature: Added custom headers for MCP Auth use. by @dxtime in #807
- feat: Agent is able to reply to original message (Telegram Channel) by @DaryeDev in #815
- fix: make cron run command actually execute the agent by @ClaytonWWilson in #821
- feat: make Telegram reply-to-message behavior configurable, default false by @Re-bin in #879
- fix: fixed not logging tool uses if a think fragment had them attached. by @DaryeDev in #833
- fix: Resolve "Unrecognized chat message" error for StepFun and strict providers by @Tevkanbot in #795
- feat: add OpenRouter prompt caching via cache_control by @tercerapersona in #905
- feat(slack): add media file upload support by @pjbakker in #904
- fix: convert remaining f-string logger calls to loguru native format by @nikolasdehor in #903
- fix: split Discord messages exceeding 2000-character limit by @nikolasdehor in #900
- fix: store session key in metadata to avoid lossy filename reconstruction by @nikolasdehor in #902
- fix(agent): avoid duplicate email replies when message tool already sends by @KimGLee in #832
- fix: allow MCP reconnection after transient failure by @nikolasdehor in #892
- refactor: route CLI interactive mode through message bus by @Re-bin in #908
- feat(feishu): add multimedia download support for images, audio and files by @coldxiangyu163 in #922
- fix(tools): provide detailed error messages in edit_file when old_text not found by @themavik in #921
- fix: preserve interim content as fallback when retry produces empty response by @nikolasdehor in #887
- refactor(loop): remove interim text retry, use system prompt constraint instead by @Re-bin in #928
- fix(memory): Enforce memory consolidation schema with a tool call by @rudy-of-the-corner in #866
- refactor: extract memory consolidation to MemoryStore, slim down agent loop by @Re-bin in #930
- fix(agent): keep empty fallback sentinel CLI-only by @Athemis in #926
New Contributors
- @KinglittleQ made their first contribution in #844
- @Molunerfinn made their first contribution in #836
- @nikolasdehor made their first contribution in #851
- @rubychilds made their first contribution in #820
- @AlexanderMerkel made their first contribution in #870
- @chtangwin made their first contribution in #455
- @omdv made their first contribution in #653
- @Athemis made their first contribution in #763
- @jswxharry made their first contribution in #644
- @tercerapersona made their first contribution in #854
- @init-new-world made their first contribution in #812
- @dxtime made their first contribution in #807
- @ClaytonWWilson made their first contribution in #821
- @Tevkanbot made their first contribution in #795
- @pjbakker made their first contribution in #904
- @KimGLee made their first contribution in #832
- @coldxiangyu163 made their first contribution in #922
- @rudy-of-the-corner made their first contribution in #866
Full Changelog: v0.1.4...v0.1.4.post1
v0.1.4
🎉 Another big release from the 🐈 nanobot community — thanks to all contributors, especially our 18 new ones!
This release adds MCP tool server support, real-time progress streaming so users actually see what the agent is doing, and a wave of new providers (Custom OpenAI-compatible, GitHub Copilot, OpenAI Codex, SiliconFlow). Channels got a lot of love too — Telegram now handles media uploads and long messages, Slack got proper mrkdwn and thread replies, Feishu supports rich text. We also added Docker Compose for one-command deployment, scoped sessions to workspace, and switched to json_repair for bulletproof LLM response parsing. Less silence, more providers, better channels — that's the nanobot way.
Highlights
- MCP Support — Connect external tool servers via Model Context Protocol (#554)
- Progress Streaming — Agent shows what it's doing during multi-step tool execution (#802)
- New Providers — Custom OpenAI-compatible endpoints, GitHub Copilot, OpenAI Codex, SiliconFlow (#786, #720, #312, #151, #630)
- Channel Improvements — Telegram media uploads & message splitting, Slack thread replies & mrkdwn, Feishu rich text (#747, #694, #717, #784, #629, #593)
- Docker Compose — One-command deployment (#765)
- Workspace-scoped Sessions — Sessions now live inside workspace with legacy migration (#713)
- Robust JSON Parsing — json_repair for handling malformed LLM responses (#664)
What's Changed
- 优化飞书卡片信息中的markdown标题显示 by @C-Li in #593
- feat: add custom provider and non-destructive onboard by @Re-bin in #604
- Upgrade Onboarding feature by @lukemilby in #583
- fix: bug #370, support temperature configuration by @wymcmh in #560
- fix: Cache expiration issue related fixes by @chengyongru in #590
- 增加支持飞书富文本内容接收。Add support for receiving Feishu rich text content. by @C-Li in #629
- fix(providers): clamp max_tokens to >= 1 before calling LiteLLM by @themavik in #617
- 修复corn忽略时区设置的问题,并在缺省时自动使用本机时区 by @C-Li in #625
- feat(tools): add mcp support by @SergioSV96 in #554
- fix: use json_repair for robust LLM response parsing by @Re-bin in #664
- Add OpenAI Codex OAuth login and provider support by @pinhua33 in #151
- Fix/Convert Markdown to Slack's mrkdwn formatting by @alekwo in #704
- fix(telegram): Slash commands failing access check due to missing username in sender_id by @TomLisankie in #701
- fix(telegram): split long messages to avoid Message is too long error by @zhouzhuojie in #694
- slack: use slackify-markdown for proper mrkdwn formatting by @xek in #717
- feat: add ClawHub skill by @Re-bin in #758
- fix(cron): preserve timezone for cron schedules by @jcpoyser in #744
- feat: Added GitHub Copilot as Provider by @DaryeDev in #720
- fix: avoid sending empty content entries in assistant messages by @zhuhui-in in #748
- feat: Allow Agent to upload media files (voice, pictures, documents) to Telegram Channel by @DaryeDev in #747
- fix(config): mcpServers env variables should not be converted to snake case by @fyhertz in #766
- Enable Cron Tool on CLI Agent. by @DaryeDev in #746
- feat: add Docker Compose support for easy deployment by @srajasimman in #765
- feat: add custom provider with direct openai-compatible support by @Re-bin in #786
- slack: Added replyInThread logic and custom react emoji in config by @hyudryu in #784
- [ADD] GitHub copilot support by @jeroenev in #312
- feat: add SiliconFlow provider support by @mtics in #630
- Scope Session Storage to Workspace (with legacy fallback) by @kiplangatkorir in #713
- feat: stream intermediate progress to user during tool execution by @Re-bin in #802
New Contributors
- @C-Li made their first contribution in #593
- @lukemilby made their first contribution in #583
- @wymcmh made their first contribution in #560
- @chengyongru made their first contribution in #590
- @themavik made their first contribution in #617
- @pinhua33 made their first contribution in #151
- @alekwo made their first contribution in #704
- @TomLisankie made their first contribution in #701
- @zhouzhuojie made their first contribution in #694
- @xek made their first contribution in #717
- @jcpoyser made their first contribution in #744
- @DaryeDev made their first contribution in #720
- @zhuhui-in made their first contribution in #748
- @fyhertz made their first contribution in #766
- @srajasimman made their first contribution in #765
- @hyudryu made their first contribution in #784
- @jeroenev made their first contribution in #312
- @mtics made their first contribution in #630
Full Changelog: v0.1.3.post7...v0.1.4
v0.1.3.post7
🎉 Another big release from the 🐈 nanobot community — thanks to all contributors, especially our 8 new ones!
This release fixes a critical WhatsApp bridge security vulnerability, redesigns the memory system from the ground up (two plain files + grep, no RAG), and adds interleaved chain-of-thought for smarter multi-step reasoning. We also welcome MiniMax as a new provider, and unified /new command across all platforms. Less code, more reliable — that's the nanobot way.
What's Changed
- Support MoChat Channel, an agent-first IM platform by @tjb-tech in #389
- fixed dingtalk exception. by @Mrart in #439
- feat: add MiniMax provider support via LiteLLM by @tars90percent in #307
- fix:cli input clean and display issue by @zcxixixi in #488
- fix: pydantic deprecation configdict by @SergioSV96 in #516
- feat: add interleaved chain-of-thought to agent loop by @Re-bin in #538
- feat(cron): add 'at' parameter for one-time scheduled tasks by @3927o in #533
- fix(subagent): add edit_file tool and time context to sub agent by @Re-bin in #543
- feat: redesign memory system — two-layer architecture with grep-based retrieval by @Re-bin in #565
- feat: add /new command by @Qinnnnnn in #569
- Add max iterations info to fallback message by @3927o in #567
- fix(security): bind WhatsApp bridge to localhost + optional token auth by @Re-bin in #587
New Contributors
- @tjb-tech made their first contribution in #389
- @Mrart made their first contribution in #439
- @tars90percent made their first contribution in #307
- @SergioSV96 made their first contribution in #516
- @Re-bin made their first contribution in #538
- @3927o made their first contribution in #533
- @Qinnnnnn made their first contribution in #569
Full Changelog: v0.1.3.post6...v0.1.3.post7
v0.1.3.post6
🎉 The 🐈 nanobot community keeps growing — thanks to all the amazing contributors who made this release possible!
Tip
Due to security concerns, this version has a vulnerability in WhatsApp. Please do not install this version. Instead, install v0.1.3.post7 or higher.
This release brings more channels (DingTalk, Slack, Email, QQ), a smoother nanobot agent CLI experience, provider cleanup, and README polish. Want to see where we're heading? Check out our roadmap discussion: From Lightweight Agent to Agent Kernel — we'd love your feedback! 👉 #431
What's Changed
- feat(channels): add DingTalk channel support by @tianrking in #219
- Codex/fix cli input by @zcxixixi in #326
- Drop unsupported parameters for providers. by @chaowu2009 in #225
- Improve
nanobot agentCLI chat rendering and input experience by @chris-alexander in #360 - feat(email): add consent-gated IMAP/SMTP email channel by @zcxixixi in #248
- feat(channels): add Slack Socket Mode support by @kamalakarrao in #116
- Update README.md by @JakeRowe19 in #381
- feat: Add QQ channel integration with botpy SDK by @yinwm in #383
New Contributors
- @tianrking made their first contribution in #219
- @zcxixixi made their first contribution in #326
- @chaowu2009 made their first contribution in #225
- @chris-alexander made their first contribution in #360
- @kamalakarrao made their first contribution in #116
- @JakeRowe19 made their first contribution in #381
- @yinwm made their first contribution in #383
Full Changelog: v0.1.3.post5...v0.1.3.post6
v0.1.3.post5
🎉 The 🐈 nanobot community keeps growing — thanks to all the amazing contributors who made this release possible!
Tip
Due to security concerns, this version has a vulnerability in WhatsApp. Please do not install this version. Instead, install v0.1.3.post7 or higher.
🐈 nanobot now supports more LLMs (DashScope/Qwen, Moonshot/Kimi, DeepSeek), hangs out in more places (Discord, Feishu), and got a serious security checkup. 🐈 nanobot has you covered.
What's Changed
- add feishu channel support by @huhu-tiger in #84
- feat: add DeepSeek provider support by @kyya in #38
- chore: change 'depoly' to 'deploy' by @vivganes in #174
- feat: added runtime environment summary to system prompt by @DeeJ4yNg in #107
- feat: discord support by @anunay999 in #24
- feat: add Moonshot provider support by @Rheasilvia in #202
- Security: Critical vulnerabilities found - Shell Injection, Path Traversal, and LiteLLM RCE by @kingassune in #77
- fix: correct API key environment variable for vLLM mode by @popcell in #42
- [Fix-204]: use correct ZAI_API_KEY for Zhipu/GLM models #204 by @wcmolin in #205
- Feat: Add DashScope support for improved accessibility by @ZJUCQR in #46
- Fixes Access Denied because only the LID was used. by @adrianhoehne in #287
- feat: add telegram proxy support and add error handling for channel s… by @adieUkid in #289
New Contributors
- @huhu-tiger made their first contribution in #84
- @kyya made their first contribution in #38
- @vivganes made their first contribution in #174
- @DeeJ4yNg made their first contribution in #107
- @Rheasilvia made their first contribution in #202
- @kingassune made their first contribution in #77
- @popcell made their first contribution in #42
- @wcmolin made their first contribution in #205
- @ZJUCQR made their first contribution in #46
- @adrianhoehne made their first contribution in #287
- @adieUkid made their first contribution in #289
Full Changelog: v0.1.3.post4...v0.1.3.post5
v0.1.3.post4
🎉 Thanks to all the amazing contributors who made this release possible!
Tip
Due to security concerns, this version has a vulnerability in WhatsApp. Please do not install this version. Instead, install v0.1.3.post7 or higher.
This release brings exciting new features including vLLM/local LLM support, Gemini & Zhipu & Bedrock providers, Telegram vision & voice support, Docker deployment, and important bug fixes. We're thrilled to see the 🐈nanobot community growing!
What's Changed
- feat: add vLLM/local LLM support by @ZhihaoZhang97 in #4
- Change default gateway port to 18790 by @Neutralmilkzzz in #8
- feat: add Zhipu API support and set glm-4.7-flash as default model by @SalimBinYousuf1 in #3
- Resolve PR #3 conflicts and fix issue #10 (detailed command logs) by @SalimBinYousuf1 in #15
- feat: add Gemini provider support by @anunay999 in #9
- feat: add vision support for image recognition in Telegram by @Lyt060814 in #12
- feat: Add uv as install method by @pve in #14
- feat: add voice transcription support with groq (fixes #13) by @SalimBinYousuf1 in #17
- feat: Dockerfile and instructions by @pve in #18
- docs: update news date from 2025 to 2026 by @tlguszz1010 in #43
- feat: add Amazon Bedrock support by @shaun0927 in #21
- fix: add Telegram channel to
channels statuscommand by @WangCheng0116 in #26 - feat: improve web_fetch URL validation and security by @WangCheng0116 in #22
- fix: correct heartbeat token matching logic by @WangCheng0116 in #23
- fix: status command now respects workspace from config by @WangCheng0116 in #27
- Validate tool params and add tests by @kiplangatkorir in #28
- Harden exec tool with safety guard by @kiplangatkorir in #30
- fix: Use correct 'zai/' prefix for Zhipu AI models in LiteLLM by @pjperez in #32
New Contributors
- @ZhihaoZhang97 made their first contribution in #4
- @Neutralmilkzzz made their first contribution in #8
- @SalimBinYousuf1 made their first contribution in #3
- @anunay999 made their first contribution in #9
- @Lyt060814 made their first contribution in #12
- @pve made their first contribution in #14
- @tlguszz1010 made their first contribution in #43
- @shaun0927 made their first contribution in #21
- @WangCheng0116 made their first contribution in #26
- @kiplangatkorir made their first contribution in #28
- @pjperez made their first contribution in #32
Full Changelog: https://github.com/HKUDS/nanobot/commits/v0.1.3.post4