본문으로 건너뛰기

© 2026 Molayo

GH Trending릴리즈2026. 06. 15. 10:31

kenn-io/agentsview

요약

AI 코딩 에이전트의 세션을 탐색, 검색 및 비용을 추적할 수 있는 로컬 기반 도구인 agentsview를 소개합니다. 계정 없이 단일 바이너리나 Docker를 통해 설치 가능하며, 모든 데이터는 로컬 SQLite에 안전하게 저장됩니다.

핵심 포인트

  • AI 코딩 에이전트의 사용 세션 및 비용 추적 기능 제공
  • 계정이 필요 없는 로컬 데이터 저장 방식 (SQLite)
  • macOS, Linux, Windows 및 Docker 환경 지원
  • DNS 리바인딩 공격 방지를 위한 Host 헤더 검증 및 보안 설정 지원

모든 AI 코딩 에이전트(AI coding agents)를 탐색, 검색 및 비용 추적하세요. 하나의 바이너리, 계정 불필요, 모든 데이터는 로컬에 저장됩니다.

# macOS / Linux
curl -fsSL https://agentsview.io/install.sh | bash
# Windows
...

또는 GitHub Releases에서 데스크톱 앱 (macOS / Windows)을 다운로드하거나
homebrew을 통해 설치하세요: brew install --cask agentsview

또는 배포된 Docker 이미지를 실행하세요:

docker run --rm -p 127.0.0.1:8080:8080 \
-v agentsview-data:/data \
-v "$HOME/.claude/projects:/agents/claude:ro" \
...
agentsview serve # 서버 시작, 웹 UI 열기
agentsview usage daily # 일일 비용 요약 출력

처음 실행 시, agentsview는 사용자의 기기에 있는 모든 지원되는 에이전트로부터 세션(sessions)을 찾아내어 로컬 SQLite 데이터베이스에 동기화하고, http://127.0.0.1:8080에서 웹 UI를 엽니다.

agentsview는 루프백(loopback)에 바인딩되며, DNS 리바인딩 공격(DNS-rebinding attacks)을 방지하기 위해 요청의 Host 헤더를 검증합니다. SSH 포트 포워딩(port-forwarding), 리버스 프록시(reverse proxy), 또는 원격 개발 환경(예: exe.dev, Codespaces, Coder, WSL2)을 통해 접속하면 브라우저가 서버가 인식하지 못하는 Host를 전송하므로, /api/v1/settings와 같은 API 요청이 403 Forbidden으로 거부됩니다.

이를 해결하려면 브라우저에서 여는 정확한 오리진(origin)을 --public-url로 설정하여 서버를 재시작하세요:

# 브라우저가 `ssh -L 18080:127.0.0.1:8080 host`를 통해 http://127.0.0.1:18080 을 여는 경우
agentsview serve --public-url http://127.0.0.1:18080
# 브라우저가 포워딩된 호스트 이름을 여는 경우
...

추가적인 브라우저 오리진을 신뢰하려면 --public-origin (반복 사용 가능 또는 쉼표로 구분)을 사용하세요. UI를 루프백 너머로 노출하는 경우, --require-auth도 활성화하십시오.

컨테이너 이미지는 기본적으로 로컬 agentsview serve를 실행합니다. 대신 시작 명령을 agentsview pg serve로 전환하려면 PG_SERVE=1을 설정하세요.

docker-compose.prod.yaml이 프로덕션(production) 예시로 포함되어 있습니다:

docker compose -f docker-compose.prod.yaml up -d

포함된 compose 파일은 agentsview 데이터 디렉터리를 이름이 지정된 볼륨 (named volume)에 유지하며, Claude, Codex, Forge, OpenCode 세션 루트를 읽기 전용 (read-only)으로 마운트합니다. 컨테이너가 root 권한으로 실행되므로, 호스트 바인드 마운트 (host bind mount)보다는 /data에 대해 이름이 지정된 볼륨을 사용하는 것을 권장합니다. 만약 바인드 마운트를 사용한다면, 홈 디렉터리에 root 소유의 파일이 생성되는 것을 방지하기 위해 원하는 소유권을 가진 디렉터리를 미리 생성해 두십시오.

