Probe
Latest release
CI
GitHub stars
License: Apache-2.0
<img src="https://raw.githubusercontent.com/crizant/probe/HEAD/docs/assets/probe-app-icon.png" alt="Probe app icon" width="128" height="128" />
macOS, Windows, 및 Linux용 빠르고 네이티브하며 로컬 우선의 API 클라이언트입니다.
Rust, GPUI, 그리고 Longbridge GPUI Kit의 스타일링되지 않은 기본 레이어(unstyled base layer)를 사용하여 구축되었으며, 주 작업 공간 형식(primary workspace format)은 OpenCollection YAML을 사용합니다.
이 프로젝트는 두 가지 주요 인터페이스를 제공합니다:
- CLI — 개발자, 자동화, CI (Continuous Integration), 및 AI 에이전트를 위한 인터페이스
- 데스크톱 — 대화형 API 개발을 위한 네이티브 GPUI 애플리케이션
두 인터페이스 모두 동일한 Rust 애플리케이션 및 도메인 레이어를 사용합니다.
Probe CLI demo
Probe screenshot
목표 (Goals)
- 빠른 네이티브 데스크톱 경험
- 강력하고 에이전트 친화적인 CLI
- 주 작업 공간 형식으로 OpenCollection YAML 사용
- 파일 시스템 우선(Filesystem-first) 및 Git 친화적
- 계정 또는 클라우드 서비스 불필요
- 매우 큰 컬렉션에서 즉각적인 탐색
- 기존 OpenCollection 컬렉션과의 호환성
- 낮은 메모리 사용량
- 빠른 시작 속도
- Electron 또는 WebView 없이 네이티브 GPU 렌더링 데스크톱 UI
- 자동화 친화적이며 AI 코딩 에이전트에 적합
기능 지원 (Feature support)
| 기능 | 데스크톱 | CLI |
|---|
| HTTP 요청 및 응답 검사 | 예 | 예 |
| ... | | |
OAuth 및 AWS Signature 인증은 YAML에 유지될 수 있지만 실행되지는 않습니다. 명령어 세부 정보 및 가져오기 제한 사항은 CLI 참고 자료를 참조하세요. 응답 상태 코드와 JSON 필드를 확인하려면 첫 번째 어설션 작성하기를 따르세요.
설치 (Installation)
사용자의 플랫폼에 맞는 최신 버전의 Probe를 GitHub Releases 페이지에서 다운로드하세요.
macOS
macOS 릴리스를 다운로드하고 Probe.app을 Applications 폴더로 이동시키세요.
Probe는 현재 Apple 코드 서명(code signing) 또는 노타라이제이션(notarization) 없이 배포됩니다. 이 때문에 macOS에서 애플리케이션 실행이 차단되고 개발자가 인증되지 않았다는 경고가 표시될 수 있습니다.
Probe를 여는 방법:
- Probe.app을 평소처럼 열어보십시오.
- **시스템 설정(System Settings) → 개인 정보 보호 및 보안(Privacy & Security)**으로 이동합니다.
- 'Probe' 실행이 차단되었다는 메시지를 찾아 아래로 스크롤합니다.
- **어쨌든 열기(Open Anyway)**를 클릭한 다음, **열기(Open)**를 클릭하여 확인합니다.
또는 Finder에서 Probe.app을 마우스 오른쪽 버튼으로 클릭하고 **열기(Open)**를 선택하십시오. 사용 중인 macOS 버전에 따라 이 방법이 애플리케이션을 강제로 열 수 있게 할 수도 있습니다.
[!NOTE]
Probe는 무료 오픈 소스 프로젝트입니다. Apple은 제대로 서명되고 노타라이즈된 macOS 애플리케이션을 배포하려면 유료 Apple Developer Program 멤버십이 필요합니다. 현재 저는 이 무료 프로젝트에 대한 반복적인 개발자 비용을 지불할 계획이 없기 때문에, macOS 릴리스는 서명되지 않은 상태로 배포됩니다.
만약 서명되지 않은 바이너리 실행을 원치 않으신다면, 소스 코드를 검사하여 직접 Probe를 빌드하실 수 있습니다.
Windows
Windows 릴리스를 다운로드하고 아카이브를 압축 해제한 후 Probe.exe를 실행하십시오.
Probe가 현재 코드 서명 인증서 없이 배포되기 때문에, 처음 실행할 때 Windows에서 Microsoft Defender SmartScreen 경고가 표시될 수 있습니다.
SmartScreen이 애플리케이션을 차단하는 경우:
- 경고창에서 **추가 정보(More info)**를 클릭합니다.
- 해당 애플리케이션이 Probe인지 확인합니다.
- **어쨌든 실행(Run anyway)**을 클릭합니다.
Probe는 설치가 필요하지 않으며, 압축 해제된 폴더에서 직접 실행할 수 있습니다.
Linux
릴리스에서 Linux용 .deb, .rpm, 또는 .tar.gz 파일을 다운로드하십시오.
Debian 및 Ubuntu에서는 APT를 사용하여 다음 중 하나 또는 둘 다의 x86_64 DEB 패키지를 설치합니다:
sudo apt install ./probe-cli-*-linux-x64.deb ./probe-desktop-*-linux-x64.deb
RPM 애셋은 현재 Fedora, RHEL 10 이상 버전 및 최신 openSUSE Tumbleweed와 Leap 15.6 이상 버전을 위한 상위(upstream) x86_64 패키지입니다. 다음 중 하나 또는 둘 다를 설치하십시오:
sudo dnf install ./probe-cli--linux-x64.rpm ./probe-desktop--linux-x64.rpm
openSUSE에서는 zypper를 사용하여 동일한 파일을 설치합니다:
sudo zypper install ./probe-cli-*-linux-x64.rpm ./probe-desktop-*-linux-x64.rpm
이 패키지들은 서명되지 않은 업스트림 빌드(upstream builds)이므로, 패키지 관리자가 확인을 요청할 수 있습니다. 설치 후, probe와 probe-desktop은 PATH에 추가됩니다.
.tar.gz 아카이브는 계속 사용할 수 있습니다. 하나를 압축 해제하고 추출된 디렉토리에서 바이너리를 실행합니다:
필요한 경우, 실행 권한을 부여합니다:
그런 다음 Probe를 실행합니다:
선택적으로 실행 파일을 PATH의 어딘가로 이동할 수 있습니다. 예를 들어:
sudo mv probe /usr/local/bin/
그 후에는 어디서든 Probe를 실행할 수 있습니다:
CLI
Probe는 명령줄 인터페이스(CLI)도 포함하고 있습니다.
사용하는 플랫폼에 맞는 CLI 릴리스를 다운로드한 후, probe 실행 파일을 PATH의 어딘가에 배치합니다.
macOS와 Linux의 경우 예를 들면:
chmod +x probe
sudo mv probe /usr/local/bin/
그런 다음 설치를 확인합니다:
Windows에서는 probe.exe를 PATH에 포함된 디렉토리에 배치하거나, 해당 디렉토리를 PATH에 추가해야 합니다.
시작하기
Desktop 환경에서는 **컬렉션 열기(Open Collection…)**을 선택하여 OpenCollection YAML 파일을 열거나 컬렉션 디렉토리를 열고, 요청(request)을 선택한 후 전송합니다. 요청이 변수를 사용하는 경우 환경을 선택해야 합니다.
Git에 저장된 워크스페이스의 경우, .*.probe-lock을 리포지토리의 .gitignore 파일에 추가하십시오. 이는 모든 중첩 디렉토리에 있는 Probe의 지속적인 잠금 사이드카(persistent lock sidecars)를 포함합니다. 이러한 로컬 파일은 커밋에서 제외해야 합니다: 체크아웃된 사이드카는 유닉스 저장소(Unix saves)를 방지하는 권한을 가질 수 있거나, 공유 체크아웃에서 다른 사용자에게 속할 수 있습니다. 작성자(writers)가 실행 중일 때는 사이드카를 제자리에 두십시오. 지속성 잠금 정책을 참조하십시오.
데스크톱 앱은 메인 창을 열기 전에 선택적 사용자 설정 파일을 읽습니다. 파일이 누락된 경우 내장 기본값(built-in defaults)을 사용하며 파일은 생성되지 않습니다. theme을 system, light, 또는 dark로 설정할 수 있습니다:
system은 OS의 외관을 따릅니다. light와 dark는 고정됩니다. 파일 위치 및 로딩 동작에 대한 자세한 내용은 Architecture를 참조하십시오.
CLI
CLI(Command Line Interface)는 개발자, AI 에이전트, 셸 자동화, CI, 테스트, 디버깅 및 헤드리스 환경을 위한 일급(first-class), 비대화형 인터페이스입니다. 이는 사람이 읽기 쉬운 출력과 결정론적이며 버전 관리되는 JSON을 지원합니다.
probe collection validate ./api
cat collection.yml | probe collection validate - --json
...
전체 명령어 표면(command surface), 선택자(selectors), JSON 스키마, 종료 코드는 docs/CLI.md를 참조하십시오.
기술 (Technology)
- Rust
- GPUI
- Longbridge GPUI Kit (스타일이 없는 기본 레이어)
- OpenCollection YAML
- Git 호환 파일 시스템 저장소
GPUI는 네이티브 애플리케이션 및 렌더링 프레임워크를 제공합니다.
Probe는 상호 작용, 포커스(focus), 접근성(accessibility) 및 기본 크롬 토큰을 위해 GPUI Kit의 스타일 없는 gpui_kit::base 레이어를 사용합니다. GPUI Kit은 GPUI와 base 버전을 조정하므로 dependency policy를 참조하십시오.
데스크톱 크롬(Desktop chrome)은 Probe의 시맨틱 테마를 통해 Porcelain Honey 라이트 테마와 Graphite Honey 다크 테마를 사용합니다. 도메인 색상(HTTP 메서드, 상태, 구문)은 개별적으로 유지됩니다.
개발 (Development)
rustup을 설치하고 저장소에 진입하십시오. 체크인된 rust-toolchain.toml은 자동으로 Rust 1.95.0을 선택하고 rustfmt 및 clippy 컴포넌트를 설치합니다. 다음 명령어로 환경을 확인하십시오:
rustc --version
cargo --version
cargo fmt --check
macOS의 경우, GPUI Kit를 통해 해결된 GPUI가 Metal 셰이더를 컴파일하기 때문에 데스크톱 빌드에는 전체 Xcode 개발자 도구(단독 Command Line Tools만 아님)가 필요합니다.
이 저장소는 Cargo 워크스페이스입니다. 코드를 변경하기 전에 AGENTS.md를 읽으십시오. 이는 전체 문서 세트를 요구하지 않고 각 작업을 관련 참조로 라우팅합니다. 프로젝트를 탐색할 때는 documentation index부터 시작하십시오.
cargo run -p probe-cli -- --help
cargo run -p probe-desktop
cargo fmt --check
...
릴리스 (Releases)
릴리스 빌드는 v0.2.0과 같은 버전 태그가 푸시될 때 GitHub Actions에 의해 생성됩니다. CI 및 릴리스 검증은 Rust 1.95를 사용하여 선언된 Rust 1.95 MSRV와의 호환성을 확인합니다. 프로덕션 CLI와 데스크톱 아티팩트는 명시적으로 고정(pinned)된 Rust 1.99.0으로 빌드됩니다. 깨끗한 워크트리에서 릴리스 도우미를 사용하십시오:
이 스크립트는 Cargo.toml의 워크스페이스 버전을 업데이트하고, 아직 릴리스되지 않은 변경 로그 내용을 새 버전과 호주/브리즈번 날짜 아래로 이동시키며, 릴리스 검사를 실행하고, 해당 업데이트를 커밋하며, 주석이 달린 태그(annotated tag)를 생성하고, 브랜치와 태그를 origin으로 푸시합니다. 이후 이 태그는 해당 릴리스 바이너리에서 빌드된 Linux RPM 패키지를 포함하여 CLI 및 데스크톱 릴리스 아티팩트를 트리거합니다.
핵심 성능 기준선은 파싱, 워크스페이스 구성, 요청 조회, CLI 시작, 그리고 100, 1,000, 10,000 요청에서의 실질적인 최대 메모리 프로파일링을 다룹니다. 재현 가능한 명령어와 테스트 데이터(fixture) 생성을 보려면 docs/PERFORMANCE.md를 참조하십시오.
데스크톱 작업은 docs/DESIGN.md의 네이티브하고 플랫폼 인식 계약을 따릅니다.
질문, 피드백 또는 제안 사항이 있으신가요? X (@CodeFurioso)에서 편하게 연락 주십시오.