---
ui_doc_type: component
component_id: console-shell
status: 구현됨
source_evidence:
  - type: code
    path: packages/flutter/iop_console/lib/src/iop_console_shell.dart
    notes: IopConsoleShell defines left rail section navigation and content slots.
  - type: docs
    path: apps/client/README.md
    notes: iop_console is the IOP-owned widget boundary for standalone and embedded consumers.
  - type: user
    path: null
    notes: Initial scaffold requested by user.
---

# Console Shell

Component ID: `console-shell`

Status: `구현됨`

## Source Evidence

| Type | Path | Notes |
|------|------|-------|
| code | `packages/flutter/iop_console/lib/src/iop_console_shell.dart` | `IopConsoleShell`, `_IopConsoleRail`, `_RailButton`, `_IopPlaceholder`가 shell structure를 구현한다. |
| docs | `apps/client/README.md` | standalone IOP app과 외부 embedding consumer가 같은 widget boundary를 사용한다고 설명한다. |
| user | 없음 | 초기 agent-ui 생성을 요청했다. |

## Purpose

IOP console view들을 좌측 rail navigation과 section content slot으로 묶는다.

## Used By

- `overview`: shell initial section
- `edges`: shell section
- `nodes`: shell section
- `runtime`: shell section
- `execution-logs`: shell section
- `agent`: shell section

## Anatomy

- left rail
- section icon buttons with tooltip
- content slot
- placeholder fallback

## Variants

- default: dark ops/dev shell

## States

- default
- selected section
- placeholder
- disabled: 없음

## Rules

- shell은 view content를 소유하지 않고 section slot을 mount한다.
- `maintenance`와 `settings`는 package shell placeholder가 있으나 현재 app에서 concrete panel을 주입하지 않는다.

## Decision History

- 2026-06-25: `IopConsoleShell` 구현을 기준으로 component를 정의했다.