예제들은 UI를 루프백 (127.0.0.1)으로만 게시합니다. localhost 이외의 환경에 노출해야 하는 경우, --require-auth를 활성화하고 의도적으로 포트를 게시하십시오.

중요: 컨테이너화된 agentsview 인스턴스는 컨테이너 내부로 명시적으로 마운트한 디렉터리에서만 에이전트 세션을 발견할 수 있습니다. 에이전트의 세션 디렉터리를 마운트하고 일치하는 환경 변수 (env var)를 해당 디렉터리로 지정하지 않으면, 해당 에이전트는 UI에 나타나지 않습니다.

PostgreSQL 기반 시작 예시:

docker run --rm -p 127.0.0.1:8080:8080 \
-e PG_SERVE=1 \
-e AGENTSVIEW_PG_URL='postgres://user:password@postgres.example.com:5432/agentsview?sslmode=require' \
...

DuckDB 미러 시작 예시:

# 마운트된 SQLite 아카이브로부터 /data/sessions.duckdb를 채웁니다.
docker run --rm \
-v agentsview-data:/data \
...

Quack 시작 예시:

# 호스트/컨테이너로부터 Quack을 통해 로컬 DuckDB 미러를 노출합니다.
QUACK_TOKEN="$(openssl rand -base64 32)"
docker run --rm -p 127.0.0.1:9494:9494 \
...

Quack은 루프백에 두거나 TLS 뒤에 두십시오. 루프백이 아닌 바인드에서 일반 HTTP Quack을 사용하려면 --allow-insecure가 필요하며, 이는 신뢰할 수 있는 터널 또는 리버스 프록시 (reverse proxy) 뒤에서만 사용해야 합니다.

agentsview usage는 ccusage 및 유사한 도구들을 빠르게 대체할 수 있는 로컬 도구입니다.
이 도구는 Claude Code뿐만 아니라 모든 코딩 에이전트의 토큰 소비량과 컴퓨팅 비용을 추적합니다. 세션 데이터가 이미 SQLite에 인덱싱되어 있기 때문에, 실행할 때마다 원시 세션 파일 (raw session files)을 다시 파싱하는 도구들보다 100배 이상 빠릅니다.

# 일일 비용 요약 (기본값: 최근 30일)
agentsview usage daily
# 모델별 상세 내역
...

기능:

  • LiteLLM 요율을 통한 자동 가격 책정 (오프라인 폴백 (fallback) 포함)
  • 프롬프트 캐싱 (Prompt-caching)을 고려한 비용 계산 (캐시 생성 / 읽기 토큰)
  • --breakdown 옵션을 통한 모델별 상세 내역 제공
  • 날짜 필터링 (--since, --until, --all), 에이전트 필터링 (--agent)
  • 스크립팅을 위한 JSON 출력 (--json)
  • 시간대 인지형 날짜 버킷팅 (--timezone)
  • 독립형 작동 -- 서버가 필요 없으며, 명령어를 실행하기만 하면 됩니다.

agentsview session usage <id>는 세션별 토큰 통계와 단일 세션에 대한 비용 추정치를 출력합니다. 출력 결과에는 세션의 총 출력 토큰(total output tokens)과 피크 컨텍스트 토큰(peak context tokens)이 보고되며, 해당 세션의 모델에 대한 가격 정보가 있는 경우 (has_cost) USD 단위의 비용 추정치(cost_usd)가 함께 제공됩니다. 비용은 내부적으로 입력/출력 및 캐시 토큰을 기반으로 계산되지만, 비용과 함께 보고되는 것은 출력 토큰 및 피크 컨텍스트 총량뿐입니다.

