Skip to content

Projects

A project is one canvas. It has its own tab, its own set of nodes, and — usually — its own folder. This page covers how projects map to folders on disk and how they’re shared.

Each project shows up as a tab in the tab bar, and each tab is a separate canvas with its own terminals and notes. A project’s folder — its working directory — is where its terminals and agents open by default, so new nodes start out in the right place.

Open folder… picks the folder a project lives in. It dedupes: reopening a folder you’ve already opened reuses that folder’s existing project — with all its nodes — instead of minting a duplicate.

A project that has a folder stores its canvas in <cwd>/.nodeterm/project.json. That file is the source of truth for the layout: it’s git-shareable and machine-portable, with portable relative node paths, so the project travels with the repo.

Closing a project and deleting one are very different.

Close is non-destructive. The tab is hidden, but everything stays on disk and the tmux sessions keep running — closing just detaches, like switching away. Closed projects come back from the Recently closed list on the welcome screen, and reopening reattaches the warm sessions (or cold-restores them).

Permanent deletion only happens one way: the × on a Recently closed entry. That tears down the terminals’ tmux sessions for good. There’s no other path to it, so you can’t lose a project by closing it.

Because a project’s layout lives in <cwd>/.nodeterm/project.json, you share a canvas by committing that file. A teammate who clones the repo gets your node layout along with the code.

Edits from outside the app — a git pull, a branch checkout — are picked up automatically: nodeterm watches the file and hot-reloads the canvas. If both sides changed (you have unsaved edits and the file changed underneath you), you get a conflict bar to reload the incoming version or keep yours, so a sync never silently clobbers your work.