This release includes breaking changes for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Topics
Summary
AI summaryBroad release touches @Dicklesworthstone, Bug Fixes, Quick Install ```bash, and Others.
Full changelog
NTM v1.4.0
Named Tmux Manager - Orchestrate AI coding agents in tmux sessions with beautiful TUI interfaces.
Quick Install
# One-liner install (Linux/macOS)
curl -fsSL https://raw.githubusercontent.com/Dicklesworthstone/ntm/main/install.sh | bash
# Homebrew (macOS/Linux)
brew install dicklesworthstone/tap/ntm
# Go install
go install github.com/Dicklesworthstone/ntm/cmd/[email protected]
Shell Integration
Add to your shell rc file:
eval "$(ntm init zsh)" # for zsh
eval "$(ntm init bash)" # for bash
eval "$(ntm init fish)" # for fish
Changelog
Features
- a652fffba2fb3e393c03ea9b4f5b1624050a5b47: feat(agentmail): add PrepareThread and ContactHandshake macro wrappers (@Dicklesworthstone)
- 1915a120832e621f5aa34357426d53422072539f: feat(approval): implement approval workflow engine (ntm-gy4o) (@Dicklesworthstone)
- c2dc8d67a06707173ca76aeebb6e51216d509694: feat(beads): add 72 comprehensive beads for NTM v2.0 transformation (@Dicklesworthstone)
- 31ddcf1d7ecaf9c718a2c99a7db2de0c719d17a0: feat(bv): add markdown triage output for token savings (ntm-2mz5) (@Dicklesworthstone)
- 1e8e6cb57ec8807eed14e864f71f435a71ae7e21: feat(bv): implement -robot-triage mega-command integration with caching (@Dicklesworthstone)
- aa579341951e62f5b305dd14ab650926ed9d6fed: feat(cli): add doctor command for ecosystem health validation (@Dicklesworthstone)
- 2f712c448f43e769d86b56719ca541ee3ded7d42: feat(cli): add ntm guards commands for Agent Mail pre-commit guards (@Dicklesworthstone)
- 189d8044c40f8d4cf18f6721a272645c5fe28bcc: feat(cli): add ntm setup command for project initialization (@Dicklesworthstone)
- 3f26d19900a20effe7e2250e19bf0aeeb050a5ae: feat(cli): add ntm work commands for intelligent work distribution (@Dicklesworthstone)
- 26d4e9efc98d5b8b1ba6ed49be3843d6c7f3e767: feat(cli): enhance ntm health command with watch mode and filters (@Dicklesworthstone)
- 1690f2995e79f9a0b1964b3b920a624398454cfc: feat(cli): implement ntm approve command (ntm-55zg) (@Dicklesworthstone)
- 2846ff29abbd5bda1a020ef2521a61ba5549c1fb: feat(config): add ConfigDiff, Diff(), and Validate() functions (@Dicklesworthstone)
- 53a4dd97e1506bea59559629a58953fce262b3c3: feat(dashboard): add health indicators to pane cards (@Dicklesworthstone)
- 541cd74d9da99e35a022f67319abed58802609c8: feat(events): add Replay and Since functions for event log recovery (@Dicklesworthstone)
- 0ff3b3fe059e9d3f3603f3d7d20fa33a0c81e948: feat(foundations): implement State Store and Daemon Supervisor (@Dicklesworthstone)
- 51020a72f3e4c27299a2c42ae7927a02c7705ce5: feat(invariants): implement design invariants enforcement (ntm-3xrj) (@Dicklesworthstone)
- 75480bb4b28fda65fcf601d485491e5da76273e0: feat(locks): implement file reservation lifecycle commands (@Dicklesworthstone)
- 647b6b871a5097bac5f42e2a5ba6be18f699c66d: feat(notify): add file inbox and advanced routing (ntm-twff) (@Dicklesworthstone)
- 64cc0850330cd7dba80832aa8c0f5f4c4004b834: feat(output): add styled UX components and error helpers (@Dicklesworthstone)
- 3f9715ee16c4ea4f3979ec90f6d9a951b86f37ef: feat(policy): add policy package for destructive command protection (ntm-io2c) (@Dicklesworthstone)
- 596a05968a4e02a88d30527267bfe6cf37d9cf10: feat(robot): add --robot-health=SESSION per-agent health API (@Dicklesworthstone)
- 99a99a8548235191b0baebfb429cb292bd072672: feat(robot): implement alerting system for health events (ntm-caib) (@Dicklesworthstone)
- 1c0db5ce4081d69ff7e266915a82e4500de5d58a: feat(robot): implement automatic restart with alerting (ntm-ebvm) (@Dicklesworthstone)
- 30867cfd43b6455868a9cc6f2d7687f8374d1b61: feat(robot): implement health state tracking for agents (ntm-v5if) (@Dicklesworthstone)
- bb4917cd5d8cc390186665247a614e0bccb5fec7: feat(robot): implement rate limit backoff with exponential growth (ntm-1ir2) (@Dicklesworthstone)
- e72e654929bd44dee1c4d6b2d603ce52ab38b871: feat(serve): implement HTTP server with REST API and SSE streaming (ntm-r5b6) (@Dicklesworthstone)
- c5774b4c4d299890a074c77a9efe04d12c3d7ae9: feat(supervisor): add tests and fix duplicate detection bug (@Dicklesworthstone)
- bc7efc5ebf4932608afcb96cbe50ef1d94cdea09: feat(test): implement test strategy foundation (ntm-iymd) (@Dicklesworthstone)
- cc816fad24ddcea6de91331697c94f179e158d5d: feat(tools): add Tool Adapter Framework for ecosystem integration (@Dicklesworthstone)
Bug Fixes
- 9b626858c17ebd33e081f9a9593b67a3c59c9607: fix(bv): remove truncation from triage markdown output (@Dicklesworthstone)
- 533fd6b52c4eb16eacc2cc8145a3a24d38995eec: fix(checkpoint): avoid duplicate time.Now() calls in GenerateID (@Dicklesworthstone)
- a1f2b0b685e9577a9ef3bcb5c54954c484814b9c: fix(cli): correct UTF-8 truncation in truncatePrompt (@Dicklesworthstone)
- a154d32e7a607a52d0f1f0a323d2b34e7b3c5d30: fix(cli): improve doctor command error handling and output (@Dicklesworthstone)
- 9c4e48dd553b6e4960040aa667361e369d406e25: fix(cli): prevent nil pointer dereference in ResolveCassContext (@Dicklesworthstone)
- 56da58cfda5fd5ab3fe33263997528a764e7f751: fix(cli): remove unused import in safety.go (@Dicklesworthstone)
- 61e4521b8971bd95f3191f59fac902d5740611f7: fix(cli): validate reservation ID is positive in force-release command (@Dicklesworthstone)
- 9e8e69f6b4ad3e66609c21055d987c3a45c98233: fix(doctor): correct version message formatting (@Dicklesworthstone)
- f4db956b475bc724e705a199a1d3fbbceedd3f01: fix(doctor): improve checkDaemons determinism and context support (@Dicklesworthstone)
- f769ad098ed1341ffd0a06275080ba9c8001a77f: fix(e2e): correct robot-send flag and add session verification (@Dicklesworthstone)
- 7b43e5a3ba5c2c873da86da215d4550493bf7fbc: fix(e2e): remove non-existent --safety flag from spawn commands (@Dicklesworthstone)
- ae14687fd4027bde0151bb1a39b2ae531941033d: fix(events): serialize json.Encoder calls in EnableRobotMode (@Dicklesworthstone)
- 5fbc4a78eeddc4cac9ffbc369b99376f0c04c181: fix(hooks): correct UTF-8 truncation in message environment variable (@Dicklesworthstone)
- 2eaf10f17ba5131eddbeb6b82e016066a91d866d: fix(locks): improve error handling for edge cases (@Dicklesworthstone)
- 8f6c4080461434209618905666966e9e954212ea: fix(output): accurate line counting in diff computation (@Dicklesworthstone)
- 516cc9fda0ff0e7ae80ffd93876b123889effafa: fix(output): remove dead code and fix SuccessFooter display logic (@Dicklesworthstone)
- e03e0723e0742df35a818db6c84fc2108b183900: fix(pipeline): truncatePrompt respects n byte limit with UTF-8 (@Dicklesworthstone)
- c6322b2ae0e8c46b0298785172f2a12e2ae221bb: fix(plan): resolve 9 issues from document review (@Dicklesworthstone)
- 8fc881da90c74d0856f869fdcef6135b2fcff8b1: fix(prompt): correct line number display for implicit start range (@Dicklesworthstone)
- d708fd49d8b333ac9734cf2b80c2ee46f1735ee0: fix(robot): address bugs in RestartManager found during code review (@Dicklesworthstone)
- 81e3b1082ecc4cae27a8e63e7ef00b4520e75cdc: fix(robot): correct shell prompt detection and state idle calculation (@Dicklesworthstone)
- 1bc663f97c38c69a5818b242443276808638cf7c: fix(robot): simplify THINKING agent relaxation check (@Dicklesworthstone)
- 3c46d64a9f1903b5a0b8124bf46a1884dd5c23d2: fix(safety): critical bugs in wrapper scripts and policy YAML (@Dicklesworthstone)
- c7288664feb76fd4311d43a92a0b28fb5c6fb133: fix(safety): exit code and log path bugs (@Dicklesworthstone)
- 02b4447a198bc3fbbd69c867f11538787cb8c9f1: fix(safety): proper JSON escaping in blocked command logs (@Dicklesworthstone)
- 15ef5110da73d3e2c2a86d271585ca2f790c7086: fix(serve): add nil check in handleSessionAgents for defensive programming (@Dicklesworthstone)
- cba77256bcb778f49bff181d82bebda847b4cab4: fix(setup): splitLines trailing newline and empty string handling (@Dicklesworthstone)
- d8fdd1c6e8180aade0982876e1f7c35a42999926: fix(startup): close profiler spans in BeginPhase1/BeginPhase2 (@Dicklesworthstone)
- 5fa701fa7edaf64b0cc1556f4c1e2f51814b5689: fix(state): handle NULL columns in SQL queries with COALESCE (@Dicklesworthstone)
- 56ab5027027a3efc5d4ecf98e58b53eea39567ec: fix(status): prevent data race in recovery goroutine (@Dicklesworthstone)
- 8a9a0bf82441e2c9e238cd4c3bd46fe1ef0aaebc: fix(status): respect UTF-8 boundaries in truncateOutput (@Dicklesworthstone)
- 429a674b122e8040a187f488790c229104ae5d03: fix(supervisor): prevent restart race and fix data races (@Dicklesworthstone)
- 4a73042aa6c95006c366b7ca4ad94dd70f1e3d4a: fix(test): correct mcp-agent-mail fake tool version string (@Dicklesworthstone)
- d0f442e41fa803d59338f787180a7f27fc29b399: fix(test): use t.TempDir() instead of os.TempDir() in pane tests (@Dicklesworthstone)
- a38bf19451da1bef90f1d555c26d73f2080a072f: fix: UTF-8 boundary handling in truncate functions (@Dicklesworthstone)
- bc14c1c4ab419ac32a45f2d52f6d0055459d39d3: fix: add YAML escaping and prevent panic on empty gitignore entry (@Dicklesworthstone)
- 076fe45721f232b7a5e0c72afb03aec042f5019c: fix: code quality improvements across multiple packages (@Dicklesworthstone)
- 6a26c8165628b1dddd0d8464615e952bfcd8487a: fix: consistent UTF-8 boundary handling in truncate functions (@Dicklesworthstone)
- 450a99195a0472d80f5471fbbfac32c315f3f2ed: fix: consistent truncate edge cases and case-insensitive agent types (@Dicklesworthstone)
- 5a4ed5f42125871ff421286c0492c96dc049ae6e: fix: correct UTF-8 truncation in 5 additional files (@Dicklesworthstone)
- 212aafe9bc78007036b89e40ce3cf244b6637ce8: fix: correct bugs in grep highlight, recovery event, patterns, and pipeline (@Dicklesworthstone)
- 8e6a930ec9a4236714dd0961198cd7b32643a359: fix: correct semantic bug and add thread safety (@Dicklesworthstone)
- ecfa09e22fc4ae59a7ca31a6273d59526feea9d5: fix: correct threshold unit mismatch and improve test robustness (@Dicklesworthstone)
- 2f4e897b4c33737d12fbb8e1bbe58c08db8b3b87: fix: countLines trailing newline bug and remove dead code (@Dicklesworthstone)
- f93882fc80ed035d5c4b162f0192e07ea51e3f61: fix: improve short truncation to show actual content (@Dicklesworthstone)
- 327cf9328b0653ee52753790a385a15335b7378a: fix: policy YAML escaping and test timeout handling (@Dicklesworthstone)
- 238398ac19dbebeaac7d2fdccbdd2a63a0cb950a: fix: remove dead code and fix deprecated lipgloss API (@Dicklesworthstone)
- 32c4d6c12dc25249abc8faeb2193a75762594dc7: fix: remove dead code and redundant pattern check (@Dicklesworthstone)
- 1dac024cc17c2a13726152de266c5606ae7b1270: fix: remove unused code and duplicate function declarations (@Dicklesworthstone)
- e25a19269cf65468936cab2b5c045f344e285220: fix: resolve multiple bugs and improve test reliability (@Dicklesworthstone)
- a542b7c2f4270982185e0ee30cda67356a84e9bc: fix: truncate edge case and restart count preservation (@Dicklesworthstone)
Performance
- 949b4b72ce9a8595d93daca3f4d3bce3114ec273: perf(bv): remove unnecessary fmt.Sprintf for constant strings (@Dicklesworthstone)
Others
- 636896f232428f10ec4908daa2ae74045be0db28: chore(beads): close ntm-pp4g, ntm-3s2g - Event Bus complete, E2E tests done (@Dicklesworthstone)
- e72730cb74c08bf46cf969f0990e55ae7f89273e: chore(beads): close ntm-r5b6 (ntm serve command feature) (@Dicklesworthstone)
- cf803e76f8173c7818ae1418fc644138e9d40be9: chore(beads): sync issue tracking (@Dicklesworthstone)
- 52f6bd7bc3ef8044133a2be38f1a164243be0dd9: chore(beads): sync issue tracking state (@Dicklesworthstone)
- 6091d96fefedd3c4a664484e6f032fca9355ba35: chore(beads): upgrade bd tool from v0.32.1 to v0.43.0 (@Dicklesworthstone)
- 6d8729a54c6c2786e849ecb7b7d02e825364755f: chore(persona): remove unused expandPromptVars wrapper (@Dicklesworthstone)
- ab8feebcedb7d2e7764f9a46ceffeec640eca316: chore(robot): remove unused helper functions (@Dicklesworthstone)
- afc5e7a4ddfc2db7aa3361baf8c725ace90b154d: chore(test): remove debug logging from chaos test (@Dicklesworthstone)
- 20eedac4577f670ce4f285595da20a0d8984bcac: fix(lock/unlock): add fallback error messages for empty error case (@Dicklesworthstone)
- ebe1494699b35afb8fb9cdb0013efbecbe1b0ed1: refactor(e2e): simplify containsMarker using strings.Contains (@Dicklesworthstone)
- acc4d8e1d7cd769de935008da9709f8bcee40cd9: refactor(setup): simplify splitLines with strings.Split (@Dicklesworthstone)
- cf8f1bdcf854ee6f5fba255220669e32e12536e9: refactor(startup): replace sync.Once with double-checked locking in Lazy (@Dicklesworthstone)
- a3f74c160d98b2a675e486d8698196f5dc23cded: revert: restore placeholder functions for future features (@Dicklesworthstone)
- 23530dcbfd7b73f0bce75f8ed910ba28ea1a7ead: test(bv): add regression test for no-truncation in compact markdown (@Dicklesworthstone)
- 6a5af5c2e7be7a55fd1b618d5d7f7eed22cfe850: test(e2e): add robot-spawn, robot-send, robot-tail, robot-interrupt tests (@Dicklesworthstone)
- 0a417227f00a2f5ab927a51cb4057d5432fa38c9: test(hooks): fix truncation test expectation to match implementation (@Dicklesworthstone)
- 662185cc4e6ddf905a9ab340bd6e4ec0d8b4678d: test(pipeline): add UTF-8 edge case tests for truncatePrompt (@Dicklesworthstone)
- 2fb5a3f20a1ea6272386b1cda493807d4d1cf54d: test(pipeline): add case-insensitive tests for NormalizeAgentType (@Dicklesworthstone)
- 1e4fdcb0ddb9f283ab8b13034f7aa1214b48163f: test(pipeline): add tests for IsValidAgentType (@Dicklesworthstone)
- ee43275323699a29fb34875fd0a5147b352dc27b: test(policy): add comprehensive tests for automation and SLB features (@Dicklesworthstone)
- 0b119678e3c8fe0359d40eea1cc3b0c3b2600c87: test(tmux): add real integration tests for keys, capture, and title parsing (@Dicklesworthstone)
Full Changelog: https://github.com/Dicklesworthstone/ntm/compare/v1.3.0...v1.4.0
Container Image: ghcr.io/dicklesworthstone/ntm:v1.4.0
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About ntm
Named Tmux Manager — spawn, tile, and coordinate multiple AI coding agents (Claude, Codex, Gemini) across tmux panes with a TUI command palette.
Related context
Related tools
Beta — feedback welcome: [email protected]