CLI 명령
taco <command> 형태로 사용합니다. taco --help, taco <command> --help로 언제든 확인할 수 있습니다.
공통 플래그 · 환경변수
대부분의 명령이 아래를 공유합니다(우선순위: 플래그 > env > config > 기본값).
| 대상 | 플래그 | env |
|---|---|---|
| 서버 URL | --server | TACO_SERVER |
| 로컬 DB 경로 | --local-db | TACO_LOCAL_DB |
OAuth 서버는 taco login에만 --oauth-server 플래그가 있습니다(다른 명령에는 없음). 어느 명령에서든 바꾸려면 env TACO_OAUTH_SERVER를 쓰세요.
init
설정 + 로그인 + 도구 연동 안내(대화형).
taco init
auto_sync 여부를 묻고, 이어서 인프런 OAuth 로그인을 진행합니다. org/디렉터리 제한은 묻지 않으며(기본 제한 없음), 필요하면 --allowed-orgs·--allowed-dirs 플래그로 지정합니다. → 설정
대부분은
taco init이 필요 없습니다 — 설치 스크립트가 플러그인 연동(taco plugins)과 로컬 수집을 자동으로 하고,taco login이 로그인+첫 전송을 합니다.init은 수집 범위·auto_sync를 세밀하게 바꿀 때만.
plugins
로컬에 설치된 AI 코딩 도구를 감지해 taco 플러그인을 설치합니다. taco claude·taco codex를 대체하는 통합 명령입니다.
taco plugins
- 기본은 전체 설치 — 감지된 도구(Claude Code·Codex 등) 전부에 플러그인을 설치합니다.
- 대화형 터미널에서는 목록을 보여주고, 빼고 싶은 도구를 Space로 해제할 수 있습니다. 이미 설치돼 있으면 재설치 없이 최신 여부만 확인합니다(
--force로 강제 재설치). - Cursor·Gemini CLI·Antigravity·Claude Desktop은 플러그인이 없어 설치 대상이 아닙니다. Claude Code·Codex 플러그인 중 하나라도 깔려 있으면 그게 돌 때 사이드카로 함께 스캔되며, 아무 플러그인도 없다면
taco collect를 직접(또는 cron으로) 실행해야 수집됩니다. - 설치 스크립트(
curl … | sh)가 설치 직후 이 명령을 자동 실행합니다.
| 플래그 | 설명 |
|---|---|
--plugin-path | git 마켓플레이스 대신 로컬 체크아웃에서 설치(사설 저장소 인증 우회) |
--all | 묻지 않고 감지된 도구 전부 설치(비대화형) |
--force | 이미 설치돼 있어도 전체 설치 스텝을 다시 실행(복구용) |
login
인프런 OAuth 로그인(브라우저 1회) 후, 그동안 로컬에 쌓인 사용량을 서버로 첫 전송합니다. 설치는 수집까지만 하고, 전송은 로그인부터 시작합니다.
taco login
collect
로컬 기록을 한 번 스캔해 이벤트를 적재합니다(수동/디버그용, 평소엔 hook이 자동).
taco collect # 증분 수집(auto_sync 기본 ON이면 전송까지)
taco collect --no-sync # 로컬 버퍼에만 적재(전송 안 함) — 설치 스크립트가 로그인 전에 사용
taco collect --sync # 수집 + 서버 전송(강제)
taco collect --full --sync # watermark 리셋 후 전체 재수집 + 전송
taco collect --provider claude_code --provider codex
| 플래그 | 설명 |
|---|---|
--full | watermark 리셋 후 모든 파일 재수집 |
--sync | 수집 후 서버 전송(auto_sync와 별개로 강제) |
--no-sync | 로컬에만 적재, 절대 전송 안 함(로그인 전 설치 단계용) |
--provider | 특정 provider만 스캔(반복 지정). 값: claude_code | claude_desktop | codex | cursor | gemini | antigravity. 오타는 에러로 막고 유효값을 알려줍니다(claude는 무효 — claude_code) |
--provider로 특정 도구만 스캔하면, hook이 없는 도구(claude_desktop·cursor·gemini·antigravity)를 사이드카로 함께 훑습니다(5분 throttle · 5초 예산 ·TACO_NO_SIDESCAN으로 끔).--provider없이 실행하면 원래 전부 스캔합니다. → 지원 도구
allowed_dirs가 설정돼 있으면 cwd를 안 남기는 도구(Cursor·Gemini CLI·Antigravity)는 전량 제외되며,collect가 그 건수를 따로 표시합니다.
sync
로컬 버퍼에 쌓인 미전송 이벤트를 서버로 보냅니다.
taco sync
taco sync --dry-run # 전송하지 않고 "무엇이 어디로 나가는지"만 확인
| 플래그 | 설명 |
|---|---|
--dry-run | 전송하지 않고 건수·대상 URL·세션 이름 포함 여부·도구별 구성과 실제 요청 본문(첫 1건) 을 출력 |
--dry-run은 실제 전송과 같은 조립 경로를 씁니다. 출력에는 필드별로 값이 채워진 건수(session_name 287/500 · cwd 357/500 …)와 도구별 샘플 본문이 함께 나오므로, 어떤 필드가 실제로 나가는지 배치 전체 기준으로 확인할 수 있습니다.
샘플 하나만 보고 판단하지 마세요 — 비어 있는 필드는 JSON 에서 아예 생략되므로(
omitempty), Cursor 이벤트 샘플에는cwd·git_branch가 안 보이지만 Claude Code 이벤트에서는 나갑니다. 그래서 필드별 건수를 함께 보여줍니다.
hostname 은 배치 단위로 함께 전송되지만 서버에 저장되지 않습니다.
prune
전송이 끝난 오래된 로컬 이벤트를 지우고 디스크를 회수합니다.
taco prune --older-than 90d --dry-run # 규모만 확인
taco prune --older-than 90d # 실행(확인 프롬프트)
taco prune --older-than 6m -y # 확인 없이
| 플래그 | 설명 |
|---|---|
--older-than | 이 기간보다 오래된 전송 끝난 이벤트가 대상 (90d, 6m, 4w …) |
--filtered | 미전송 이벤트 중 현재 필터(allowed_*/denied_*)가 거부하는 것만 |
--unsynced | 미전송 전체. 영구 삭제 — 서버에도 남지 않습니다 |
--dry-run | 지우지 않고 규모만 출력 |
-y, --yes | 확인 프롬프트 없이 진행 (취소 시 종료 코드 1) |
필터를 나중에 설정했다면
필터는 수집 시점에만 적용됩니다. 설치 직후 과거 기록이 전량 수집되고 그 뒤에 필터를 켜면, 이미 큐에 쌓인 이벤트는 필터와 무관하게 전송됩니다. taco config set 이 그 건수를 경고하며, 큐에서 지우려면:
taco prune --filtered --dry-run # 몇 건이 걸리는지 확인
taco prune --filtered # 그 이벤트만 삭제
지운 기간은 어떻게 되나
prune 은 지운 경계를 기록합니다. 그래서 이후 taco stats 헤더가 (2026-02-28 이전 144,000건은 taco prune 으로 정리됨) 을 표시하고, taco collect --full 이 그 구간을 되살리지 않습니다 — 되살리면 대기 큐가 부풀고 prune 을 다시 할 수 없게 됩니다. 정말 복구하려면:
taco collect --full --ignore-retention
import
다른 컴퓨터의 taco 로컬 DB 를 이 컴퓨터 버퍼에 합칩니다. 중복은 자동으로 걸러지고(내용 기반 해시), 같은 파일을 여러 번 실행해도 결과가 같습니다.
taco import ~/Downloads/local.db
머신을 교체할 때:
# 1) 옛 컴퓨터
taco sync # 전송 가능한 건 서버로
cp ~/.local/share/taco/local.db /어딘가/ # 미전송분 포함 백업
# 2) 새 컴퓨터
taco import /어딘가/local.db
local.db를 그냥 복사해 덮어쓰면 새 컴퓨터의 기존 데이터가 사라집니다 —import를 쓰세요.
- 미전송 이벤트는 지우지 않습니다 — 로컬에도 서버에도 없는 데이터가 되기 때문입니다. 오래된 것이 모두 미전송이면 먼저
taco sync를 하라고 안내합니다. - 서버 데이터는 그대로입니다. 대시보드와
taco stats --remote의 과거 사용량은 영향을 받지 않고, 이 컴퓨터의taco stats·taco show에서만 지운 기간이 사라집니다. - 삭제 후
VACUUM으로 파일 크기까지 되돌립니다. 현재 버퍼 크기는taco doctor가 보여줍니다.
hook
에디터 플러그인이 hook 이벤트(stdin JSON)마다 호출합니다. 직접 실행할 일은 거의 없습니다. 하나의 transcript를 파싱해 적재하고, auto_sync면 서버로 전송합니다.
stats
사용량 요약(비용·토큰·이벤트).
taco stats # 로컬 기준(전체 요약)
taco stats --remote # 서버 기준(본인, 모든 컴퓨터 합산)
taco stats --by model # 차원별 분해
taco stats --by branch --since 7d
taco stats --by model --per day # 차원 × 기간 2축 시리즈
taco stats --by day --json # 기계용 JSON
| 플래그 | 설명 |
|---|---|
--by | 차원별 분해: tool | model | branch | repo | dir | day | hour | session |
--per | --by를 기간축과 교차한 2축 시리즈: day | week | month |
--since | 기간 제한. 예: 24h, 7d, 4w, 3m, 1y |
--json | 표 대신 JSON 출력(기계용) |
--limit | 표에 보여줄 최대 행 수(기본 20, 0 = 전체). --json 에는 적용되지 않습니다 — 명시적으로 --limit 을 주면 그때만 적용 |
--sort | 표 정렬 기준: cost(기본) | tokens | events |
--remote | 로컬 버퍼 대신 서버 기준 본인 KPI 조회 |
날짜·시간대는 로컬 자정/로컬 시각 기준입니다(CLI·로컬 대시보드 동일).
표가 잘리면 몇 개가 생략됐는지 표 아래에 표시됩니다. 기간축(--by day·--per)은 최신 구간을 남기고 오래된 쪽을 생략합니다. 기계용 출력(--json)은 기본적으로 자르지 않으므로 합계가 항상 전체와 일치합니다.
show · search
세션 조회/검색.
taco show <세션ID> # 세션 대화 출력(전체 ID 또는 고유한 prefix 필수)
taco search <키워드> # 로컬 대화에서 검색
taco show는 세션 ID가 필수입니다. 전체 ID 대신 prefix를 줘도 되고 길이 제한은 없습니다 — 하나로 좁혀지면 그 세션을 열고, 여러 개가 걸리면 후보를 나열해 줍니다. ID는 taco search의 결과나 로컬 대시보드(taco dashboard)에서 확인할 수 있습니다.
status
마지막으로 수집·전송된 시각과 현재 상태를 한눈에 보여줍니다. "잘 쌓이고 있나?"를 빠르게 확인할 때 좋습니다.
taco status
taco status --json # 기계용 (헬스체크 스크립트)
- 자동 수집 은 hook(Claude Code·Codex 플러그인)이 실제로 도는지로 판정합니다. Cursor·Claude Desktop 만 쓴다면
⚠️ 안 됨으로 표시되고taco collect를 주기적으로 실행하라고 안내합니다. - 자동 전송 은
auto_sync설정입니다. 수집과 전송은 별개예요.
doctor
설정/로그인/로컬 DB/전송 큐 상태를 진단합니다. 문제가 있을 때 먼저 실행하세요.
taco doctor
taco doctor --exit-code # 문제가 있으면 종료 코드 1 (CI·cron 헬스체크용)
마지막 줄에 총평(지금 상태 / 다음 할 일)이 한 줄로 나옵니다. 기본 종료 코드는 문제가 있어도 0이며, 스크립트에서 쓰려면 --exit-code 를 붙이세요.
config
설정을 확인하거나 키 하나씩 변경합니다. → 설정
taco config # = config show
taco config show # 해석된 설정 전체 + 파일 경로
taco config show --json # 순수 JSON (실효 server 포함)
taco config get auto_sync # 키 하나의 값
taco config set collect_session_name false
taco config set allowed_orgs inflearn,inflab # 목록은 쉼표 구분
taco config set allowed_dirs "" # 빈 값으로 제한 해제
taco config set denied_dirs ~/personal # 이 경로는 수집 제외(allow보다 우선)
다룰 수 있는 키는 server·auto_sync·collect_session_name·allowed_orgs·allowed_dirs·denied_orgs·denied_dirs 7개입니다. bool은 true/false, 목록은 쉼표 구분이며, 모르는 키는 에러로 가능한 값을 알려줍니다. oauth_server·oauth_client_id는 이 명령으로 다룰 수 없고 config.json을 직접 편집해야 합니다.
update
설치 스크립트를 다시 실행해 taco를 최신 버전으로 갱신합니다(덮어쓰기 자동 승인, 이어서 collect·plugins까지 첫 설치와 동일하게 실행).
taco update
uninstall
설치가 남긴 흔적을 한 번에 정리합니다 — 플러그인 등록 해제(Claude Code·Codex), 설정·로컬 데이터 삭제(~/.config/taco·~/.local/share/taco), 셸 설정의 taco PATH 줄 제거, 바이너리 삭제. 무엇을 지울지 먼저 보여주고 확인을 받습니다.
taco uninstall # 확인 프롬프트 후 진행
taco uninstall --keep-data # 설정·로컬 데이터는 보존
taco uninstall --yes # 확인 없이(비대화형)
| 플래그 | 설명 |
|---|---|
--keep-data | 설정·로컬 데이터를 지우지 않고 남김 |
--yes | 확인 프롬프트 없이 진행 |
전송하지 않은 사용량이 남아 있으면 먼저 경고합니다 — 그대로 지우면 로컬에도 서버에도 없는 데이터가 되므로, taco sync(로그인 필요)로 올린 뒤 제거하세요.
statusline
오늘 사용량을 한 줄로. 쉘 프롬프트/상태줄에 넣기 좋습니다.
taco statusline
# 🌮 $1.23 · 45.0k tok · 12 ev (오늘)
"오늘"은 로컬 자정 기준이고, 토큰은 캐시를 제외한 in+out입니다. 금액 뒤에 + 가 붙으면 단가를 모르는 모델의 이벤트가 있어 비용이 과소 표시된 것입니다(taco stats 에서 건수 확인).
pricing
모델 단가 관리.
taco pricing sync # LiteLLM 피드에서 단가 즉시 동기화
taco pricing path # 단가 파일 경로 2줄 — synced(캐시) / override(사용자)
taco pricing show <model> # 특정 모델 단가 확인(별칭 정규화 포함)
보통은 직접 실행할 필요가 없습니다 — stats·statusline·mcp는 캐시가 24시간, dashboard는 7일보다 오래되면 자동으로 LiteLLM 피드를 당겨옵니다(실패는 조용히 무시). 네트워크가 없어도 바이너리에 내장된 스냅샷으로 비용이 계산됩니다. 단가를 직접 덮어쓰려면 taco pricing path가 알려주는 override 파일(~/.config/taco/pricing.json)을 편집하세요.
dashboard
로컬 데이터로 오프라인 웹 대시보드를 띄웁니다(세션 대화 열람 포함).
taco dashboard # 로컬 데이터, 브라우저 자동 오픈
taco dashboard --addr 127.0.0.1:8080 # 포트 변경(기본 127.0.0.1:7777)
taco dashboard --no-open # 브라우저 자동 오픈 안 함
taco dashboard --remote # 서버(본인) 데이터로 열기
| 플래그 | 설명 |
|---|---|
--addr | listen 주소(기본 127.0.0.1:7777). 포트 충돌 시 사용 |
--no-open | 브라우저를 자동으로 열지 않음 |
--remote | 로컬 서버 대신 팀 대시보드를 본인 필터로 엶 |
mcp
read-only MCP 서버(stdio)를 실행합니다. 보통 Claude Code 플러그인이 자동 등록하므로 직접 실행할 일은 드뭅니다. → MCP 서버
taco mcp