开源 · Apache-2.0

No Postman, Just GetCat!

用 Rust + GPUI 打造的原生跨平台 HTTP 接口调试工具

GPU 渲染 · 低资源占用 · 无需账号 · 数据全在本地 · No Electron, No Tauri, No WebView

macOS · Windows · Linux

需要其他平台?下面有全部下载选项。

左侧构造请求,右侧查看 JSON 响应。
左侧构造请求,右侧查看 JSON 响应。

克制,但该有的都有

下面写的都是 GetCat 现在就能做到的事,没有把路线图当功能列。

原生且轻快

GPU 渲染的原生窗口,不是 Electron / Tauri / WebView;macOS、Linux、Windows 三平台同一套界面,安装包约 16 MB。

大响应不卡

流式接收、实时进度、随时取消。主线程永远不做 O(n) 的工作,几百 MB 的 JSON 也不会把窗口拖住。

完整的请求构造

七种方法,Path / Query / Headers 三张参数表都带描述列,Body 从 raw JSON 一直到定长流式的文件上传。

数据属于你

不存历史、不存响应、不上传任何东西。已保存请求与设置都是美化过的 JSON 文件,可手工编辑、可用 Git 管理。

随手即存

每个 Tab 的草稿自动落盘、重启恢复。Tab 顺序、分栏方向、主题偏好也都记住。

跟随系统

主题与语言跟随系统,也可固定。自绘标题栏让三平台外观一致。所有控件都有可访问名称,屏幕阅读器可用。

应用界面提供 English 与简体中文。

构造完请求,顺手把代码带走

塑造一个请求需要的东西都在,外加一键导出 —— 导出的就是 GetCat 真正发出去的那个请求。

七种方法

  • GET
  • POST
  • PUT
  • PATCH
  • DELETE
  • HEAD
  • OPTIONS

URL 里任何位置写 {name},它就会自动出现在 Path 参数表里。

Body 与参数表

无 Body
用于 GET、HEAD、OPTIONS。
raw JSON / Text / XML
基于 tree-sitter 的语法高亮,带一键格式化。
x-www-form-urlencoded
键值对,编码交给它。
form-data
文本字段与文件字段逐行切换。文件定长流式上传,内容不进内存。
binary
整个文件作为 Body,同样是流式的。
Path 参数
由 URL 里的 {name} 占位符自动生成。
Query
拼到 URL 上,每行可单独启用或停用。
Headers
另有一组全局默认请求头,可以逐条关掉。

生成代码

cURL、cURL(Windows)、Python requests,一键复制。生成器复用的就是发送请求那套拼装逻辑,所以你复制走的代码,等于 GetCat 会发出去的请求。

cURL
curl -X POST 'https://api.anthropic.com/v1/messages' \
  -H 'x-api-key: YOUR_API_KEY' \
  -H 'anthropic-version: 2023-06-01' \
  -H 'Content-Type: application/json' \
  -d '{"model":"claude-opus-5","max_tokens":1024,"messages":[{"role":"user","content":"Hello"}]}'
Python (requests)
import requests

url = "https://api.anthropic.com/v1/messages"

payload = "{\"model\":\"claude-opus-5\",\"max_tokens\":1024,\"messages\":[{\"role\":\"user\",\"content\":\"Hello\"}]}"
headers = {
    "x-api-key": "YOUR_API_KEY",
    "anthropic-version": "2023-06-01",
    "Content-Type": "application/json"
}

response = requests.request("POST", url, data=payload, headers=headers)

print(response.text)

它刻意不生成 TLS、重定向、超时这些参数:那些是 GetCat 的设置,不属于请求本身。

再大的响应也不卡窗口

响应怎么展示取决于它有多大 —— 主线程永远不会被要求做 O(n) 的工作。

按体积分三档

档位条件如何展示
高亮编辑器≤ 5 MB 且 ≤ 200,000 行完整语法高亮、行号、折叠、响应内搜索。
按行虚拟化≤ 64 MB纯文本逐行渲染,只对屏幕上看得见的部分做布局。
落盘预览> 64 MB写入临时文件,只预览前 1 MiB 并给出摘要,可一键保存或用系统程序打开。

接收过程中 实时显示已接收字节与总大小,约每 33 ms 刷新一次,任何时候都能取消。

证书体检

Body 与 Headers 旁边还有一个「证书」页签:GetCat 会离线解析对端的叶子证书,把看到的东西列出来。

  • 主体
  • 颁发者
  • 生效时间
  • 到期时间
  • 备用名称 (SAN)
  • 序列号
  • 签名算法
  • SHA-256 指纹

