v0.2.8

karpathy/nn-zero-to-herov0.2.8Apr 30, 2026by github-actions[bot]

AI Summary

This update focuses on Model Context Protocol (MCP) integration, introducing CLI commands for MCP management and cross-platform serial hardware tool support. It also enhances agent capabilities with prompt layering and refines chat and tool feedback mechanisms.

Key Highlights

  • Added comprehensive MCP CLI commands (show, add, list, remove, test, edit)
  • Implemented cross-platform serial hardware tool support
  • Added CLI support for custom OpenAI-compatible endpoints
  • Enhanced agent with structured prompt layering and capability slots

New Features

  • MCP CLI commands
  • Cross-platform serial hardware tool
  • CLI support for custom OpenAI-compatible endpoints
  • Structured prompt layering
  • Tool prompts migrated to capability slots
  • Unified reasoning and tool call visibility
  • MCP slash commands

Full Release Notes

## Changelog
* 2da05c2ad3b831e705f6be1ac8d5bd578b6ffc72   feat(mcp): add show, add, list, remove, test, edit cli commands
* 9d8f0dc877024a56646a0e9f5b98ddaa80dbe948   fix(mcp): send empty object instead of null for tool
* a7414608edb7c30aa70b1ee676d7de4c0edfa989 * fix build failed (#2723)
* a36472b55f06248e7dca48507df5bdae7a5d4800 Add CLI support for custom OpenAI-compatible endpoints and remove TUI (#2710)
* fc24676924e41b66e5812d470b283c672f57ccf8 Add cross-platform serial tool support (#2673)
* bc077db0ee4f3730183b18cde74ddd7581c4cb47 Deduplicate ParseDataAudioURL function
* 4ae11406d2118793848ef9f74627afbb74cd97cb Deduplicate further functions
* 451db2f5d8018c0d6ba1e922b65e0be6bce95413 Feat(channels): unify animated tool feedback across chat channels and Pico (#2622)
* f6bceb29a324461074136d25d40f2bf10e1c17c3 Fix Windows build flow
* 193e1a3cd0444a3da1fa9ee222e6c0e113dc5f5d Fix Windows build flow
* ccd19a48ce5cc22c578239a73d3eea61bd6d5d4b Fix Windows build flow (#2487)
* e901e70c1493aede97e5fb7d9022fc76ea264d95 Fix linting
* 6e1fab80e2f1da03605565e2dce20019d6be256f Fix/build macos launcher failed (#2724)
* c71146b1d53f4f5e57a25a52c29268ec5b854a40 Functions deduplication
* 293477b02a13bb47515c8ec1dca23150844e6b5b Keep launcher locale changes from mutating shared web-search routing (#2573)
* 0d1b041d743025ab499bc37ebf58279351fe71dc Merge pull request #2485 from afjcjsbx/fix/telegram-oauth-links
* 68ceb54b361eb8f5bdd68c267bf36a4614a9d312 Merge pull request #2535 from afjcjsbx/feat/mcp-channel-commands
* 0c0a58255985238bbdd9daae3a1fdc432d00b0c7 Merge pull request #2586 from kunalk16/fix-functions-deduplication
* 279c496bb2c7a530e58cd497d50e20c87fef7856 Merge pull request #2613 from sky5454/tmp_govet_fix
* f4400472633f46cf80ebaaaa643229598dc53cba Merge pull request #2640 from sipeed/dependabot/go_modules/github.com/aws/aws-sdk-go-v2/service/bedrockruntime-1.50.5
* 8d51d306b32ae2024e02b7a97c9d051b3d8b25be Merge pull request #2641 from afjcjsbx/feat/mcp-cli
* 77be169db4d63770d8ca0b5da2d983bf236ae2d0 Merge pull request #2654 from SiYue-ZO/fix/launcher-hide-windows-console-flash
* caaad601afd81c599c803f1d6d1d2d5ad0afa55d Merge pull request #2656 from alexhoshina/prompt-layering
* 41f4d95597c7e2574f93bf5965e150afdfb97060 Merge pull request #2657 from lc6464/fix-deepseek-v4-thinking-history
* 93e9bddc6e074aaa3c05b15d460f6834d25b6115 Merge pull request #2659 from SiYue-ZO/fix/thought-bubble-collapse-state
* 2f91cc0a805a4f8ada861c277029d6bbcfd84caf Merge pull request #2660 from afjcjsbx/fix/tool-feedback-json-format
* 726ef4fa99cf4f7583d61652bca3abc4b630d751 Merge pull request #2661 from SiYue-ZO/feature/toggle-thought-visibility
* f90e756e2197112c85d20bbf85345ba47c57c112 Merge pull request #2663 from SiYue-ZO/feature/config-save-restart-prompts
* 04b62745e48f5a09478c93e8f07aad1733788b9e Merge pull request #2664 from afjcjsbx/fix/mcp-http-session-lifecycle
* 788f76f42263c20e9ed60f47cad428bebc5eb28f Merge pull request #2666 from afjcjsbx/fix/mcp-nil-arguments
* 39dec354089b307c6bc3cd85c5b3df17f64816e4 Merge pull request #2672 from lc6464/fix-tool-calls-thought-ui
* db1bc6a1f8d029df8a28ab5cd8d5610f9d1c7a16 Merge pull request #2689 from afjcjsbx/fix/cron-session-key-propagation
* 76164701370498463f610d43503c6d6fd4eb1b1d Revert deduplication
* 73594a07ca394f052517d58121892449a3d216c0 build(deps): bump github.com/aws/aws-sdk-go-v2/config (#2633)
* ac4db35c0b6304c3f690a3a0d2ad0a0bb9ac8abd build(deps): bump github.com/aws/aws-sdk-go-v2/service/bedrockruntime
* 743d7e69f2f81ca18d737a21014705531b450c71 build(deps): bump github.com/larksuite/oapi-sdk-go/v3 (#2637)
* 047a904b4f0b4fe248416bc3e76ac8257b6eeadb build(deps): bump github.com/rs/zerolog from 1.35.0 to 1.35.1 (#2635)
* ffd22c7fb6e03b72b8529357bc0d8faa4fe1987e build(deps): bump i18next from 26.0.3 to 26.0.7 in /web/frontend (#2632)
* 39d7b3a63ea33582ed7f3cecc27b07393097ddcf build(deps): bump react-i18next from 17.0.3 to 17.0.4 in /web/frontend (#2631)
* 47a881b11fc2da7f62af201f0e9e37ab14d9d090 build(deps-dev): bump typescript-eslint in /web/frontend (#2638)
* 1dba8e9e917cd89ae30d503d44aed65dfb1391b1 build(deps-dev): bump vite from 8.0.8 to 8.0.10 in /web/frontend (#2634)
* 494cc381b5bf390bcd4243627ef12dd78dd50ec6 build(onboard): support codespace placeholder and path checks
* a977a92729052214ca6a8428dc6c656eba9a50df build(web): avoid shell-expanding powershell vars in windows recipe
* 688d47d23638a3e94041251bebb2d0b855aa9d5d build: keep go generate on host during cross builds
* d0507df894aa7d75daca9650ec621d3d47b1a749 chore(isolation): fix govet shadow declaration of "err" shadows
* 175682f152c8639dbf30758cb13eb07a3e0681ca chore: refresh PR mergeability
* 78e4e59ac30df05747e1a8095837f2dde2819a05 chore: update WeChat group QR code (#2667)
* 023ca2e4c12e1dbba1ac080a4da9e512e44d57d1 ci(release): split tag creation and release into separate workflows (#2614)
* 0161298154e7800f75bbff7fb23474b2f7541807 ci: add stale bot to auto-close inactive issues and PRs (#2685)
* 9fba52d0fa8f6510187085be0654286dd25ab95c ci: parallel macOS CGO launcher build, lowercase Docker tags, conditional Docker Hub login (#2643)
* 2baeee2834db58f220827e981c9991120923c421 docs(design): summarize hardware support and serial limits
* 2e65b1be833ab9d9bc5e707e622c74b47c2d48ba feat(agent): add structured prompt layering
* 48d89525918b7c45e6e9090d8bba4555d68e7a23 feat(agent): migrate tool prompts to capability slots
* 303ff8137de6ef680af1d7ab1746a0efc97df28d feat(chat): unify reasoning and tool call visibility
* 276f5425f0b8ac3e56891708ecda94625b4cd3c4 feat(commands): add MCP slash commands and tool details
* 2114e1a53fcd89e7beecfb27a1f9c4efee8a109b feat(config): wire serial tool into runtime and dashboard
* 5cd10b594af34184295cf67d03ca544967774ac3 feat(pico): add support for tool_calls in chat messages
* 9fc72c1fb328cf791da5ff239b45c087ea276349 feat(tool-feedback): add separate message mode for chat feedback (#2644)
* 0f52076762692521013c36d4e77da9a3cf463465 feat(tools): add cross-platform serial hardware tool
* 3316ee6923e940834e1bdc1da5be924015f660b0 feat(web): download files on frontend (#2563)
* afc600baeda2b6d4523a1ac79d63d6a8f4cd1834 feat: add config save and restart prompts
* d784ec4611a25ae9108f7c9bc00c3bdabc8f832f feat: add thought visibility toggle
* cbe6a0907c662490c95c32d4ded80d844791a7d8 feat: complete tool and model restart feedback
* 02d9a0d190edfa88350e46c7ee90dab80a603983 feat: track channel and web search restart requirements
* ddf2d7c65573da7db043aee49bdc5a2d29d1202f fix gateway boot signature after pico setup
* e5a69600782b5aa9a3bf4d7bfd6e272fce0ba69d fix lint
* dce29c181f183e6f3d6021b320fc0e21f244faed fix lint
* 9ca73b944f0620a91e0dbb71cd11183efb32af87 fix(agent): preserve prompt hook and cache semantics
* bfc37b784e31d531483163444a3bb1da9b9949dd fix(channels): bypass placeholder edits for thought and tool calls
* 5db008f3841bab4158069aa0b339f41db319583a fix(channels): dismiss tool feedback animation when turn ends via ResponseHandled (#2713)
* 1b9e7e32bdd7ad1e2c8559a3f7552df880095755 fix(chat): add `\r?` for regular expressions
* 9d42282672ec85c7777fba28af27d34a8acc832b fix(chat): tolerate animated legacy tool feedback parsing
* d6b38c42361bd423fd895909e647ed8503bba6b7 fix(chat): update tool_calls structure and ensure kind is always set
* ed687d62aef13468b040e66a0c4ad97b6ee80de7 fix(config): show precise malformed config diagnostics (#2415)
* 0bb0fc429a260e2dffdb95868191bd573d60e155 fix(cron): propagate sessionKey to prevent duplicate tool responses
* 62d0e34ec9fde97252ee07a6186f05f0bb08da43 fix(docker): restore `make docker-build` by adding build directives and fixing Go version (#2700)
* cb1e1a3595248faefd4275c528ec4d67d125c80c fix(feishu): fix image download with API fallback and post image support (#2708)
* e1863234f0370a2b6325e203ed83910dbb754112 fix(launcher): hide windows child-process console flashes
* f4dbac0dcf000c3eeb37d67db7211ba59749a1a6 fix(mcp): expand home paths for local stdio server commands
* 07032df0378fef239cfd038aede4b955234c9d40 fix(mcp): normalize local command paths and document env-file usage
* 8f8af0874deb1306b21856c24a5809e8398df680 fix(mcp): retry tool calls on lost HTTP sessions and fix client lifecycle
* 5a13616b6469ec722ecc71b43532225d38a31745 fix(mcp): surface MCP init failures to command handlers
* ae162a72b1dab1f2990d9c87927acbb9578c7970 fix(message): ignore transient assistant thoughts in message count and history truncation
* 979ff00cc398bb1455696fe039b15c8db7d547d0 fix(messageutil): remove dead code
* bb0f983708839d94a87cd8a0b1cc4222b2bc3044 fix(reasoning): persist canonical history for DeepSeek and web chat
* dbf5d9ce1ff48e630e053d3dfef78a526b0b5825 fix(seahorse): persist reasoning_content in sqlite history (#2707)
* 9b109dc7a852cd2f4c50d24d4486ef492be03e8c fix(serial_windows): remove unused import (#2697)
* 34b9d5d6fa2cbeb805cc9be506c5e4300f88d161 fix(telegram): preserve raw OAuth links in HTML rendering
* 1acab59fc7136fea9d7f7edd7ca37117996bd341 fix(tests): format error message
* 6d04d15ce064c8f05f20f898983fb73154b6e44f fix(tool-feedback): dedupe duplicate content and keep full explanations
* 94a6b0c0f5bda043c39ca2318c4f99fec9eb1a3b fix(tool-feedback): format tool args as JSON code blocks
* cac4f21746cd1e421af053c7281430e2fee07a6c fix(tools): improve web search provider fallback (#2629)
* f367a9c01000437c49b4976af2b778255cbd12ac fix(web): use raw token for Pico media proxy and refresh chat attachment UI (#2618)
* 683ce31f2b1ced90f24d90a5138274165c730531 fix: isolate thought bubble collapse state
* f334ac6d0113a79b4003b6b8f5965f9248e76216 fix: treat PID=1 as stale in PID file singleton check, fix govet shadow, add .gitattributes (#2642)
* 893e61dc51c53c6f9630922fae9047f6478c580a hardware/serial: fix darwin cross-compilation build
* 1f0a5f4eda88524bde40cc39612035376b1d8630 hardware/serial: improve unix cancellation and timeout polling
* 64e48163d043ecdc1bd90eaff6632fb3a68fdf67 hardware/serial: improve windows I/O handling
* 338fa258b34429c9a9770e4a095728f00dfd4af9 hardware/serial: tighten validation and error handling
* 29e7461837590ed17d19c7f7e80cfc56c556267b onboard: drop unrelated go generate change from serial work
* b4a59656025c6eb863ec4755b67a58820aab6d69 refactor(onboard,api): harden copydir repo-root detection and use platform-neutral proc attrs naming
* c44bd6138cf3ce272c3810cf9a864b8417f55f33 refactor(pico): unify message kind handling of tool_calls and thought (#2680)
* 77b0c433922be24e98b4edc5adf4cf129adbfc58 refactor: support explicit provider field in model list entries (#2609)
* bd867a16cdf664587f18b32a3011098f032f7ff5 style(tools): wrap serial lines for golines


---
Released by [GoReleaser](https://github.com/goreleaser/goreleaser).