# 특정 세션의 토큰 사용량 및 비용 출력
agentsview session usage <id>
# 스크립팅을 위한 JSON 출력
...

동일한 세션별 사용 데이터는 REST API를 통해 사용할 수 있습니다:

GET /api/v1/sessions/{id}/usage

응답에는 CLI JSON 스키마의 session_id, agent, project, total_output_tokens, peak_context_tokens, has_token_data, cost_usd, has_cost, models, unpriced_models 필드가 포함됩니다. HTTP 응답에는 server_running: true도 포함됩니다. 기존 세션은 토큰 또는 비용 데이터가 없는 경우에도 200을 반환하며, 존재하지 않는 세션은 404를 반환합니다.

사용 중단 예정(deprecated)인 별칭 agentsview token-use <id>는 호환성을 위해 여전히 사용할 수 있으며, 이제 비용 추정치도 함께 보고합니다.

agentsview stats는 기록된 세션에 대해 윈도우 범위의 분석(window-scoped analytics)을 생성합니다: 총계, 아키타입 (자동화 vs quick/standard/deep/marathon), 세션 지속 시간, 사용자 메시지 수, 피크 컨텍스트 및 턴당 도구(tools-per-turn)의 분포, 그리고 캐시 경제성, 도구/모델/에이전트 혼합, 시간별 상세 내역을 제공합니다. --format json 출력은 버전 관리된 v1 스키마(schema_version: 1)를 따릅니다.

)
하위 소비자(downstream consumers)가 사용하기에 적합합니다.

기본적으로 stats는 로컬 SQLite 아카이브만 읽습니다. Git 기반의 결과 지표(outcome metrics)는 대규모 또는 누락된 리포지토리(repo)에서 속도가 느리거나 불안정할 수 있으므로 선택 사항(opt-in)으로 설정되어 있습니다. 커밋(commits)/LOC(코드 라인 수)/변경 파일 정보를 보려면 --include-git-outcomes를 사용하고, gh를 통한 GitHub PR 횟수를 확인하려면 --include-github-outcomes를 사용하세요 (이 옵션은 git 결과 지표도 활성화합니다).

# 지난 28일간의 사람이 읽기 쉬운 요약
agentsview stats
# 고정된 날짜 범위에 대한 기계 판독 가능 JSON
...
대시보드세션 뷰어
검색활동 히트맵

전체 텍스트 검색 (FTS5): 모든 메시지 콘텐츠를 대상으로 수행
토큰 사용량 및 비용 대시보드: 세션별 및 모델별 비용 상세 내역, 일일 지출 차트 등을 웹 UI에서 제공
분석 대시보드: 활동 히트맵, 도구 사용량, 속도 지표(velocity metrics), 프로젝트별 상세 내역 제공
실시간 업데이트: 활성 세션이 새 메시지를 수신할 때 SSE를 통해 업데이트
키보드 우선(Keyboard-first) 내비게이션: (j / k / [ / ], Cmd+K 검색, ?로 모든 단축키 확인)
내보내기(Export): 세션을 HTML로 내보내거나 GitHub Gist에 게시

agentsview는 다음의 모든 곳에서 세션을 자동으로 검색합니다:

에이전트 (Agent)세션 디렉토리
Claude Code~/.claude/projects/
...

각 디렉토리는 환경 변수로 재설정할 수 있습니다. 자세한 내용은 구성(configuration) 문서를 참조하세요.

Antigravity CLI 세션은 이제 디스크 상에 두 가지 형식으로 나타납니다. 최신 릴리스는 대화 궤적(conversation trajectories)을 SQLite .db 파일로 저장하며, agentsview는 이를 직접 인덱싱합니다. 이전 릴리스는 어시스턴트 턴(assistant turns)과 도구 호출(tool calls)을 AES-GCM으로 암호화된 .pb 파일에 저장했습니다. 이러한 세션의 경우, agentsview는 history.jsonl의 프롬프트와 brain/ 디렉토리 아래의 모든 일반 텍스트 아티팩트(계획, 워크스루, 체크포인트)를 사용하여 **요약 모드(summary mode)**로 전환됩니다.

