agenteye)는 AgentEye 배포 환경을 위한 터미널 클라이언트입니다. 데이터(세션, 이벤트 로그, 평가)를 조회하고 조직을 관리(API 키, 사용자, 설정, 알림, 인시던트, 저장된 쿼리)합니다. 대시보드에서 할 수 있는 모든 작업을 스크립트나 코딩 에이전트에서도 수행할 수 있습니다. 모든 명령은 --json 플래그를 지원하므로, 터미널 앞의 사람에게도, 결과를 파싱하는 코딩 에이전트(Claude Code, Cursor)에게도 동일하게 활용할 수 있습니다.
이 문서는agenteyeCLI에 관한 것으로, 컬렉터 데몬(agenteye-collector)과는 별개의 도구입니다. CLI는 대시보드와 통신하고, 컬렉터는 서버로 이벤트를 전송합니다. 컬렉터에 대한 내용은 컬렉터 설치를 참고하세요.
설치
CLI는 **agenteye**라는 이름으로 공개 PyPI에 게시되어 있습니다. AgentEye Python SDK도 동일한 agenteye 배포 이름을 사용하므로, 두 패키지가 하나의 가상 환경에서 충돌하지 않도록 격리된 환경(pipx 또는 uv tool)에 CLI를 설치하세요.
pip install agenteye도 사용할 수 있습니다. CLI는 Python 3.10 이상이 필요하며 GitHub 토큰은 필요하지 않습니다. 공개 패키지입니다.
설치된 명령은 **agenteye**입니다:
인증
CLI는 이메일로 전송되는 일회용 코드를 사용해 대시보드에 인증합니다:~/.agenteye/cli.json에 저장됩니다(본인만 읽을 수 있도록 모드 0600으로 설정). 기본적으로 24시간 동안 유효하며, 만료되면 agenteye login을 다시 실행하세요.
whoami는 세션이 없거나 만료된 경우에도 오류를 발생시키지 않습니다. 대신 logged_in: false를 반환하므로, 스크립트나 에이전트가 안전하게 인증 상태를 확인할 수 있습니다(기본 URL이 설정되지 않았거나 대시보드에 연결할 수 없는 경우에는 여전히 0이 아닌 종료 코드를 반환할 수 있습니다).
요구 사항: 이메일이 대시보드 로그인 권한이 있어야 하며(AgentEye 관리자에게 문의), 대시보드가 기본 URL에서 접근 가능해야 합니다(구성 참고). 코드를 요청했는데 수신되지 않는다면, 해당 이메일이 아직 대시보드 접근 권한을 부여받지 않은 것일 수 있습니다.
조직 선택 (멀티 테넌트)
계정이 둘 이상의 조직에 속해 있다면, 로그인 시 활성 조직을 선택하세요. 선택된 조직은 저장되어 이후 모든 명령에 사용됩니다:--org를 신경 쓸 필요가 없습니다. 여러 조직에 속해 있으면서 선택하지 않으면, CLI가 조직 목록을 표시하고 --org <slug>를 사용하여 다시 실행하도록 안내합니다. 활성 조직은 모든 요청에 포함되며, 권한은 조직별로 결정됩니다. agenteye whoami는 활성 조직, 해당 조직에서의 권한, 모든 멤버십을 표시합니다.
구성
| 설정 | 플래그 | 환경 변수 | 기본값 |
|---|---|---|---|
| 대시보드 기본 URL | --base-url | AGENTEYE_DASHBOARD_URL | 필수 (기본값 없음) |
| 활성 조직/테넌트 | --org | AGENTEYE_ORG | 로그인 시 선택, ~/.agenteye/cli.json에 저장 |
| 세션 토큰 | --token | AGENTEYE_CLI_TOKEN | ~/.agenteye/cli.json에서 읽음 |
| JSON 출력 | --json | AGENTEYE_CLI_JSON | 비활성 |
| TLS 검증 건너뛰기 | --insecure / --secure | AGENTEYE_INSECURE | 비활성 (로그인 시 저장) |
| 요청 타임아웃 (초) | --timeout | — | 30 |
| 사용 텔레메트리 비활성화 | (없음) | AGENTEYE_ANALYTICS_DISABLED (또는 DO_NOT_TRACK) | 비활성 (텔레메트리 활성) |
--base-url https://agenteye.example.com) 또는 환경 변수로 한 번 설정해야 합니다(첫 login 이후에도 저장됩니다):
AGENTEYE_HOME 환경 변수를 따릅니다(SDK 및 컬렉터와 동일한 규칙). 설정된 경우 cli.json은 $AGENTEYE_HOME/cli.json에 위치합니다.
자체 서명 또는 내부 TLS
대시보드가 자체 서명 또는 내부 인증서(예: 로드 밸런서 호스트명)로 HTTPS를 제공하는 경우, TLS 검증이CERTIFICATE_VERIFY_FAILED 오류로 실패합니다. --insecure를 전달하여 인증서 검증을 건너뛰세요:
--insecure는 로그인 시 cli.json에 저장되므로, 이후 명령에서 자동으로 검증을 건너뜁니다. 플래그를 반복할 필요가 없습니다. 일회성 검증 호출에는 --secure를 사용하거나, 다음 로그인 시 검증을 다시 활성화하려면 --secure를 저장하세요. CLI는 검증이 비활성화된 상태에서 대시보드에 접속하는 모든 명령 전에 stderr에 경고를 출력합니다. 검증을 건너뛰면 중간자 공격 방어가 제거됩니다. 이를 사용하기 전에 대시보드로의 네트워크 경로(VPN, 사설 서브넷 등)를 신뢰할 수 있는지 확인하세요.
텔레메트리 및 개인 정보
CLI는 Exosphere의 분석 서비스(PostHog)에 익명 사용 분석을 전송합니다: 실행된 명령(예:sessions, keys create), 성공 여부, 소요 시간. 이 사용 신호는 기능 우선순위 결정에 활용됩니다.
- 에이전트, 세션, 이벤트 데이터는 절대 인프라 외부로 전송되지 않습니다. CLI 사용 정보만 보고됩니다: 명령 및 서브명령 이름(예:
keys create), 사용한 플래그의 이름(값은 절대 포함하지 않음), 성공/종료 상태, 소요 시간. 변경 작업에 대한 이벤트(예:api_key_created,query_run)는 정적 이름/열거형과 대략적인 수치만 포함합니다. 대시보드 URL, 세션 토큰, 이메일, 조직 슬러그, 리소스 ID, SQL, 키 시크릿, 쿼리 필터는 절대 전송되지 않습니다. 운영자는 불투명한 내부 ID로만 식별되며, 이메일은 사용되지 않습니다. - 텔레메트리는 기본적으로 활성화되어 있습니다. 비활성화하려면 CLI 환경에서
AGENTEYE_ANALYTICS_DISABLED=1을 설정하세요(크로스 툴 규칙인DO_NOT_TRACK=1도 지원합니다). - CLI는 PostHog(
https://us.i.posthog.com)로 직접 전송합니다. CLI를 실행하는 머신은 해당 호스트에 대한 아웃바운드 접근이 필요합니다. 차단된 경우 텔레메트리는 조용히 아무것도 하지 않습니다(전송은 시간 제한이 있으므로 명령을 지연시키거나 중단시키지 않습니다). CLI 동작에는 영향이 없습니다.
전역 옵션 및 규칙
한 번만 읽어두면 모든 명령에 적용됩니다.- 전역 옵션은 명령 앞에 위치합니다.
agenteye --json sessions는 올바른 형식이고,agenteye sessions --json은 사용 오류입니다. 전역 옵션은--json,--base-url,--org,--token,--insecure/--secure,--timeout,--quiet,--no-color입니다. --json은 순수 JSON을 stdout으로 출력하며, 그 외에는 아무것도 출력하지 않습니다. 사람용 상태 메시지, 경고, 오류는 stderr로 전달되므로,--jsonstdout 캡처는 상태 메시지가 표시되더라도jq로 파이프하기에 깨끗한 상태를 유지합니다.--json없이는 사람이 읽기 좋은 박스형 컬러 뷰가 표시됩니다.--help로 탐색하세요. 모든 명령과 서브명령에는--help(및-h별칭)가 있습니다:agenteye -h,agenteye sessions -h,agenteye keys create -h. 최상위 도움말에는 종료 코드와 전역 옵션도 나열됩니다. 전역 머신 가독형 전체 목록은 없습니다. 명령별--help와, 두 레지스트리에 대한 도메인별agenteye query schema및agenteye settings schema를 활용하세요.- 스크립트 및 에이전트에서는 확인 프롬프트가 자동으로 건너뜁니다. 생성/수정/삭제 명령은 대화형 터미널에서 “확인하시겠습니까?” 메시지를 표시하지만,
--json이나 stdin이 TTY가 아닌 경우에는 자동으로 건너뜁니다. 따라서 스크립트와 에이전트는 멈추지 않습니다. 명시적으로 건너뛰려면--yes/-y를 사용하세요. 에이전트에서는 프롬프트가 실행되지 않으므로, 에이전트는 파괴적인 작업을 수행하기 전에 먼저 사람에게 확인을 받아야 합니다. - 페이지네이션: 결과는 최신순으로 커서 페이지네이션됩니다.
--limit N(별칭:-n)은 행 수를 제한하며 기본값은 50입니다.--all은 자동 페이지네이션(200행 단위)을 수행하지만--limit까지만 가져옵니다. 따라서--all만 사용하면 여전히 50개에서 멈춥니다. 전체 조회를 원하면 명시적으로 높은 값을 지정하세요:--all --limit 1000.--page-size N은 요청당 청크 크기를 제어하며(최대 200),--cursor <id>는 이전 페이지의next_cursor에서 재개합니다. - 시간 필터:
--since는 상대 시간 범위(15m,1h,6h,24h,7d,30d,all- 대시보드 프리셋)를 받습니다.--from/--to는 명시적 ISO-8601 UTC 타임스탬프(T와 타임존 포함, 예:2026-06-01T00:00:00Z)를 받아 사용자 지정 범위를 지정하며--since를 재정의합니다. 공백으로 구분되거나 타임존이 없는 값은 사용 오류입니다. --fields a,b,c(events,sessions,evals,errors에서 사용 가능)는 출력을 해당 키로 제한합니다(테이블과--json모두 해당). 알 수 없는 이름은 유효한 목록과 함께 거부됩니다. 필드 이름을 간편하게 확인하는 방법입니다.--file payload.json(또는 stdin을 읽으려면--file -)은 리소스가 복잡한 형태를 가질 때 전체 JSON 요청 본문을 제공합니다.alerts create/update,settings set,users create/update에서 사용합니다. 저장된 쿼리 SQL은--sql @file.sql을 사용합니다.- 다중 값 필터는 쉼표로 구분되며 집합으로 매칭됩니다(하나의 필터 내에서는 합집합, 필터 간에는 AND):
--event-type tool_use,tool_result. Click 옵션은 가변 인수가 아니므로--add a b는 오류입니다.--add a,b를 사용하거나 플래그를 반복(--add a --add b)하거나 따옴표로 묶으세요(--add "a b").
명령 참조
CLI에는 18개의 최상위 명령이 있습니다. 모든 읽기 명령은--json과 위의 전역 옵션을 지원합니다. 각 명령의 전체 플래그 목록과 JSON 형태는 agenteye <command> -h(또는 <command> <subcommand> -h)를 실행하세요.
신원 — login · logout · whoami · orgs · version · help
orgs는 활성 테넌트를 확인하고 전환합니다:
관찰 (읽기 전용) — events · sessions · evals · errors · list
이 명령들은 확인이 필요하지 않습니다. 공통 필터: --session-id, --agent-id, --env(--environment가 아님), 시간 범위(--since / --from / --to).
--score KEY:MIN..MAX(**evals**에서 사용 가능, sessions에서는 불가)는 반복 가능하며 AND로 결합됩니다. 어느 쪽 경계도 선택 사항입니다(..0.5는 ≤ 0.5, 0.9..는 ≥ 0.9 의미). 요청당 최대 20개의 점수 필터. evals --scores-full은 요약 대신 전체 점수 객체를 반환합니다. 하나의 세션을 처음부터 끝까지 읽으려면 이벤트 추적과 평가를 함께 사용하세요:
관리 (권한 필요) — keys · users · settings · alerts · incidents
keys — API 키. 시크릿은 로컬에서 생성되어 서버로 전송되고(서버는 해시만 저장), 생성/재생성 시 한 번만 표시됩니다. 그때 반드시 캡처하세요. --json을 사용하면 key 필드에만 나타납니다. 이름으로 참조됩니다.
(permission-set ∪ --add) − --remove 방식으로 작동합니다. 토큰은 slug:action(예: events:read) 또는 slug:action.action 형태로 하나의 리소스에 여러 액션을 확장할 수 있습니다(events:read.add → events:read, events:add). 프리셋: read-only, standard, admin. 사람 전용 권한(keys:update)은 키에 부여할 수 없습니다.
users — 조직 멤버. 이메일로 참조됩니다(UUID id도 허용).
settings — 고정 레지스트리 (기존 키를 읽고 변경하는 것만 가능; 새 키 생성 불가).
alerts — 알림 정의. 이름으로 참조됩니다. create는 위치 인수로 NAME을 받으며, 플래그 또는 --file로 전체 JSON 본문을 제공할 수 있습니다.
incidents — 알림 인시던트. ID로 참조됩니다(짧은 ID 허용). show는 전체 활동 로그를 출력합니다. 조치 전에 반드시 확인하세요.
분석 및 어시스턴트 — query · agent
query — 저장된 ClickHouse SQL과 임시 실행기. 저장된 쿼리는 이름으로 참조됩니다. SQL은 서버 측에서 검증됩니다(SELECT/WITH만 허용, 쿼리 타임아웃, 행 제한).
agent — 내장 대시보드 어시스턴트(대시보드에서 채팅할 수 있는 것과 동일한 읽기 전용 분석가). 채팅은 짧은 chat-id로 참조됩니다(접두사 자동 해결).
종료 코드
| 코드 | 의미 |
|---|---|
| 0 | 성공 |
| 1 | 예상치 못한 오류 (예: 대시보드가 5xx를 반환) |
| 2 | 사용 오류 (잘못된 인수, 알 수 없는 명령/플래그, 이름 충돌) |
| 3 | 대시보드에 연결할 수 없음 |
| 4 | 로그인하지 않았거나 세션이 만료됨; agenteye login 실행 필요 |
| 5 | 인증되었지만 필요한 권한이 없음 (메시지에 권한 이름 표시) |
| 6 | 요청한 리소스를 찾을 수 없음 (예: 알 수 없는 세션 또는 인시던트 ID) |
4를 받으면 재인증을 요청하거나, 5를 받으면 누락된 권한을 표시할 수 있습니다. 종료 코드 처리 패턴과 JSON 출력 형태는 에이전트를 위한 CLI 레시피를 참고하세요.
관련 문서
- 에이전트를 위한 CLI 레시피 — 코딩 에이전트를 위한 복사-붙여넣기 쿼리 패턴,
jq원라이너,--fields프로젝션, 종료 코드 처리, JSON 출력 형태. - AgentEye CLI 스킬 — 이 CLI를 설치 가능한 Claude Code / Codex 스킬로 패키징하여 코딩 에이전트가 일반 영어 요청으로 AgentEye를 구동할 수 있게 합니다.
- API 키 —
keys create --add …뒤의 권한 모델. - AI 어시스턴트 —
agent ask가 대화하는 어시스턴트 활성화 방법.

