graykode/abtop
요약
abtop은 Claude Code, Codex CLI, OpenCode와 같은 AI 코딩 에이전트의 상태를 실시간으로 모니터링할 수 있는 TUI 도구입니다. 토큰 사용량, 컨텍스트 윈도우 점유율, 속도 제한 및 오픈 포트 상태를 한눈에 파악할 수 있습니다.
핵심 포인트
- Claude Code, Codex CLI, OpenCode 세션 통합 모니터링 지원
- 토큰 사용량, 컨텍스트 윈도우 %, Rate Limits 실시간 확인 가능
- 고아 포트(Orphan port) 탐지 및 프로세스 상태 관리 기능 제공
- macOS, Linux, Windows를 지원하는 읽기 전용(Read-only) 도구
- tmux와 연동하여 에이전트 실행 창으로 즉시 전환 가능
btop과 유사하지만, AI 코딩 에이전트(AI coding agents)를 위한 도구입니다.
Claude Code, Codex CLI, OpenCode의 모든 세션을 한눈에 확인하세요 — 토큰 사용량 (token usage), 컨텍스트 윈도우 (context window) %, 속도 제한 (rate limits), 자식 프로세스 (child processes), 오픈 포트 (open ports) 등을 지원합니다. Claude Code, Codex CLI, OpenCode 세션은 로컬 프로세스/파일 상태로부터 탐지되므로, macOS, Linux, Windows 전반에서 여러 활성 프로필을 지원합니다.
- 여러 프로젝트에서 3개 이상의 에이전트를 실행 중인가요? 한 화면에서 모두 확인하세요.
- 속도 제한 (rate limits)에 걸리고 있나요? 할당량 (quota)을 실시간으로 확인하세요.
- 에이전트가 서버를 생성하고 종료하는 것을 잊었나요? 고아 포트 (Orphan port) 탐지 기능을 제공합니다.
- 컨텍스트 윈도우 (context window)가 가득 차고 있나요? 세션별 % 바와 경고를 제공합니다.
모두 읽기 전용 (read-only)입니다. API 키가 필요 없습니다. 인증 (auth)도 필요 없습니다.
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/graykode/abtop/releases/latest/download/abtop-installer.sh | sh
cargo install abtop
네이티브 지원 — WSL이 필요하지 않습니다. 프로세스 정보에는 sysinfo를 사용하고, 리스닝 포트 (listening ports)에는 netstat -ano를 사용합니다.
powershell -c "irm https://github.com/graykode/abtop/releases/latest/download/abtop-installer.ps1 | iex"
또는 PATH에 Git이 설정된 모든 터미널에서 cargo install abtop을 실행하세요. Claude Code 설정은 %USERPROFILE%\.claude에서 자동으로 확인됩니다.
모든 플랫폼을 위한 사전 빌드된 바이너리 (Pre-built binaries)는 GitHub Releases 페이지에서 사용할 수 있습니다.
abtop # TUI 실행
abtop --once # 스냅샷을 출력하고 종료
abtop --json # 하나의 JSON 스냅샷을 출력하고 종료 (스크립트/도구용)
...
권장 터미널 크기: 120x40 이상. 최소 80x24 — 크기가 작아지면 패널이 자연스럽게 숨겨집니다.
abtop은 단독으로 작동하지만, tmux 내부에서 실행하면 세션 점프 (session jumping) 기능을 사용할 수 있습니다 — Enter를 눌러 해당 에이전트가 실행 중인 창 (pane)으로 직접 전환하세요.
tmux new -s work
# pane 0: abtop
# pane 1: claude (project A)
...
| 기능 | Claude Code | Codex CLI | OpenCode |
|---|---|---|---|
| 세션 탐지 (Session Discovery) | ✅ | ✅ | ✅ |
| ... |
OpenCode 지원은 ~/.local/share/opencode/opencode.db에 있는 로컬 SQLite 데이터베이스를 읽으며, PATH에 sqlite3가 설치되어 있어야 합니다.
4가지 색약 친화적 (colorblind-friendly) 옵션(high-contrast, protanopia, deuteranopia, tritanopia)을 포함하여 12개의 내장 테마가 제공됩니다. 실행 중에는 t를 눌러 순환하거나, --theme <name> 옵션으로 실행할 수 있습니다. 선택한 설정은 ~/.config/abtop/config.toml에 저장됩니다.
| btop (기본값) | dracula | catppuccin |
|---|---|---|
| tokyo-night | gruvbox | nord |
|---|---|---|
색약 친화적 (Colorblind-friendly) 테마:
| high-contrast | protanopia |
|---|---|
| deuteranopia | tritanopia |
|---|---|
밝은 터미널을 위한 라이트 테마 (밝은 터미널용: light — Solarized cream, white — GitHub 스타일의 순수 흰색):
| light | white |
|---|---|
~/.config/abtop/config.toml은 다음을 지원합니다:
theme = "btop"
# TUI에서 특정 에이전트 CLI를 숨깁니다 (대소문자 구분 안 함).
# 하나의 에이전트만 사용하며 더 깔끔한 화면을 원하는 경우 유용합니다.
...
| 코드 (Code) | 언어 (Language) |
|---|---|
en | 영어 (English, 기본값) |
zh | 중국어 간체 (Simplified Chinese) |
language가 설정되지 않은 경우, abtop은 LANG에서 자동으로 감지합니다. zh로 시작하는 모든 값은 중국어 간체로 전환되며, 그 외에는 영어로 설정됩니다.
| 키 (Key) | 동작 (Action) |
|---|---|
↑ /↓ 또는 k /j | 세션 선택 (Select session) |
Enter | 세션 터미널로 이동 (tmux 전용) |
x | 선택된 세션 종료 (Kill selected session) |
X | 모든 고아 포트 종료 (Kill all orphan ports) |
t | 테마 순환 (Cycle theme) |
1 –5 | 패널 가시성 토글 (Toggle panel visibility) |
Esc | 설정 페이지 열기/닫기 (Open/close config page) |
q | 종료 (Quit) |
r | 강제 새로고침 (Force refresh) |
abtop은 라이브러리 크레이트 (library crate)이기도 하므로, 로컬 도구들이 프로세스 내부에서 데이터 수집 레이어를 재사용할 수 있습니다. 재스캔이나 서브프로세스 생성 없이 TUI가 렌더링하는 것과 동일한 상태를 직렬화할 수 있습니다.
abtop --json # 스크립트용 일회성 JSON 스냅샷
장시간 실행되는 소비자(consumer)를 위해, App을 빌드하고 App::tick_no_summaries()로 새로고침한 뒤(이 함수는 claude --print를 실행하지 않으므로 Claude 할당량(quota)을 소모하지 않습니다), App::to_snapshot(interval_ms)를 호출하여 JSON 직렬화가 가능한 [Snapshot]을 얻을 수 있습니다.
use abtop::app::App;
use abtop::{config, theme::Theme};
let cfg = config::load_config();
...
App은 Send가 아니므로 (collector들을 소유함), 하나의 스레드에 유지하고 직렬화된 JSON을 다른 곳으로 전달해야 합니다. abtop-web-ui는 이 API를 기반으로 구축된 로컬 우선 (local-first) 웹 대시보드로서, 이를 참조하여 사용하는 소비자입니다.
abtop은 로컬 파일과 로컬 프로세스/열린 파일 메타데이터(metadata)만 읽습니다. API 키나 인증(auth)은 필요하지 않습니다. TUI 및 --once 출력에서는 도구 이름과 파일 경로가 표시되지만, 파일 내용과 프롬프트 텍스트는 절대 표시되지 않습니다. 세션 요약은 claude --print를 통해 생성되며, 이는 자체적으로 API 호출을 수행합니다. 이것이 유일한 간접적인 네트워크 사용입니다.
JSON 스냅샷(snapshot)에는 summary, chat_messages, 작업 디렉토리, 설정 루트(config roots), 도구 호출 미리보기(tool-call previews), 자식 프로세스 명령, 토큰 수(token counts), 포트 메타데이터를 포함한 더 풍부한 로컬 대시보드 데이터가 포함됩니다. 채팅 텍스트는 collector에 의해 제한 및 편집(redacted)되지만, 여전히 로컬 기록(transcripts)에서 파생되므로 민감한 프로젝트 컨텍스트를 포함할 수 있습니다. JSON 스냅샷을 로컬/개인 데이터로 취급하고, 자체적인 액세스 제어(access controls) 없이 공유 로그에 기록하거나 네트워크에 노출하는 것을 피하십시오.
최근 abtop의 형태를 잡는 데 큰 도움을 준 @tbouquet에게 깊은 감사를 표합니다. 테마(themes), 설정 오버레이(config overlay) 및 패널 토글, 세션 필터링, 서브에이전트 트리 뷰(subagent tree view), 압축 감지 기능이 포함된 컨텍스트 윈도우 게이지(context window gauge)를 비롯하여, 지속적인 수정 및 보안 강화(security hardening)를 수행해 주었습니다.
MIT
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending Rust (weekly)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기