타이핑을 따라오는 검색
하나의 팔레트가 전부를 덮습니다 — 제목, 본문, 코멘트, 위키까지. 접두 매치는 단어를 끝내기 전에 로컬에서 뜨고, 전문 검색이 바로 뒤따릅니다. 스피너도 왕복도 없습니다.
gadak
회사가 이미 쓰는 Jira를 — Confluence 위키까지 — 이 머신의 SQLite 파일 하나로 미러링합니다. 검색은 밀리초 안에 끝나고, 히스토리는 문서처럼 읽히고, 스피너는 사라집니다. 원본은 여전히 Jira — 기다리는 것만 없어집니다.
| Jira REST API | gadak | ||
|---|---|---|---|
| 단순 필터, 100건 | 583 ms | 19 ms | 31× |
| 이슈 1건 + 체인지로그 전체 | 710 ms | 28 ms | 25× |
| 전문 검색 | 543 ms | 41 ms | 13× |
| 에픽별 열린 이슈 (GROUP BY) | 4,761 ms — API 8페이지 | 22 ms — 쿼리 하나 | 214× |
| 변경 이력에 대한 집계 | 표현 불가 | 14 ms | — |
| 레이트 리밋 | 429 + Retry-After | 없음 — 내 디스크니까 | — |
2026-08-26 실제 Atlassian Cloud 사이트(실제 업무 프로젝트, 3,296건) 대상 실측 — 합성 fixture가 아닙니다. gadak 수치에는 CLI 프로세스 시작까지 포함. 측정 방법과 gadak이 지는 지점 표 전체는 docs/BENCHMARKS.md.
로컬 미러에서는 — 데모가 쓰는 것과 같은 SQLite 파일, 2만 건: 팔레트 검색(HTTP 왕복 포함) 0.5~2ms, 534건 사이트 풀 싱크 약 5초, 변화 없는 증분 재실행 쓰기 0건.
새로 씻어낸 534건 샘플 미러 위의 실제 UI — 설치도 계정도 없습니다. 이 페이지의 영상도 같은 앱에서 녹화했습니다.
▶ 라이브 데모 열기하나의 팔레트가 전부를 덮습니다 — 제목, 본문, 코멘트, 위키까지. 접두 매치는 단어를 끝내기 전에 로컬에서 뜨고, 전문 검색이 바로 뒤따릅니다. 스피너도 왕복도 없습니다.
담당자·우선순위·에픽으로 다시 묶으면 분포 막대가 구간별 개수를 실시간으로 셉니다. 필터 메뉴의 모든 옵션도 현재 뷰 기준으로 카운트되어, 고르기 전에 이미 답을 압니다 — 메뉴가 먼저 알고 있습니다. 저장된 뷰는 URL 하나.
상태 변화·코멘트·연결된 PR이 한 번의 스크롤에 — 읽는 시점에 체류 시간이 계산됩니다(대기 6분, 진행 34일). 체인지로그가 곧 인터페이스입니다.
CLI가 곧 에이전트 인터페이스입니다 — create, claim, transition, 보드는 눈앞에서 같이 움직입니다. MCP 서버가 셸 없는 클라이언트를 맡습니다. 쓰기는 origin까지 통과하고, 읽기는 로컬 미러에서 나옵니다. 그리고 에이전트의 모든 쓰기에는 이름이 남습니다 — 코멘트와 연결된 PR에 봇의 이름이, 팀이 읽는 그 스레드에 그대로 붙습니다.
gadak create NMB "Ship the export" --field team=platform
gadak claim NMB-1042
gadak transition NMB-1042 done -m "shipped" 같은 미러를 코딩 에이전트에게 넘기려면:
gadak skill install 셸이 없는 MCP 클라이언트(Claude Desktop)에는:
claude mcp add gadak -- gadak mcp 두 번째 워크스페이스가 개인 작업을 회사 트래커 밖에 둡니다 — 같은 머신, 다른 파일, 다른 자격증명. 스탠드얼론은 트래커 없이도 시작합니다.
스탠드얼론은 트래커 없이도 시작합니다:
gadak init --standalone 두 번째 워크스페이스: 같은 머신, 다른 파일, 다른 자격증명:
gadak --workspace side init 데스크톱 앱, CLI 포함:
brew install --cask midagedev/tap/gadak CLI만:
brew install midagedev/tap/gadak-cli 회사 Jira에 연결 (사이트·이메일·토큰·프로젝트를 차례로 묻습니다):
gadak init && gadak sync && gadak serve