idx-cli
인간과 AI 에이전트를 위해 Rust로 구축된 인도네시아 주식 시장(IDX) 분석용 CLI 도구입니다.
설치 (Installation)
설치 스크립트 (Linux, macOS)
curl -fsSL https://raw.githubusercontent.com/0xrsydn/idx-cli/main/install.sh | sh
이 스크립트는 GitHub Releases에서 플랫폼별로 미리 빌드된 idx 바이너리를 다운로드하고, 릴리스의 SHA256SUMS와 검증하며, sudo 없이 ~/.local/bin에 설치합니다. 버전 지정이나 디렉토리 변경은 sh -s -- --version v0.5.1 --dir ~/bin을 사용하십시오. 자세한 내용은 docs/INSTALL.md를 참조하세요.
npm / npx
npx idx-cli --help
pm install --global idx-cli
이 npm 패키지는 postinstall 과정 중 또는 패키지 관리자가 설치 스크립트를 건너뛰는 첫 실행 시(npm 12의 npx, pnpm 10+, bun) 동일한 체크섬 검증된 릴리스 바이너리를 다운로드합니다. 자세한 내용은 docs/NPM_DISTRIBUTION.md를 참조하세요.
미리 빌드된 바이너리는 Linux x64/arm64 (static musl) 및 macOS arm64/x64를 지원합니다. Windows에서는 WSL을 사용하십시오.
Nix
nix run github:0xrsydn/idx-cli -- version
nix profile install github:0xrsydn/idx-cli#default
Nix 패키지는 curl-impersonate와 mupdf를 사용하여 idx를 래핑하므로, 아래의 모든 보조 도구가 자동으로 사용 가능합니다.
Cargo
소스 코드로부터 빌드하며, Rust 버전 1.89+가 필요합니다.
설치 스크립트, npm, 그리고 Cargo 설치는 오직 idx 바이너리만 포함합니다. 몇 가지 명령어는 외부 도구를 호출합니다:
| 도구 | 필요 기능 |
|---|
curl-impersonate의 curl_chrome* (소유권 검색 시 Firefox 및 Safari 프로필도 시도), 또는 IDX_CURL_IMPERSONATE_BIN 환경 변수 | IDX(Cloudflare 뒤에 있음)에서의 ownership discover / import --url, 그리고 IDX_PROVIDER=yahoo일 때의 Yahoo fundamentals |
MuPDF의 mutool | 레거시 PDF 소유권 보고서만 가져올 때 (importing legacy PDF ownership reports only) |
일상적인 사용(기록 포함, 기본 MSN 제공업체를 사용하는 stocks, ownership sync, 모든 로컬 소유권 쿼리)은 둘 다 필요하지 않습니다.
빠른 시작 (Quick start)
dx stocks quote BBCA
dx stocks quote BBCA,BBRI,BMRI
...
기능 (Features)
주식 (Stocks)
- 견적(Quotes), OHLC 기록(history), 회사 프로필, 재무제표, 실적, 뉴스, 군중 감성(crowd sentiment) 및 AI 인사이트
- 분석:
기술적(technical), 성장률(growth), 가치평가(valuation), 위험(risk) 그리고 결합된 기본(fundamental) 보고서; 다중 심볼(multi-symbol) 비교(compare); MSN 주식 스크린(screen)
- 제공업체: MSN은 견적, 기본 정보 및 스크리닝의 기본값입니다. Yahoo는 기록을 담당합니다.
--provider/IDX_PROVIDER=msn|yahoo|stockbit 및 IDX_HISTORY_PROVIDER=auto|yahoo|msn|stockbit로 전환할 수 있습니다.
- Stockbit(선택적 사용): 로그인 없이도
stocks intraday(분 단위 오늘 가격) 및 --provider stockbit을 사용하여 시장이 열려 있는 동안 최적의 매수/매도 호가로 견적을 받을 수 있으며, 지연 시간은 최소 10분입니다. 자체 계정(idx stockbit login)을 사용하는 경우: stocks orderbook 깊이, 실시간 견적, Stockbit 일일 기록, 그리고 기업 활동(stocks actions, stocks calendar: 배당금, 권리, 분할, 회의, IPO 등) 및 내부자/주요 보유자의 매수 및 매도 내역(ownership movements)을 얻을 수 있습니다. Stockbit 약관에 따른 개인 사용입니다. Stockbit 페이지를 참조하세요.
- TTL이 적용된 로컬 파일 캐시와 오래된 캐시 대체(stale-cache fallback)가 가능한
--offline 모드
소유권 (Ownership) (KSEI 상위 1% 주주)
- 출처: IDX가 발행하는 월별 KSEI 보유자 명부("Pemegang Saham di Atas 1%"). 2026년 6월부터는 IDX의 Data Kepemilikan Saham 페이지에 XLSX 파일로 게시되며, 이전 달 자료는 PDF 공지사항이었습니다.
ownership sync는 유지 관리되는 SQLite 스냅샷(매일 확인하며, 현재 최신 3개월치)을 설치하고, 이후 모든 쿼리는 오프라인으로 실행됩니다.
- 쿼리 항목:
ticker별 보유자 수, entity별 보유량, 엔티티 검색(search), 월별 변화량(month-over-month changes), concentration, cross-holders, 그리고 소유권 graph가 있습니다.
- 셀프 서비스 데이터 수집(Self-serve ingest):
ownership discover는 최신 보고서를 찾고, ownership import --url <xlsx-or-pdf> 또는 --file을 사용하여 로컬 데이터베이스에 불러옵니다. 자세한 내용은 docs/OWNERSHIP_SYNC.md를 참조하세요.
출력(Output)
- 터미널에서 idx를 실행하면 테이블 형태로 출력되며, 출력이 파이프되거나 캡처될 때는 간결한 JSON 형식으로 제공되어 스크립트나 AI 에이전트가 구조화된 데이터(플래그 없음)를 얻을 수 있습니다.
-o table|json|jsonl (또는 설정 파일의 IDX_OUTPUT, 또는 general.output)로 이를 재정의할 수 있습니다. jsonl은 한 줄에 하나의 배열 항목을 출력합니다.
- 오류는 stderr로 전송되며, JSON 모드에서는 단일 JSON 객체 형태로 처리됩니다.
설정(Configuration)
설정 파일 위치:
~/.config/idx/config.toml
다음 방법으로 설정을 구성할 수 있습니다:
- 설정 파일 (
idx config init, idx config set)
- 환경 변수(Environment variables)
- CLI 플래그(CLI flags)
우선순위 순서:
- CLI 플래그
- 환경 변수
- 설정 파일
- 내장 기본값(Built-in defaults)
스크립팅 및 에이전트(Scripting and agents)
idx는 jq, Python, 그리고 다른 셸 도구와 결합하여 사용됩니다:
idx stocks quote BBCA BBRI | jq -r '.[] | "(.symbol) (.price)"'
idx -o jsonl stocks history BBCA --period 1y | tail -5
idx stocks screen --filter high-dividend | jq -r '.[].symbol' | idx stocks compare -
- 표준 출력(stdout)에는 데이터만 포함되며, 경고 및 오류는 표준 에러(stderr)로 전송됩니다.
-는 stocks quote와 stocks compare를 위해 표준 입력(stdin)에서 심볼을 읽습니다.
- 출력이 터미널이 아닐 경우 색상 코드가 적용되지 않습니다.
- 종료 코드:
0은 성공, 2는 유효하지 않은 입력 또는 설정, 3은 찾을 수 없거나 캐시된 데이터가 없음, 4는 상위 시스템(upstream) 사용 불가 또는 차단됨 (나중에 재시도), 5는 지원되지 않음, 6은 idx.co.id의 Cloudflare 인증(CLOUDFLARECHALLENGE, 나중에 재시도), 1은 기타입니다.
idx completions <쉘>은 쉘 자동 완성 기능을 생성합니다.
만약 v0.3 이전에 idx config init을 실행했다면, 설정이 output = "table"로 고정되어 있습니다. 다음 명령어를 사용하여 이를 auto로 변경하세요: idx config set general.output auto.
MCP 서버
idx-mcp는 21개의 도구와 동일한 데이터를 stdio를 통해 MCP 클라이언트에게 제공합니다:
get_quotes, get_intraday, get_orderbook, get_corporate_actions,
get_corporate_calendar, get_shareholder_movements, stockbit_status, stockbit_login, get_price_history, screen_stocks, get_company,
analyze_stock, compare_stocks, get_broker_summary, analyze_bandar,
get_foreign_flow, get_shareholders, get_investor_holdings,
search_investors, get_ownership_changes, 그리고 ownership_status.
실시간 결과는 {data, source, fetched_at, stale} 형태로 래핑되어 제공되며, 오류는 CLI의 {error, code, message} 본문을 사용합니다. 이 도구는 idx의 설정(config), 캐시(cache), 소유권 데이터베이스(ownership database)를 공유합니다.
idx와 마찬가지로 설치합니다 (npm, Cargo 또는 Nix). 그런 다음 MCP 클라이언트에 등록하세요:
claude mcp add idx -- npx -y idx-mcp
cargo install idx-mcp
nix profile install github:0xrsydn/idx-cli#idx-mcp
다른 클라이언트들은 stdio를 통해 idx-mcp 명령을 실행합니다.
소유권 도구는 데이터가 채워진 데이터베이스를 필요로 합니다. idx ownership sync를 한 번 실행하거나, 서버를 idx-mcp --allow-sync로 시작하여 ownership_sync 도구를 노출하세요 (이 과정에서 몇 MB의 데이터를 다운로드합니다).
문서화
사용자 문서, 에이전트별 MCP 설정 및 에이전트가 읽을 수 있는 llms.txt:
https://idx.rasyidanaf.com. 유지 관리자 문서:
개발(Development)
표준 로컬 및 CI 검증 명령어는 다음과 같습니다:
이 명령어는 Rust 포맷팅, Clippy, 단위 및 CLI 통합 테스트, 크레이트(crate) 패키지 검증, 패키징된 바이너리, 퍼블리셔 회귀(publisher regressions), sh 및 dash를 사용한 설치 프로그램 테스트, 그리고 ShellCheck를 포함합니다. 이 검사들은 고정된 도구(pinned tools)와 캐시된 Nix 출력을 사용하며, 변경되지 않은 성공적인 검사는 재실행되는 대신 재사용됩니다.
집중적인 편집/디버그 루프를 위해 동일한 고정 도구 체인(pinned toolchain)을 사용하십시오:
nix develop --command cargo test full_screener
구성된 Prek 훅(hooks)은 커밋 전(pre-commit)에 공백/충돌 검사를 유지하고, 푸시 전(pre-push)에 nix flake check -L을 실행합니다. 성공적인 플레이크(flake) 검사 후 반복할 별도의 전체 Cargo 테스트/린트 게이트는 없습니다.
CI는 추가적으로 네이티브 macOS 도구로 설치 프로그램을 검사합니다. 라이브 프로바이더 드리프트 검사(scripts/live-smoke.sh)는 선택 사항이며, [docs/SMOKE.md]를 참조하십시오. npm 래퍼(wrapper)는 자체 하네스인 scripts/npm-smoke.sh를 가지고 있습니다.
라이선스(License)
MIT