이전 .pb 세션의 전체 트랜스크립트(transcripts)를 잠금 해제하려면 agentsview와 함께 agy-reader를 실행하세요. agy-reader는 로컬 Antigravity 데몬과 통신하여 각 대화를 복호화하고, 암호화된 .pb 파일 옆에 <uuid>.trajectory.json 사이드카(sidecar) 파일을 작성합니다.

파일입니다. agentsview의 파일 워처 (file watcher)가 사이드카 (sidecar)를 자동으로 감지하고 이를 파싱하므로, 요약 모드 (summary mode)를 위해 agentsview를 재시작할 필요가 없습니다.

go install github.com/mjacobs/agy-reader@latest
# 기존 세션에 대한 사이드카 생성...
agy-reader --sync
...

agy-reader~/.gemini/antigravity-cli/cli.log를 파싱하여 Antigravity 데몬 (daemon) URL을 자동으로 찾아냅니다. 만약 탐색에 실패하면 (예: 로그가 로테이트(rotated)된 경우), 명령어가 포트를 찾고 ANTIGRAVITY_DAEMON_URL을 수동으로 내보낼(export) 수 있도록 플랫폼별 지침을 출력합니다.

사이드카는 사용자의 머신에 머무릅니다. agentsview는 이를 생성하거나 읽기 위해 외부 요청을 보내지 않으며, 사이드카를 신뢰할 수 없는 구조화된 입력 (untrusted structured input)으로 취급합니다. 신뢰 모델에 대해서는 SECURITY.md를 참조하세요.

팀 대시보드를 위해 세션 데이터를 공유 PostgreSQL 인스턴스로 푸시(push)하세요:

agentsview pg push # 로컬 데이터를 PG로 푸시
agentsview pg serve # PG로부터 웹 UI 제공 (읽기 전용)

pg push를 수동으로 실행하지 않고도 공유 PostgreSQL 데이터베이스를 최신 상태로 유지하려면, 자동 푸시 데몬 (auto-push daemon)을 실행하세요. 이 데몬은 세션 디렉토리를 감시하며, 새로운 세션이 기록된 직후에 푸시를 수행하며, 안전장치로서 주기적인 하한선 (floor)을 가집니다:

agentsview pg push --watch # 포그라운드 실행, 중단하려면 Ctrl-C
agentsview pg push --watch --debounce 1m # 사용자 정의 병합(coalesce) 창
agentsview pg push --watch --interval 5m # 사용자 정의 하한선(floor) 간격

데몬은 pg push와 동일한 [pg] 설정을 읽으므로, PostgreSQL DSN이 설정 파일(또는 설정 파일에서 확장되는 환경 변수)에 설정되어 있어야 합니다. 설정 파일에는 자격 증명이 포함되어 있으므로 보호해야 합니다:

chmod 600 ~/.agentsview/config.toml

OS 서비스(macOS의 launchd, Linux의 systemd --user)로 무인 실행하려면:

agentsview pg service install # 유닛(unit) 생성, 활성화 및 시작
agentsview pg service status # 매니저 상태 표시
agentsview pg service logs -f # 서비스 로그 추적
...

Linux 헤드리스(headless) 머신: systemd --user 서비스는 로그아웃 시 중단되며, 사용자에 대해 링거링(lingering)이 활성화되지 않는 한 부팅 시 시작되지 않습니다. install

이를 감지하고 명령어를 출력합니다. 직접 실행할 수도 있습니다:

loginctl enable-linger "$USER"

설정 및 구성에 대해서는 PostgreSQL 문서를 참조하세요.