它会就四件事告警

  • 已过期
  • 尚未生效 —— 检查系统时钟
  • 主机名与证书不符
  • 自签名,无信任链

TLS 校验默认关闭,为的是调本地自签名接口时不用折腾。请求照常发出,而 GetCat 仍然会离线解析证书并就上面四种情况告警。在设置里打开校验之后,坏证书会直接中断握手。

内置 AI 接口模板 —— OpenAI 与 Anthropic 多模态请求体写法对照

点一下就得到一个填好 URL、认证头与请求体的新 Tab。真正的价值在下面这组多模态写法上:三家接口两两不兼容。

六个模板

OpenAI Chat Completions、OpenAI Responses、Anthropic Messages,每个都有纯文本与含图片两个变体。

发送前先替换 YOUR_API_KEY —— GetCat 没有变量与环境系统。

同一个图片请求的三种写法

OpenAI · Chat Completions

POST https://api.openai.com/v1/chat/completions

JSON
{
  "model": "gpt-5.6",
  "messages": [
    {
      "role": "user",
      "content": [
        { "type": "text", "text": "What is in this image?" },
        {
          "type": "image_url",
          "image_url": {
            "url": "https://example.com/cat.jpg",
            "detail": "auto"
          }
        }
      ]
    }
  ],
  "max_completion_tokens": 1024
}

图片块叫 image_url,而且 image_url 是个对象,里面有 url 与 detail。token 上限字段是 max_completion_tokens,不是 max_tokens。

OpenAI · Responses

POST https://api.openai.com/v1/responses

JSON
{
  "model": "gpt-5.6",
  "input": [
    {
      "role": "user",
      "content": [
        { "type": "input_text", "text": "What is in this image?" },
        {
          "type": "input_image",
          "image_url": "https://example.com/cat.jpg"
        }
      ]
    }
  ],
  "max_output_tokens": 1024
}

Responses 把内容块改名成 input_text 与 input_image,这里的 image_url 直接是字符串而不是对象。上限字段是 max_output_tokens。

Anthropic · Messages

POST https://api.anthropic.com/v1/messages

JSON
{
  "model": "claude-opus-5",
  "max_tokens": 1024,
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "image",
          "source": {
            "type": "url",
            "url": "https://example.com/cat.jpg"
          }
        },
        { "type": "text", "text": "What is in this image?" }
      ]
    }
  ]
}

Anthropic 用 image 加一个 source 对象。max_tokens 是必填的,而且按官方建议,图片块要排在文字块之前。

你的工作区,就是几个文件

没有数据库、没有云、没有账号。GetCat 记住的每一样东西都是一个能打开、能改、能提交的 JSON 文件。

它会写什么

workspace.json
Tab 顺序、侧栏状态、分栏方向、主题偏好。
requests/<ulid>.json
一个已保存请求一个文件。
drafts/<tab-id>.json
一个 Tab 一个草稿,重启后恢复。
settings.json
应用设置。

存在哪里

平台目录
macOS~/Library/Application Support/GetCat/
Linux$XDG_DATA_HOME/getcat/
Windows%APPDATA%\GetCat\data\

快捷键

操作macOSWindows / Linux
发送⌘ EnterCtrl Enter
新建 Tab⌘ TCtrl T
关闭 Tab⌘ WCtrl W
折叠侧栏⌘ BCtrl B
保存请求⌘ SCtrl S
响应内搜索⌘ FCtrl F
设置⌘ ,Ctrl ,

写入是原子的 —— 先写临时文件再替换,崩溃不会留下半个文件。解析失败的文件会被改名为 .corrupt-<时间> 并跳过。Authorization 这类 Header 以明文保存,与 Postman、Insomnia 的本地库一致,Unix 上文件权限 0600。

GetCat 刻意不做的事

把这份清单放在这里,是为了让你在下载之前就知道,也免得有人拿别的工具去类推:

历史记录 · 环境变量与变量替换 · 脚本与测试断言 · 独立的 Auth 面板 · Cookie 管理 · 文件夹树 · GraphQL、WebSocket、gRPC · 团队同步与云端账号

下载

所有版本都在 GitHub Releases 上。这里的链接永远指向最新版。

安装

macOS

已签名公证,拖进「应用程序」即可。

Windows

MSI 装到当前用户目录,不需要管理员权限,开始菜单里可以启动。免安装 exe 放哪都能跑,不写注册表。

Linux

解压后把可执行文件放进 PATH。再加一个 .desktop 就有启动器了 —— 命令见下。

