Herdr UI
Herdr의 TUI가 뛰어나며, 창을 통해 추가되는 기능
macOS·Windows·Linux용 무료 오픈소스 HTTP API 클라이언트, Rust·GPUI 기반 GPU 렌더링 창, 계정·업로드 없음
A free, open-source HTTP API client for macOS, Windows and Linux. Built with Rust and GPUI: a GPU-rendered native window, not Electron. No account, nothing uploaded, and a few hundred MB of response n
개발 도구Rust · PythonGitHub @finch-xu온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
No Postman, Just GetCat! 用 Rust + GPUI 打造的原生跨平台 HTTP 接口调试工具
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
用 Rust + GPUI 打造的原生跨平台 HTTP 接口调试工具 No Postman, Just GetCat! GPU 渲染 · 低资源占用 · 无需账号 · 数据全在本地 · No Electron, No Tauri, No WebViewREADME 전문 보기 ↗
A native, cross-platform HTTP API client built with Rust + GPUI
No Postman, Just GetCat!
GPU-rendered · Light on resources · No account · Your data stays local · No Electron, No Tauri, No WebView
{name} in the URL), query, and headers; bodies as form-data (text and file fields, files streamed with a known length), x-www-form-urlencoded, raw JSON / Text / XML, or a whole binary file.{{var}} and {{$timestamp}}; set variables before sending, extract response fields and assert afterwards — no scripting; Postman environment import/export; secret variables are masked in the UI.Download the package for your platform GitHub Releases
Runs on mainstream desktop distributions from 2022 onward: Ubuntu 22.04+, Debian 12+, Fedora 36+, Linux Mint 21+, openSUSE Leap 15.6+, and rolling releases such as Arch and openSUSE Tumbleweed. Graphics drivers on these work out of the box — there is nothing extra to install.
Older releases won't run it: Ubuntu 20.04, Debian 11, and RHEL / Rocky / AlmaLinux 9 all sit below the glibc 2.35 floor.
Unpack it and run ./getcat. To have it show up in the app grid (Ubuntu's "Show Applications") and the dock, turn on Settings → General → Add to application menu: GetCat writes a launcher and icon under ~/.local/share, after which the Super key finds it and a right-click can "Add to Favorites" to pin it. Turn the switch off to remove them. On Wayland the window and dock icon also come from this launcher, so without it the taskbar shows a generic icon.
The launcher points at the current executable, so put getcat somewhere permanent before enabling it, for example:
tar -xzf GetCat-linux-x64.tar.gz
install -Dm755 getcat ~/.local/bin/getcat
~/.local/bin/getcat
If you move the file later, toggle the switch off and on again to refresh the path.
The interface is GPU-rendered through Vulkan. Desktop distributions normally ship the driver already, so check first:
vulkaninfo --summary
If that prints nothing or reports no devices, install the driver for your GPU:
| Environment | Command |
|---|---|
| Ubuntu / Debian with Intel or AMD graphics | sudo apt install mesa-vulkan-drivers |
| Fedora with Intel or AMD graphics | sudo dnf install mesa-vulkan-drivers |
| Arch with Intel or AMD graphics | sudo pacman -S vulkan-intel or vulkan-radeon |
| NVIDIA graphics | Install the proprietary driver (e.g. nvidia-driver-550); the open-source nouveau driver has no Vulkan |
| Virtual machine / no discrete GPU | Install mesa-vulkan-drivers to fall back to lavapipe software rendering — usable but slow |
Requires Windows 10 1803 (April 2018 Update) or later, or Windows 11. The interface renders through Direct3D 11, so graphics hardware from around 2010 is enough (feature level 10.1 and up) — DirectX 12 is not required.
Either build works; the portable build is recommended (on ARM devices such as Snapdragon laptops, grab the -arm64 package):
GetCat-windows-<arch>.exe (portable, recommended): a single file — keep it on a USB stick or anywhere else and double-click it; nothing is written to the registry.GetCat-windows-<arch>.msi (installer): installs into %LOCALAPPDATA%\Programs\GetCat, needs no administrator rights, adds a Start menu entry, and uninstalls from Apps & features.In-app updates work for both: an MSI install pulls the new MSI and upgrades silently, while the portable build replaces its own exe.
Neither is code-signed yet, so SmartScreen will stop it the first time. For the portable exe, click More info → Run anyway; the MSI is an installer so the warning is more prominent, but it clears the same way.
{name} in the URL shows up automatically in the path parameter table.| Action | macOS | Windows / Linux |
|---|---|---|
| Send | ⌘ Enter | Ctrl Enter |
| New tab / close tab | ⌘ T / ⌘ W | Ctrl T / Ctrl W |
| Collapse sidebar | ⌘ B | Ctrl B |
| Save request | ⌘ S | Ctrl S |
| Search in response | ⌘ F | Ctrl F |
| Settings | ⌘ , | Ctrl , |
Settings cover the interface language (system / English / Simplified Chinese / Traditional Chinese / Japanese / French), request timeout, redirects, TLS verification, editor font size, and whether to check for updates at startup.
Use Settings → Data to choose a data directory or restore the default. Changes take effect after restarting GetCat. An empty directory starts a fresh workspace; existing GetCat data in a selected directory is loaded on restart. The previous directory is neither moved nor deleted automatically.
The table lists the system default directories, which are always the source of “Migrate from system default directory”. Migration copies into a target without GetCat data, keeps the source, and never overwrites or merges existing data. Use it after selecting a different directory, before restarting.
A new Windows portable exe uses GetCatData beside the executable. Existing sibling data takes priority; if there is none but the system directory contains older data, GetCat continues using that directory. Restoring the default selects the sibling GetCatData for portable Windows, or the system directory below for installed Windows and other platforms.
The directory choice is stored separately: getcat-storage.json beside a portable Windows exe, or storage-location.json in the system default directory for other versions. The portable default uses a relative location so the whole folder can be moved; custom locations use absolute paths.
Migration copies a snapshot taken at its start; later edits stay in the current directory. An interrupted migration target is rejected on startup: keep its files and choose another directory.
| Platform | Directory |
|---|---|
| macOS | ~/Library/Application Support/GetCat/ |
| Linux | $XDG_DATA_HOME/getcat/ (defaults to ~/.local/share/getcat/) |
| Windows | %APPDATA%\GetCat\data\ |
workspace.json # tab order, sidebar, split direction, theme preference
requests/<ulid>.json # one file per saved request
drafts/<tab-id>.json # one draft per tab
settings.json # application settings
Writes are atomic (temp file → rename), so a crash never leaves a half-written file; a file that fails to parse is renamed to .corrupt-<timestamp> and skipped. Headers such as Authorization are stored in plain text (same as Postman's and Insomnia's local stores), with 0600 file permissions on Unix.
crates/
├─ getcat-core # UI-free core: request model, sending (reqwest + tokio), large-response tiering and spill-to-disk, JSON file storage
└─ getcat-app # GPUI interface: Workspace / RequestTab state, settings dialog, in-app updates
gpui-kit crate, which pins the matching gpui release.catch_unwind, so a panic only surfaces as a "background processing error".getcat-core/src/store handles reads and writes, with writes on a dedicated thread coalesced over 500 ms..github/workflows/ci.yml); Windows needs the MSVC toolchain, and Direct3D 11 ships with the Windows SDK.crates/getcat-app/assets/logo/getcat-art.svg (full) and getcat-art-mini.svg (simplified, for ≤ 32 px) are the originals, and scripts/gen-logo.py composes them into outputs in a light and a dark color scheme — the embedded getcat.png and getcat-mini.png (light, each with a -dark counterpart; the app switches with its theme), the macOS icon source resources/macos/getcat-1024.png, and the Windows exe icon resources/windows/getcat.ico. After changing the logo, rerun the script by hand and commit the output (CI does not generate it; requires pip install pillow numpy, and tools/svg-raster rasterizes the SVGs).crates/getcat-app/build.rs, and only when compiling natively on Windows (an exe cross-compiled from macOS has no icon). The installer is defined in crates/getcat-app/resources/windows/GetCat.wxs and needs WiX v6: dotnet tool install --global wix --version 6.*.cargo run -p getcat-app # run
cargo test --workspace # unit + wiremock + gpui TestAppContext tests
RUST_LOG=debug cargo run -p getcat-app # change the log level
cargo run -p getcat-app --features inspector # element inspector: ⌘⌥I / Ctrl+Shift+I to see ids and roles
GETCAT_UPDATE_CHECK=1 cargo run -p getcat-app # make dev builds check for updates at startup too (check only, no install)
Local test endpoints: tools/testserver/server.py is a dependency-free (Python standard library only) server that deliberately misbehaves — slow responses, huge bodies (1 / 5 / 10 / 20 / 50 MB), chunked dripping, LLM SSE streams (both OpenAI and Anthropic event formats, usage included), a minimal MCP endpoint, arbitrary status codes, mid-transfer disconnects, and floods of oversized response headers. Use it to exercise large-response tiering, streaming progress, and cancellation by hand. Its home page lists every endpoint with its parameters, and each example copies a full URL straight into GetCat.
python3 tools/testserver/server.py # 127.0.0.1:8765, home page = endpoint list
python3 tools/testserver/server.py --port 9000 --host 0.0.0.0 # different port / reachable from other devices
Before committing: cargo fmt --all, cargo clippy --workspace --all-targets -- -D warnings, cargo test --workspace. CI builds and tests on all three platforms and uses cargo-deny to block copyleft dependencies.
Apache-2.0. The third-party dependency list is in THIRD-PARTY.md.