nodeterm

Turns terminals and AI coding agents into draggable nodes on an infinite canvas, replacing stacked tabs with a spatial layout for parallel agent sessions.

Stars
★ 2.1k
Last updated
1d ago
License
NOASSERTION
Primary language
TypeScript

At a glance

How it runs
Desktop appSelf-hosted serviceWeb app
Works with
Universal · cross-platformCodex · Claude Code
Cost
Free, no paid service needed
Setup effort
Low · running in minutes
You'll need
Node.js 20+tmux (bundled on macOS)Shell / CLINetwork accessLocal filesystem
Typical use
ADHD or heavily multitasking developers running several Claude Code / Codex sessions who lose track of context in stacked tabs
Not a fit if
  • Users on systems without tmux who need full session continuity
  • Windows users needing sessions to survive restarts today
  • Teams wanting to ship a competing closed-source product
Source review
65/100 · Some gaps

What does this agent do, and when should you use it?

nodeterm (GitHub: eneskirca/nodeterm) is a node-based terminal manager for developers running multiple AI coding agents. Every terminal and agent session runs in its own persistent tmux session and appears as a draggable node on a pan/zoom infinite canvas; each project is simultaneously a Trello-style kanban board whose cards are live sessions. Built with Electron behind a CorePlatform service seam, one renderer ships as three surfaces: the desktop app for macOS, Linux and Windows (beta), a self-hosted browser Server Edition, and an iOS mobile companion. Agents supported include Claude Code, Codex, Gemini, GitHub Copilot, opencode, Grok and custom CLIs, surfaced through hook-driven RUNNING / NEEDS YOU badges rather than output scraping. It is licensed under BUSL-1.1, with each release converting to MIT four years after publication.

nodeterm creates several node kinds on the canvas: Terminal (xterm + tmux, AI naming), Agent (Claude Code / Codex / Gemini / GitHub Copilot / opencode / Grok / custom), sticky notes (linkable as agent context), Monaco editors, diff views, web/video nodes, and groups bound to git worktrees. Hook-driven status powers RUNNING / NEEDS YOU badges, subagent cards with live transcripts, per-node context meters and OS notifications, with permission prompts answered directly in the node. Every project is both a canvas and a kanban board (⌘⇧B) — cards drag between columns, open into a live card modal, assign teammates, and sync GitHub Issues two-way. It also provides VS Code-style source control (stage, commit, push, worktrees), SSH remote projects, on-device Whisper dictation (hold ⌘⌥), AI commit messages and terminal names (a local agent CLI run read-only on staged diffs), and a canvas-control CLI letting agents drive the canvas. The macOS app ships its own bundled tmux; sessions survive app restarts and machine reboots, restoring scrollback and resuming with claude --resume.

  1. ADHD or heavily multitasking developers running several Claude Code / Codex sessions who lose track of context in stacked tabs
  2. Engineering teams managing per-branch agent workflows via git worktree-bound groups
  3. Heavy tmux users who want to check or answer agents from an iPhone via QR pairing and E2E-encrypted relay
  4. Remote workers hosting agent sessions on an always-on Linux box accessed from any browser (Server Edition / headless notification host)
  5. Anyone needing overnight agent runs with idle-sleep prevention and push NEEDS YOU notifications

How do you install or deploy this agent?

Download from nodeterm.dev: macOS .dmg or Homebrew (brew tap nodeterm/tap; brew trust nodeterm/tap; brew install --cask nodeterm); Linux self-updating AppImage or .deb (sudo apt install ./nodeterm-*.deb); Windows (beta) unsigned Setup .exe. iOS companion on the App Store (nodeterm mobile). Building from source requires Node.js 20+ and tmux: npm install; npm run dev / npm run build. Server Edition: npm run server:dev (Node 22 + tmux), then open http://127.0.0.1:8443 and set a password. Headless notification host: curl -fsSL https://raw.githubusercontent.com/eneskirca/nodeterm/main/scripts/install-server.sh | bash (installs as a systemd service).

How do you use this agent?

Launch and right-click empty canvas space to open a terminal or agent node. Shortcuts: ⌘T new terminal, ⌘⇧C new Claude Code session, ⌘K command palette, ⌘⇧B toggle the board, ⌘⇧E file explorer, hold ⌘⌥ to dictate. Agent activity surfaces as RUNNING / NEEDS YOU badges and notifications; click to answer permission prompts inside the node (on MacBooks, status also lives in the notch). Pair the iOS app by scanning a QR to attach to the same live session. All shortcuts are remappable in Settings → Keyboard Shortcuts; uninstall via the official uninstall.sh script (try --dry-run first).

