A canvas keeps parallel agent sessions visible
nodeterm starts from a familiar problem: more terminal tabs do not reveal which agent owns which branch, what is blocked, or where a long process went. The app replaces the tab stack with a pan-and-zoom canvas. Terminals, coding agents, notes, Monaco editors, diffs, groups, and web views become movable nodes inside a project.
These are live tmux sessions rather than screenshots of shells. They survive node remounts and app restarts; reboot recovery restores scrollback and can resume supported agents. Groups can bind to git worktrees, giving one branch and its agent a visible place. The same project can switch to a kanban view where cards remain connected to running sessions.
Built-in agent choices include Claude Code, Codex, Gemini, GitHub Copilot, opencode, Grok, and custom commands. Hook-based badges mark running, done, and needs-you states without scraping terminal output. Subagent cards, notifications, context meters, and permission responses reduce the need to inspect every pane manually.
Desktop, browser, and iPhone share the same sessions
Packaged desktop downloads cover Apple Silicon and Intel macOS plus x64 Linux. There is no native Windows build. macOS releases bundle tmux, while Linux users generally supply it. The iOS companion pairs by QR code and can attach to live sessions, accept input, show board state, and receive notifications.
Server Edition runs the same canvas in a browser on a Linux or macOS host. Its WebSocket bridge connects the renderer to core services for terminals, files, git, boards, and agent status. Authentication is single-user: one password with separate browser sessions. Public access needs a TLS-terminating reverse proxy because the documented server starts on loopback over plain HTTP.
The surrounding source-control panel can stage, discard, switch or create branches, commit, synchronize, and manage worktrees through system Git. Notes can feed context to agents. This breadth is useful for one developer supervising several jobs, but it also gives nodeterm control of hooks, workspace state, remote connections, phone pairing, and credentials around paid agent tools.
What happened when we ran it
Our sandbox installed commit 46f2136 in 87 seconds. Npm added 469 packages and used 581 MB on disk. The production build completed successfully in 38 seconds. Npm audit reported 0 known vulnerabilities at critical, high, moderate, and low severities. We used Node 22 in an unprivileged Debian container with 3 CPUs, 8 GB of RAM, and no secrets.
Vitest exited 1 after 138 seconds. It reported 8,854 passed, 36 failed, and 83 skipped out of 8,973 tests. Three test files failed while 635 passed and 4 were skipped. The supplied tail points to src/core/pty-shadow.test.ts, where an assertion counted PTY shadow attachment log lines after a session was reused.
The log does not identify a root cause, so we cannot call the 36 failures flaky, platform-specific, or product defects. The accurate result is that the full command did not pass in our fresh container. The checkout was 29.7 MB with 1,500 files and about 300,731 source lines, 4 CI workflows, a Dockerfile, and a tests directory.
Source setup is heavier than installing the desktop package
Building requires Node 20 or newer, Electron, a native node-pty rebuild, and tmux. A macOS checkout does not contain the bundled release tmux, so contributors either install tmux or run the separate resource build. Server development calls for Node 22 and tmux. These requirements explain part of the 469-package environment without explaining the failed assertions.
The headless installer can create a systemd service and obtain a pinned Node runtime. It also enables a daily update timer unless NODETERM_NO_AUTOUPDATE=1 is set. Operators who need controlled changes should disable automatic updates, pin a commit, protect state directories, terminate TLS at a reverse proxy, and test recovery after the host restarts.
Voice dictation uses an on-device Whisper path and requires an explicit user action before sending text. Remote and mobile features introduce other network services. Pairing keys, server passwords, SSH access, agent credentials, and repository permissions deserve the same threat-model review as any remote terminal product.
BUSL allows internal production but blocks competitors
The Business Source License permits copying, modification, redistribution, and production use under an additional grant. It prohibits offering nodeterm as a hosted, embedded, or standalone product or service that competes with the licensor's products. Each version converts to MIT four years after publication. Internal development may fit cleanly; vendors should review the license before embedding the app.
Open issue 292 covers a practical remote limit. MCP authentication flows often open a localhost callback, but an agent running through SSH or Server Edition opens that callback on the remote machine. nodeterm does not yet forward or intercept it automatically, so the issue asks for a browser-assisted bridge. Teams using remote MCP sign-ins should test the exact provider flow.
GitHub recorded the last push on August 25, 2026. Release v0.3.2 was published on August 17, and the repository showed 1,329 stars with 37 open issues and pull requests combined. The release notes list many fixes and features across pairing, licensing, hooks, messaging, terminals, and agent state. Fast movement is useful, though a v0.3 product with 36 failures in our run still deserves a reversible pilot before it becomes the only map of active work.

