{
  "schema": "tesign-radar/item/1",
  "generated_at": "2026-09-17T01:56:13.055Z",
  "lang": "ko",
  "slug": "nodeterm",
  "url": "https://tesign.com/item/nodeterm/",
  "alternates": {
    "ko": {
      "html": "https://tesign.com/item/nodeterm/",
      "json": "https://tesign.com/item/nodeterm/index.json",
      "markdown": "https://tesign.com/item/nodeterm/index.md"
    },
    "en": {
      "html": "https://tesign.com/en/item/nodeterm/",
      "json": "https://tesign.com/en/item/nodeterm/index.json",
      "markdown": "https://tesign.com/en/item/nodeterm/index.md"
    }
  },
  "name": "nodeterm",
  "use_label": "여러 에이전트를 캔버스에 배치",
  "one_liner": "터미널과 코딩 에이전트 세션을 캔버스 위 노드로 배치하는 관리 앱 — 앱을 꺼도 세션이 살아 있고 재부팅 뒤에도 복원됩니다.",
  "text": {
    "why": "코딩 에이전트를 여럿 동시에 돌리면 탭 더미 속에서 어느 세션이 뭘 하는지 놓치기 쉬운데, nodeterm은 터미널과 에이전트를 팬·줌 캔버스 위에 배치해 지도처럼 봅니다. 노드마다 영구 tmux 세션이 붙어 앱을 끄거나 컴퓨터를 재부팅해도 스크롤백과 실행 중이던 에이전트가 돌아오고(맥 앱은 tmux를 자체 내장), 훅으로 RUNNING / NEEDS YOU 상태를 표시해 권한 질문에 노드 안에서 바로 답할 수 있습니다. 같은 프로젝트를 칸반 보드로 전환하면 카드가 곧 실행 중인 세션입니다.",
    "take": "핵심은 화려한 캔버스가 아니라 tmux로 세션을 살려 두는 결정이고, 그 위에 에이전트 상태를 훅으로 읽는 구조가 실사용을 가능하게 합니다. 단, 라이선스가 BUSL-1.1이라 OSI 기준의 오픈소스는 아닙니다.",
    "build": [
      "브랜치별 git worktree에 에이전트 하나씩 붙인 그룹, 스티키 노트로 맥락을 넘기는 에이전트 팀, 노드 사이에 컨텍스트 링크를 그어 서로의 기록을 읽게 하는 작업 배치를 만들 수 있습니다. Server Edition을 리눅스 서버에 올리면 같은 캔버스를 브라우저에서 쓰고, iOS 앱으로 세션을 이어받습니다."
    ],
    "who": [
      {
        "role": "여러 에이전트를 동시에 돌리는 개발자",
        "situation": "세션을 공간에 배치하고 NEEDS YOU 알림에 노드 안에서 응답"
      },
      {
        "role": "탭 관리가 어려운 사용자(README는 ADHD를 명시)",
        "situation": "숨은 탭 대신 한눈에 보이는 지도형 작업 공간"
      },
      {
        "role": "원격 호스트에서 에이전트를 돌리는 개발자",
        "situation": "Server Edition(브라우저)과 iOS 앱으로 같은 세션 접속"
      }
    ],
    "start": [
      {
        "command": false,
        "text": "macOS(Homebrew, 세 줄 모두 필요):"
      },
      {
        "command": false,
        "text": "brew tap nodeterm/tap"
      },
      {
        "command": false,
        "text": "brew trust nodeterm/tap"
      },
      {
        "command": false,
        "text": "brew install --cask nodeterm"
      },
      {
        "command": false,
        "text": "또는 https://nodeterm.dev 에서 .dmg / AppImage / .deb / .rpm / Windows 베타 설치 파일 다운로드"
      }
    ],
    "caveat": [
      "라이선스 BUSL-1.1(저장소 LICENSE 파일에서 확인; GitHub 자동 감지는 없음): 사용·수정·재배포·상용 사용은 가능하지만 nodeterm과 경쟁하는 제품·서비스로 제공은 금지, 각 릴리스는 공개 4년 뒤 MIT로 전환.",
      "macOS(arm64·x64)·Linux(x64)는 정식, Windows x64는 베타(서명 없는 설치 파일, 수동 업데이트, 재시작 후 세션 복원 미완). iOS 앱은 App Store에서 별도 설치.",
      "홈페이지 기준 v0.3.5 '얼리 액세스'. 앱이 자체 서버의 업데이트·공지 피드를 확인함."
    ]
  },
  "cta": {
    "type": "install",
    "label": "INSTALL",
    "url": "https://nodeterm.dev/"
  },
  "ready": "install",
  "categories": [
    "ai",
    "dev-tools"
  ],
  "categories_confirmed": true,
  "tags": [
    "terminal",
    "tmux",
    "claude-code",
    "agent-orchestration",
    "kanban",
    "canvas"
  ],
  "platform": [
    "macos",
    "linux",
    "windows",
    "ios",
    "web"
  ],
  "license": {
    "spdx": null,
    "scope": "unknown",
    "scope_text": "미확인 — 쓰기 전에 살펴보세요.",
    "url": "https://github.com/eneskirca/nodeterm?tab=License-1-ov-file",
    "note": null,
    "open_source": null
  },
  "language": "TypeScript",
  "source_urls": {
    "canonical": "https://nodeterm.dev/",
    "github": "https://github.com/eneskirca/nodeterm",
    "huggingface": null,
    "app_store": null,
    "sightings": [
      {
        "source": "github",
        "url": "https://github.com/eneskirca/nodeterm",
        "posted_at": "2026-09-05T02:00:00.000Z",
        "hn_url": null
      }
    ]
  },
  "numbers": {
    "as_of": "2026-09-16T21:00:00.000Z",
    "stars": 1853,
    "stars_unit": "GitHub stars",
    "stars_checked_at": "2026-09-15T19:35:14.142Z",
    "stars_observed_since_check": 0,
    "star_delta_24h": null,
    "star_delta_7d": 2,
    "star_delta_30d": 10,
    "star_delta_unit": "GitHub stars gained in the window, GH Archive events summed to as_of",
    "spark_14d": [
      null,
      2,
      6,
      null,
      null,
      null,
      null,
      null,
      null,
      2,
      null,
      null,
      null,
      null
    ],
    "hf_likes": null,
    "hf_likes_observed_at": null,
    "hn_points": null,
    "hn_points_observed_at": null,
    "store": null,
    "method": "별 총합 = GitHub에서 마지막으로 확인한 값(stars_checked_at) + 그 뒤 GH Archive에서 관측한 증가. 24h·7d·30d 증가는 GH Archive 시간별 이벤트를 기준 시각(as_of)까지 합한 값. 우리 점수는 없습니다."
  },
  "ranks": null,
  "activity": {
    "pushed_at": "2026-09-15T16:25:18.000Z",
    "owner_type": "User",
    "open_issues": 76,
    "contributors": 39,
    "releases_count": 53,
    "latest_release": {
      "tag": "v0.3.6",
      "published_at": "2026-09-14T20:34:54.000Z",
      "prerelease": false
    },
    "checked_at": "2026-09-15T19:35:14.142Z",
    "core_checked_at": "2026-09-15T19:35:14.142Z"
  },
  "signals": [
    {
      "kind": "back",
      "label": "과거 기록",
      "value": null
    }
  ],
  "images": {
    "og": "https://tesign.com/img/nodeterm-4d11a6b933.png",
    "cover": "https://tesign.com/img/nodeterm-4d11a6b933.png",
    "cover_width": 2400,
    "cover_height": 1260,
    "gallery": [
      "https://tesign.com/img/nodeterm-4d11a6b933.png",
      "https://tesign.com/img/nodeterm-bad3e99afd.webp",
      "https://tesign.com/img/nodeterm-8f2b759adc.webp",
      "https://tesign.com/img/nodeterm-0171c8507e.webp"
    ],
    "alt": "nodeterm 캔버스: 'api server' 터미널, RUNNING 배지가 붙은 Claude 에이전트 노드, 그 에이전트에 선으로 연결된 스티키 노트, 에디터와 diff 노드가 지도처럼 배치된 화면",
    "tier": 1
  },
  "dates": {
    "first_seen_at": "2026-09-13T09:42:43.668Z",
    "source_created_at": "2026-06-15T21:25:13.000Z",
    "discovery_hours": 2148.291852222222,
    "launch_signal_at": "2026-09-05T02:00:00.000Z",
    "kept_at": "2026-09-14T19:27:43.524Z",
    "first_published_at": "2026-09-14T19:27:43.735Z",
    "updated_at": "2026-09-15T04:36:56.913Z",
    "ingestion_mode": "backfill"
  },
  "notes": [
    "이 파일은 tesign.com 항목 페이지와 같은 빌드에서 같은 데이터로 만들어졌습니다. 소개 글은 편집자가 쓴 것이고, 숫자는 저장된 관측값입니다.",
    "JSON의 null은 관측하지 않았다는 뜻입니다 — 0이 아닙니다. 마크다운에서는 [확인 필요]로 적습니다.",
    "별 총합 = GitHub에서 마지막으로 확인한 값(stars_checked_at) + 그 뒤 GH Archive에서 관측한 증가. 24h·7d·30d 증가는 GH Archive 시간별 이벤트를 기준 시각(as_of)까지 합한 값. 우리 점수는 없습니다.",
    "과거 데이터를 되짚어 채운 항목입니다. 라이브 발견이 아닙니다.",
    "요약이며 법적 조언이 아닙니다."
  ]
}
