---
ui_doc_type: component
component_id: node-card
status: 구현됨
source_evidence:
  - type: code
    path: apps/client/lib/widgets/nodes_panel_sections.dart
    notes: NodeStatusCard renders one Card per node with status, label, config, adapters, and provider catalog.
  - type: docs
    path: README.md
    notes: Node is the Edge-connected executor responsible for runtime adapter execution.
  - type: user
    path: null
    notes: Initial scaffold requested by user.
---

# Node Card

Component ID: `node-card`

Status: `구현됨`

## Source Evidence

| Type | Path | Notes |
|------|------|-------|
| code | `apps/client/lib/widgets/nodes_panel_sections.dart` | `NodeStatusCard`가 alias/id, connected badge, label, config, adapter chip을 가진 card를 렌더링한다. |
| docs | `README.md` | Node는 Edge에 연결되는 실제 실행자다. |
| user | 없음 | 초기 agent-ui 생성을 요청했다. |

## Purpose

단일 Node의 identity, connectivity, execution config를 한눈에 보여준다.

## Used By

- `nodes`: `nodes.node-list`, `nodes.node-status`, `nodes.adapter-config`

## Anatomy

- alias or node id
- connection badge
- optional label
- concurrency limit
- adapter chips
- provider catalog section

## Variants

- connected
- offline
- with config
- without config

## States

- default
- loading: view-level state
- empty: no adapters configured
- error: view-level state
- disabled: 없음

## Rules

- alias가 있으면 alias를 primary label로 사용한다.
- adapter enabled/disabled는 badge color와 icon을 함께 사용한다.

## Decision History

- 2026-06-25: `NodesPanel`의 Node card pattern을 component로 정의했다.
- 2026-07-18: 구현 근거를 책임 분리된 `NodeStatusCard`와 `nodes_panel_sections.dart`로 동기화했다.