What are this agent's strengths and limitations?

Pros
  • tmux-backed sessions persist across app restarts and full machine reboots; macOS ships its own tmux so nothing needs installing
  • Hook-driven agent status (no output scraping) plus subagent cards and in-node permission answering
  • Three surfaces — desktop, browser Server Edition, iOS companion — from one codebase with clean CorePlatform / TerminalTransport seams
  • Dual canvas + kanban views with two-way GitHub Issues sync and worktree-bound groups built for real agent workflows
Limitations
  • Licensed under BUSL-1.1, not an OSI open-source license — competitive offering is prohibited and commercial licensing requires contacting the author
  • Windows is beta: unsigned installer, manual updates, and no tmux means session continuity across restarts is still landing (#579)
  • Depends on system tools like tmux and git; environments without tmux lose key functionality
  • Tied to locally installed and logged-in agent CLIs; some advanced features (conversation branching, managed accounts) are Claude-only

How does this agent compare with similar options?

The README contrasts itself with stacked-tab terminals and Trello-style boards (Trello is named only in a trademark disclaimer); no direct competitor is named.

Key facts side by side with the most closely related agents.

Agent Source review Form / cost Stars Updated Language Full support on
nodeterm This agent 65 · Some gaps Desktop appFree ★ 2.1k 1d ago TypeScript Codex · Claude Code
amux Agent Control Plane 77 · Good Self-hosted serviceFree + model costs ★ 543 today Rust Codex · Claude Code
Collie 84 · Good CLIFree ★ 1.4k 1d ago TypeScript —
Pi Subagents Multi-Agent Framework 62 · Some gaps Agent plugin / skillFree + model costs ★ 132 1mo ago TypeScript —

How does FollowAgents rate this agent?

FollowAgents source review · FARS-2.1
Some gaps
65/ 100 5-point scale 3.3 / 5
This review covers the source as of Sep 07, 2026. The project has shipped 14 stable release(s) since, which have not been re-reviewed. The score and verdict describe the reviewed version only. Recent releases ↓
Trust 17/29
Reliability 9/14
Adaptability 12/18
Convention 14/18
Effectiveness 9/13
Verifiability 4/8
Why each dimension lost points
Trust17 / 29 · 2.9/5

Evidence shows least-privilege CI (contents:read), a real grant ledger with per-caller consent gates for cross-project opens (acceptance test exercises confirm, grant, refusal, teardown paths), dictation with review-before-send and fully local Whisper, and tweetnacl E2EE with tamper-failure tests. Deductions: dependency security rests only on package. ranges and a dompurify override — no lockfile audit or scanner evidence; Windows installer is unsigned; curl|bash install/uninstall scripts are not auditable within the provided files; publisher identity is unverified and package author is a personal email, so attribution is thin.

Reliability9 / 14 · 3.2/5

README, package., and workflows are mostly self-consistent (though engines' Node range is narrower than the README's 'Node 20+'); documented degradation without tmux (issue #126), a Windows bootstrap script for build deps, and a Windows-targeted CI subset covering the atomic-write retry. Deductions: Windows session continuity is not yet landed; the engine-range vs README mismatch is a small internal inconsistency.

Adaptability12 / 18 · 3.3/5

Audience and scenarios are precisely defined (scattered workflows, parallel agents, desktop/Server/iOS surfaces); per-platform limitations are honestly stated (unsigned Windows beta, manual .deb updates, lid-sleep caveat); SSH-remote and browser environments are supported. Deductions: no AGENTS.md-style manifest; the canvas-control CLI and agent trigger semantics are only asserted in prose, and the mobile app lives in a separate repo outside the evidence.

Convention14 / 18 · 3.9/5

Information architecture is thorough (download, build, architecture, shortcuts, docs site), install notes cover per-platform quirks and failure modes (brew trust prerequisite), and known limitations are detailed and current. Deductions: registry metadata says NOASSERTION while LICENSE is BUSL-1.1 (the license file itself is complete and explicit); no standalone CHANGELOG file (notes are generated in the release workflow); package name node-terminal vs product nodeterm is a mild naming drift; examples/FAQ live mostly on the external docs site, not evidenced in-repo.

Effectiveness9 / 13 · 3.5/5

Output usability is well supported: shortcut table, command palette, RUNNING/NEEDS YOU badges, artifact-name verification in the release job, and a documented uninstall inventory. Marginal value lies in hook-based agent status (no output scraping) on a spatial canvas with bundled tmux. Cost/benefit notes address power use and self-hosted runners. Deductions: these are declarative claims — static files cannot prove runtime utility; the 1.2k downloads badge is hand-written, not auto-sourced.

Verifiability4 / 8 · 2.5/5

Claims are generally traceable to numbered issues/PRs (#338, #579, #454, #126); workflow comments explicitly separate incident facts from inference; tests exercise real primitives across layers. Deductions: docs site, star counts, Trendshift, and the App Store listing cannot be corroborated from the repository; the downloads figure has no verifiable source in-repo.

Risks and how to mitigate them
  • The Windows installer is unsigned with auto-update disabled; SmartScreen will warn — treat it as trial-only.
  • Registry metadata says NOASSERTION but the actual license is BUSL-1.1 (not open source); competing/commercial hosting use is restricted — rely on the in-repo LICENSE.
  • Install/uninstall use curl|bash pipes; review the scripts before running and use --dry-run first.
  • This was a static review with no code executed; dependency vulnerability status is unverified — run npm audit and inspect the lockfile before deploying.
  • The publisher is an unverified individual (personal email contact); enterprise procurement should do its own diligence.
  • The app merges status-hook entries into your agent CLIs' configs; back up those configs before first use even though the uninstall script claims to revert them.
Evidence confidence: Low Reviewed Sep 07, 2026 Reviewed revision f456e888846b New commits since this review; the score may not cover them
See the full review method →

Recent releases

Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.

  1. v0.4.4
    Release notes excerpt
    Highlights Windows is a real target now — as an unsigned beta, and that word is doing work. The session-host phase landed, so the whole core experience works there: agent sessions and their hooks, managed Claude and Codex accounts, native SSH (port and agent forwarding, ProxyCommand, Pageant, ssh.exe), live links and co-attach, the phone relay, dev tools, run configurations, the tray with background mode, and the session reaper and memory panel. What it does not have is a code-signing certificate, so Windows SmartScreen will warn on the installer, and the build cannot …
    View on GitHub ↗
  2. v0.4.3
    Release notes excerpt
    Highlights If you use hold-to-talk dictation, take this release. A support report traced a bug that had been there for many versions: after a short Cmd+Alt tap — or any Cmd+Opt shortcut, or the window simply losing focus — the microphone could stay open and keep typing into your selected terminal, one line every couple of minutes for about ten minutes. Sometimes what it typed was speech from the user's meetings. Opening a microphone is asynchronous, and the overlay could close before the capture handle existed, so the cleanup found nothing to cancel and the capture lived on alone. …
    View on GitHub ↗
  3. v0.4.2
    Release notes excerpt
    Highlights Live links grew up. v0.4.1 introduced them read-only. This release puts a Share live link button straight in the terminal node header, drops the limit on how many you can have, adds a Live chat drawer where you follow and answer a link's chat, and adds the one thing v0.4.1 could not do: a Control role that lets the other side actually type. Control is opt-in per link and gated, because handing someone your terminal is not a small thing. A viewer needs a name plus a password you send them separately — 8 to 128 characters, or a …
    View on GitHub ↗

FAQ

Is it free?
The repository lists no pricing. The app is downloadable from nodeterm.dev under BUSL-1.1: production use is allowed under the Additional Use Grant, competitive offering is not, and each release becomes MIT after four years. Commercial licenses: [email protected].
What dependencies does it need?
Node.js 20+ (for source builds) and tmux (recommended; the basis of session persistence). The macOS app bundles tmux and prefers any system tmux. The Server Edition needs Node.js 22 + tmux.
How are agent permission prompts handled?
Agents notify nodeterm via hooks (no output scraping); nodes show a NEEDS YOU badge and send OS/push notifications, and you answer the permission prompt right inside the node.
Can I use it remotely?
Yes: self-host the Server Edition for browser access; pair the iOS app via QR to reach the same live session over an E2E-encrypted relay (not just your LAN); or open SSH remote projects that run terminals, files, git, and the board on a remote host.
How do I uninstall cleanly?
The official uninstall.sh stops every process nodeterm started, reverts the hook/skill entries it merged into your agent CLIs' config, and deletes its own state; run with --dry-run first. Details in docs/uninstall.md.
View on GitHub ↗ Install ↓

Compare agents like this one

The same FARS review applied across the shortlist this agent qualifies for.

Related agents