AI CONFIG MONITOR
Real-time CLI dashboard for monitoring AI vendor configurations
Claude • Cursor • VS Code • Gemini • Docker MCP — all in one terminal
Installation •
Features •
Usage •
Architecture
┌──────────────────────────────────────────────────────────────────────────┐
│ AI CONFIG MONITOR v1.2.4 14:47:23 │
│ 9 MCP servers · 16 skills · 2 hooks · 1 plugin │
│ PROJECT ~/Documents/lotus/my-project │
├──────────────────────────────────────────────────────────────────────────┤
│ [1] MCP Servers [2] Skills [3] Hooks [4] Overview │
├──────────────────────────────────────────────────────────────────────────┤
│ !! ALERT context7: ACTIVE -> STOPPED 12s ago │
│ │
│ VENDOR SERVER SCOPE TRANSPORT STATUS DETAIL │
│ ────────────────────────────────────────────────────────────────────── │
│ Claude MCP_DOCKER global gateway ● ACTIVE 7 srvs │
│ └─ docker context7 global container ● ACTIVE 6 tools │
│ └─ docker fetch global container ● ACTIVE 1 tool │
│ └─ docker filesystem global container ● ACTIVE 11 tools │
│ └─ docker memory global container ● ACTIVE 9 tools │
│ └─ docker obsidian global container ● ACTIVE 12 tools │
│ └─ docker playwright global container ● ACTIVE 27 tools │
│ └─ docker puppeteer global container ● ACTIVE 5 tools │
│ Claude chrome-devtools global npx ● RUNNING PID 3590 │
│ Cursor context7 global http ● 142ms remote │
│ VS Code (none) global - ─ EMPTY - │
│ Gemini (none) global - ─ EMPTY - │
│ │
│ [!] context7: ACTIVE → STOPPED (14:45:12) │
├──────────────────────────────────────────────────────────────────────────┤
│ q quit · r refresh · tab next · 1-4 jump 10s poll · Watching 10 files│
└──────────────────────────────────────────────────────────────────────────┘
AI 개발 환경이 복잡해졌습니다. Claude Desktop, Cursor, VS Code, Gemini CLI 각각의 MCP 설정이 흩어져 있고, Docker MCP 서버는 별도로 관리되며, Skills/Hooks/Plugins까지 추적해야 합니다.
ai-config-monitor는 이 모든 설정을 하나의 터미널 대시보드에서 실시간으로 모니터링합니다.
- 설정 파일이 변경되면 자동 감지하여 즉시 반영
- MCP 서버 상태를 10초 간격 헬스체크 (
--interval로 조절 가능) - 서버 다운 시 깜빡이는 ALERT 배너 + 터미널 벨 + 데스크톱 알림
- 별도 웹 서버 없이 순수 터미널 UI (ANSI escape codes)
| Vendor | Config Location | Detection |
|---|---|---|
| Claude Desktop | claude_desktop_config.json |
stdio, npx, gateway, http, sse |
| Docker MCP | ~/.docker/mcp/registry.yaml |
container status, gateway sub-servers |
| Cursor | ~/.cursor/mcp.json |
stdio, http |
| VS Code | ~/Library/Application Support/Code/User/mcp.json |
stdio, http, sse |
| Gemini CLI | ~/.gemini/antigravity/mcp_config.json |
stdio, http |
| Project | .mcp.json (project root) |
project-level MCP servers |
| Tab | Content |
|---|---|
| MCP Servers | Full server tree with vendor, scope, transport, live status, response time |
| Skills | Installed skills inventory with lock status and scope |
| Hooks | PreToolUse/PostToolUse hooks with matcher patterns |
| Overview | Aggregate stats, health breakdown, vendor distribution, recent alerts |
모든 설정 항목에 출처(scope)를 표시합니다:
| Scope | Meaning | Example |
|---|---|---|
global |
Home directory (user-wide) | ~/.claude/settings.json, ~/.cursor/mcp.json |
project |
Project-level config | .mcp.json, .claude/settings.json |
project.local |
Local overrides (gitignored) | .claude/settings.local.json |
- Docker:
docker mcp server list파싱 + 컨테이너 상태 확인 - Process: OS 프로세스 테이블 검색 (npx/stdio 서버)
- HTTP: 엔드포인트 ping with 2s timeout
- Alert: ACTIVE → STOPPED 전환 시 즉시 알림
서버 다운 감지 시 탭 바로 아래에 빨강/노랑 깜빡이는 ALERT 배너가 나타납니다:
├──────────────────────────────────────────────────────────────────────────┤
│ !! ALERT context7: ACTIVE -> STOPPED 12s ago │ ← 빨강/노랑 교대 깜빡임
│ │
│ VENDOR SERVER ... │
- 30초간 표시 후 자동 소멸
- 500ms 간격으로
bgRed/bgYellow교대 깜빡임 - 어떤 탭에 있든 즉시 확인 가능
서버 상태 이상 시 심각도에 따라 다른 터미널 벨 패턴이 울립니다:
| Level | Pattern | Trigger |
|---|---|---|
| Urgent | 삐삐삐 · 삐삐삐 (6회 빠른 비프) | → ERROR |
| Warning | 삐용 · 삐용 · 삐용 (3회 비프) | → STOPPED |
| Info | 삐 (1회 비프) | 기타 상태 변경 |
데스크톱 알림(macOS Notification Center, Windows Toast, Linux notify-send)도 동시에 전송됩니다.
설정 파일 변경을 fs.watch로 실시간 감지합니다. 파일 저장 즉시 대시보드에 반영됩니다.
Requires Bun v1.0+
npm install -g ai-config-monitor
ai-monitor# Clone & install
git clone https://github.com/4sizn/ai-config-monitor.git
cd ai-config-monitor
bun install
# Global link
bun run link
# Now available globally
ai-monitor# Compile to single executable (no runtime needed)
bun run build:bin
# Output: dist/ai-monitor
./dist/ai-monitor# Monitor current directory as project
ai-monitor
# Specify project path
ai-monitor --project /path/to/your/project
# Custom health check interval (seconds, default: 10, min: 3)
ai-monitor --interval 5
# Check if update is available (exit code 10 when available)
ai-monitor update --check
# Update to latest npm release immediately
ai-monitor update
# Direct run without install
bun run src/index.ts
bun run src/index.ts --project . --interval 5| Key | Action |
|---|---|
1 2 3 4 |
Jump to tab |
Tab |
Next tab |
r |
Manual refresh |
q / Ctrl+C |
Quit |
src/
├── index.ts # CLI entry point
├── app.ts # Main loop (state + render cycle)
├── version.ts # App name/version constants
│
├── update/
│ └── updater.ts # npm latest check + global update
│
├── renderer/ # Pure ANSI terminal renderer
│ ├── screen.ts # Alternate screen buffer management
│ ├── ansi.ts # Cursor, color, clear helpers
│ ├── box.ts # Unicode box drawing + ASCII fallback
│ └── theme.ts # Color palette (vendor-branded)
│
├── panels/ # Tab views (each returns string[])
│ ├── mcp-panel.ts # MCP server table with tree view
│ ├── skills-panel.ts # Skills inventory
│ ├── hooks-panel.ts # Hooks configuration
│ └── overview-panel.ts # Summary statistics
│
├── collectors/ # Config file parsers (pure data)
│ ├── mcp-claude.ts # Claude Desktop
│ ├── mcp-docker.ts # Docker registry.yaml
│ ├── mcp-cursor.ts # Cursor
│ ├── mcp-vscode.ts # VS Code
│ ├── mcp-gemini.ts # Gemini CLI
│ ├── mcp-project.ts # Project .mcp.json
│ ├── skills.ts # Skills directory + lock file
│ ├── hooks.ts # Hooks (global + project)
│ └── plugins.ts # Plugins
│
├── health/ # Server health checking
│ ├── checker.ts # Configurable polling orchestrator
│ ├── docker-health.ts # Docker container + MCP server list
│ ├── process-health.ts # OS process table search
│ └── http-health.ts # HTTP endpoint ping
│
├── platform/ # Cross-platform abstraction
│ ├── paths.ts # OS-specific config file paths
│ └── process.ts # Process lookup + Docker cache
│
├── watcher/
│ └── file-watcher.ts # fs.watch + debounce
│
├── notify/
│ └── notifier.ts # Alert patterns + desktop notification
│
└── types/
└── index.ts # All type definitions
| Decision | Choice | Rationale |
|---|---|---|
| Runtime | Bun | Bun.stringWidth(), Bun.stripANSI(), Bun.file(), Bun.$ |
| UI | Raw ANSI escape codes | No Ink, no React. DOS-style direct screen control |
| Colors | ansis |
Chalk alternative with full Bun compatibility |
| Screen | Alternate buffer (\x1b[?1049h) |
Preserves original terminal on exit |
| Rendering | Dirty flag + 100ms interval | Minimal redraws, no flicker |
| Health check | 10s polling (configurable) | Fast detection with shared process cache |
| Notifications | node-notifier + bell pattern |
Native OS notifications + audible terminal alerts |
| macOS | Windows | Linux | |
|---|---|---|---|
| Config detection | ~/Library/... | %APPDATA%/... | ~/.config/... |
| Process search | ps -ax |
tasklist /v /fo csv |
ps -ax |
| Docker health | docker mcp server list |
Same | Same |
| Desktop notifications | Notification Center | Toast | notify-send |
| Terminal bell | \x07 pattern |
\x07 pattern |
\x07 pattern |
| Box drawing | Unicode | Unicode (WT) / ASCII (cmd) | Unicode |
| Component | Package | Note |
|---|---|---|
| Runtime | Bun | Built-in string width, ANSI strip, file I/O |
| Colors | ansis | 6KB, ESM/CJS, 256/truecolor |
| YAML | yaml | Docker registry.yaml parsing |
| Notifications | node-notifier | Cross-platform native alerts |
MIT