mrkeyoor.com_
Tue 01 Sept 17:42 UTC
Dev Toolsevaluationupdated 26 Aug 2026

nodeterm review

nodeterm is a desktop and browser workspace that places live terminals and coding-agent sessions on a zoomable canvas instead of hiding them behind tabs. It uses tmux to keep sessions running, adds agent status and a kanban view, and helps developers track several local or remote jobs.

+98stars / 7d
Verdict

Our nodeterm build passed in 38 seconds, but 36 of 8,973 tests failed, so the packaged app is easier to recommend for a trial than the current checkout is for contribution. Use it when spatial layout genuinely helps you supervise several agents and branches. Choose tmux, Zellij, or Agent Deck when a smaller footprint, permissive license, or terminal-native workflow matters more.

We ran it

Lab card: what happened when we ran nodetermScreenshot of nodeterm (nodeterm.dev)
Install✓ · 87s469 packages · 581 MB
Build✓ · 38s
Tests✗ · 138s8854 passed · 36 failed · 83 skipped of 8973 (vitest)
Known vulns00 critical · 0 high · 0 moderate · 0 low (npm audit)
Repo1500 files~300,731 lines of source · 29.7 MB · 4 CI workflows · Dockerfile · tests dir

Answers from our run

Does nodeterm build from source?

Dependencies installed in 87 seconds (469 packages), and the build succeeded in 38 seconds. We cloned commit 46f2136 into a clean Debian container with 3 CPUs and no project-specific setup.

Do nodeterm's tests pass?

Not all of them: 8854 of 8973 passed and 36 failed when we ran the project's own test command (vitest). Some failures need services or credentials a bare container does not have.

Does nodeterm have known vulnerabilities in its dependencies?

npm audit found none in the dependency tree at the time of our run.

Who should not use nodeterm?

Windows users who need a native desktop build: published downloads cover macOS and x64 Linux.

What are the alternatives to nodeterm?

tmux, Zellij, Agent Deck. Our nodeterm build passed in 38 seconds, but 36 of 8,973 tests failed, so the packaged app is easier to recommend for a trial than the current checkout is for contribution.

Setup3/5Build passed; 469-package install used 581 MB and tests failed
Docs4/5Detailed desktop, server, architecture, and removal guidance
Community4/5Pushed August 25 with 37 combined issues and pull requests
Maturity3/5Useful v0.3.2 app, but 36 tests failed in our sandbox

Who it’s for

Developers running several Claude Code, Codex, Gemini, Copilot, opencode, Grok, or custom CLI agents.
Visual thinkers who remember work better as a spatial map than as terminal tabs.
macOS and Linux users who want persistent sessions with editors, diffs, notes, git tools, and agent status.
Solo operators who want to reach server-hosted sessions from a browser or paired iPhone.

Who it’s NOT for

Windows users who need a native desktop build: published downloads cover macOS and x64 Linux.
Teams seeking a multi-user shared terminal service: Server Edition documents single-user authentication with one password.
Companies building a competing hosted, embedded, or standalone product: BUSL-1.1 restricts that use until each release changes to MIT four years later.
Remote developers who require automatic OAuth localhost callback handling for MCP sign-ins: open issue 292 requests it for SSH and Server Edition.
Teams that require a clean test suite before adoption: our run ended with 36 failed tests across 3 files.
Developers avoiding Electron and native terminal dependencies: our install added 469 packages and occupied 581 MB.

Setup reality

Our npm install succeeded in 87 seconds, adding 469 packages and using 581 MB. The build passed in 38 seconds. Tests exited 1 after 138 seconds: 8,854 passed, 36 failed, and 83 were skipped out of 8,973. Npm audit found 0 known vulnerabilities.

Source builds need Node 20 or newer, native node-pty rebuilding, and tmux. Server Edition documents Node 22, tmux, password setup, persistent state, and a TLS reverse proxy beyond localhost. Desktop releases package more of this work.

The 1,500-file checkout has about 300,731 source lines, Docker, 4 CI workflows, and tests. The shown failure is in PTY-shadow session attachment; the log does not establish whether the sandbox or application caused it.

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.

Alternatives

ProjectWhat it isPick it when
tmux gh↗The established terminal multiplexer behind many persistent shell workflows.pick this instead when scripts, portability, and a small footprint matter more than a visual agent canvas.
Zellij gh↗A modern terminal workspace with layouts, panes, and persistent sessions.pick this instead when you want a terminal multiplexer without Electron, a board, or agent hooks.
Agent Deck gh↗A terminal interface for organizing and monitoring coding-agent sessions.pick this instead when agent supervision is the goal and a terminal-native dashboard fits better.

What people are saying

  1. [github-trending] eneskirca/nodeterm

Sources

  1. nodeterm README
  2. nodeterm Server Edition documentation
  3. nodeterm BUSL-1.1 license
  4. nodeterm v0.3.2 release
  5. Remote OAuth callback issue

More dev tools reviews

workmux · v2rayNG · SecLists · hashcat · eslint · fastfetch · the whole board →