How eneskirca/nodeterm works
nodeterm is an Electron terminal-and-agent workspace: users arrange persistent sessions and project context on a canvas, operate the same sessions through a kanban view, and can attach remotely. The README also documents SSH projects, Git/GitHub integration, agent status and approvals, dictation, and a self-hosted server. The graph emphasizes those product areas and the renderer/preload/main boundary; sampled implementation excerpts are limited, so uncertain internal call paths are omitted.
Main entry points: index.ts Electron main · App.tsx Canvas UI · pty-manager.ts PTY manager · Canvas.tsx Canvas nodes
Components 24
Canvas workspace
- Canvas UI
src/renderer/App.tsx - Canvas nodes
src/renderer/canvas/Canvas.tsx - Kanban board
src/renderer/components/kanban/KanbanView.tsx - Workspace state
src/core/workspace-store.ts - IPC bridge
src/preload/index.ts - Electron main
src/main/index.ts
Session runtime
- PTY manager
src/core/pty-manager.ts - tmux sessions
src/core/tmux-control-client.ts - Session host
src/core/session-host-client.ts
Agent workflow
- Agent hooks
src/core/agents/hooks/index.ts - Hook server
src/core/agents/hook-server.ts - Agent status
src/core/agent-status-mirror.ts - Context links
src/renderer/canvas/useContextLinkSync.ts - Agent HUD
src/renderer/hud/main.ts
Project integrations
- Git service
src/core/git-service.ts - GitHub integration
src/core/github/integration.ts - SSH projects
src/main/remote-ssh/ssh-project.ts - Dictation
src/core/speech/speech-service.ts
Remote access
- Phone pairing
src/main/pairing-service.ts - Encrypted relay
src/main/remote/relay-client.ts - Self-hosted server
src/server/main.ts
Other components
- User
- Phone companion
- GitHub service
Connections 22
- User → Canvas UI: arranges sessions
- Canvas UI → Canvas nodes: renders nodes
- Canvas UI → Kanban board: switches view
- Canvas UI → IPC bridge: invokes API
- IPC bridge → Electron main: IPC requests
- Electron main → Workspace state: loads and saves
- Electron main → PTY manager: manages terminals
- PTY manager → tmux sessions: controls sessions
- PTY manager → Session host: captures sessions
- Agent hooks → Hook server: posts events
- Hook server → Agent status: updates status
- Canvas nodes → Context links: publishes links
- Agent status → Agent HUD: supplies status
- Electron main → Git service: routes Git requests
- Electron main → GitHub integration: routes issue requests
- GitHub integration → GitHub service: calls API
- Electron main → SSH projects: manages remote projects
- Canvas UI → Dictation: dictation requests
- User → Phone pairing: pairs phone
- Phone pairing → Encrypted relay: uses transport
- Phone companion → Encrypted relay: connects securely
- User → Self-hosted server: opens browser app