Linux 安装
tar -xzf GetCat-linux-x64.tar.gz
install -Dm755 getcat ~/.local/bin/getcat
mkdir -p ~/.local/share/applications
cat > ~/.local/share/applications/getcat.desktop <<EOF
[Desktop Entry]
Type=Application
Name=GetCat
Exec=$HOME/.local/bin/getcat
Categories=Development;
EOF

Windows 的两个包尚未代码签名,首次运行 SmartScreen 会拦一下:点「更多信息」→「仍要运行」。

更新

GetCat 在启动 5 秒后向 GitHub Releases 查询一次,绝不自动下载任何东西。你选择更新时,安装包会先用 SHA-256 与 minisign 签名双重校验,通过之后才安装。

全部版本与更新日志

系统要求

GetCat 用 GPU 画界面,所以图形栈比 CPU 更要紧。

macOS

Apple Silicon 或 Intel 均可。dmg 已签名公证。

Windows

Windows 10 1803(2018 年 4 月更新)及以上,或 Windows 11。界面走 Direct3D 11,feature level 10.1 起 —— 2010 年前后的显卡就够,不要求 DirectX 12。

Linux

2022 年后的主流桌面发行版:Ubuntu 22.04+、Debian 12+、Fedora 36+、Linux Mint 21+、openSUSE Leap 15.6+,以及 Arch 这类滚动版。下限是 glibc 2.35,所以 Ubuntu 20.04、Debian 11 和 RHEL 9 系跑不了。

Linux:黑屏就是 Vulkan 的问题

界面走 Vulkan。如果窗口是黑的,先用 vulkaninfo --summary 确认驱动,然后按显卡装对应的包:

显卡软件包
Mesamesa-vulkan-drivers
Intelvulkan-intel
AMDvulkan-radeon
NVIDIAnvidia-driver

nouveau 没有 Vulkan 支持 —— NVIDIA 显卡需要专有驱动。在虚拟机里会退回 lavapipe 软件渲染,能用但慢。

常见问题

GetCat 和 Postman 有什么区别?

GetCat 是一个克制的子集。没有账号、没有云同步、没有 collection、没有环境变量、没有脚本。换来的是一个 16 MB 的原生应用:秒开、每个字节都留在你机器上、面对超大响应也不会卡死。如果你需要团队协作或测试套件,Postman 和 Insomnia 仍然是更合适的工具。

为什么不用 Electron 或 Tauri?

GetCat 是用 Rust 写的,基于 GPUI —— Zed 编辑器用的那套 UI 框架。窗口由 GPU 直接绘制而不是交给浏览器引擎,这既是安装包能压到 16 MB 的原因,也是几百 MB 数据流进来时响应区还能滚动的原因。网络在 Tokio runtime 上跑,结果通过 channel 回到 UI 线程,主线程永远不做 O(n) 的工作。

我的请求和 API Key 存在哪里?会上传吗?

不会上传 —— 没有遥测、没有账号、没有同步。已保存请求、草稿和设置都是平台数据目录里美化过的 JSON 文件,你可以手工编辑,也可以放进 Git。Authorization 这类 Header 值以明文保存,与 Postman、Insomnia 的本地库做法一致,Unix 上文件权限是 0600。

为什么默认关闭 TLS 证书校验?

为的是让「调一个自签名证书的本地接口」这件事直接可用,而这在开发时是常态。请求照常发出,同时 GetCat 仍会离线解析对端证书,并在证书已过期、尚未生效、主机名不符、或自签名无信任链时告警。在设置里打开校验就恢复严格行为:坏证书直接中断握手。

支持环境变量、测试断言或团队协作吗?

不支持,当前这条线上也没有计划。GetCat 没有变量替换、没有请求前后的脚本、没有断言运行器、没有 Cookie 管理、没有文件夹树、没有共享工作区。重复请求这个场景由模板覆盖;其余都是为了让应用保持小而可预期,刻意留白的。

Linux 上窗口是黑的,怎么办?

界面走 Vulkan,黑屏几乎总是意味着缺 Vulkan 驱动。先跑 vulkaninfo --summary 确认,然后按显卡装 mesa-vulkan-drivers、vulkan-intel 或 vulkan-radeon。NVIDIA 显卡需要专有驱动 —— nouveau 没有 Vulkan 支持。在虚拟机里会退回 lavapipe 软件渲染。

支持 GraphQL / WebSocket / gRPC 吗?

不支持。GetCat 只说 HTTP。你当然可以把 GraphQL 查询作为 JSON Body POST 出去,但没有 schema 内省、没有订阅支持,也没有针对这些协议的界面。

多少钱?什么许可证?

免费且开源,Apache-2.0。没有付费档位、没有账号、没有任何需要注册的东西。源码、issue 和每一个安装包都在 GitHub 上。