DuckDB 지원은 미러 백엔드 (mirror backend)이며, 로컬 SQLite 아카이브 (archive)를 대체하는 것이 아닙니다. agentsview serve는 여전히 SQLite로의 기본 인제스션 (ingestion)을 수행합니다. 휴대 가능한 분석 파일이 필요하거나, 미러로부터 읽기 전용 로컬 서빙을 원하거나, DuckDB의 Quack 프로토콜을 통해 원격 읽기 액세스를 원하는 경우에 DuckDB를 사용하세요.

agentsview duckdb push # SQLite를 DuckDB로 미러링
agentsview duckdb status # 미러 동기화 상태 표시
agentsview duckdb serve # DuckDB로부터 웹 UI 서빙 (읽기 전용)
...

agentsview duckdb serve[duckdb].path 또는 AGENTSVIEW_DUCKDB_PATH를 읽습니다. 원격 Quack 엔드포인트 (endpoint)에서 서빙하려면 대신 AGENTSVIEW_DUCKDB_URLAGENTSVIEW_DUCKDB_TOKEN을 설정하세요. Quack은 아직 새로운 DuckDB 프로토콜이므로, agentsview는 보수적인 기본값을 유지합니다. 로컬 Quack 서빙은 루프백 (loopback)에 바인딩되며, 토큰이 필요하고, --allow-insecure가 명시되지 않는 한 루프백이 아닌 일반 HTTP는 거부합니다. 원격 사용의 경우, TLS URL을 선호하거나 Quack을 인증된 터널/프록시 (tunnel/proxy) 뒤에 배치하세요.

백엔드 모드 (Backend modes):

  • SQLite: 기본 로컬 아카이브, 파일 동기화, FTS5 검색 및 쓰기 가능한 UI.
  • PostgreSQL: 선택적인 공유 팀 백엔드; SQLite에서 푸시하고 읽기 전용으로 서빙.
  • DuckDB: 선택적인 미러 파일 또는 Quack 엔드포인트; SQLite에서 푸시하고 읽기 전용으로 서빙.

문제 해결 (Troubleshooting):

  • duckdb push가 미러를 여는 데 실패하면, 바이너리가 해당 플랫폼용 DuckDB Go 드라이버와 함께 빌드되었는지, 그리고 AGENTSVIEW_DUCKDB_PATH가 쓰기 가능한 파일 위치를 가리키고 있는지 확인하세요.
  • Quack 명령이 확장 프로그램 (extension) 오류와 함께 실패하면, 내장된 DuckDB 런타임 (runtime)에 Quack 확장 프로그램이 포함되도록 agentsview 바이너리를 업데이트하세요.
  • 원격 연결 (attach)이 실패하면, 토큰, quack: URL, TLS/프록시 종료 (termination), 그리고 서버가 의도적으로 --allow-insecure와 함께 시작되었는지 확인하세요.

일반적인 non-loopback 바인딩(binds)에 대해서입니다. - 현재 DuckDB 검색은 substring/regex 폴백(fallback) 동작을 사용합니다. SQLite FTS5는 기본 로컬 서빙을 위한 인덱싱된 검색 경로로 유지됩니다.

agentsview는 서버가 시작될 때와 실행 중인 동안 매 24시간마다, 안정적인 무작위 설치 ID를 이벤트 DistinctId로 사용하여 PostHog로 제한된 익명 daemon_active 텔레메트리(telemetry) 핑(ping)을 보냅니다. 해당 이벤트에는 application=agentsview, 앱 버전, 커밋(commit), OS, 그리고 CPU 아키텍처가 포함되며, $process_person_profile=false$geoip_disable=true 설정이 적용됩니다. 세션, 프로젝트, 프롬프트(prompt), 파일 경로, 계정 또는 머신 식별 정보는 포함하지 않습니다. AGENTSVIEW_TELEMETRY_ENABLED=0 또는 TELEMETRY_ENABLED=0을 사용하여 텔레메트리(telemetry)를 비활성화할 수 있습니다.

텔레메트리(telemetry)는 환경에 관계없이 Go 테스트 바이너리(binaries)에서도 하드웨어적으로 비활성화됩니다.

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub Trending All (daily)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0