# GetCat

> Rust + GPUI で作られた、ネイティブなクロスプラットフォーム HTTP API クライアント

macOS・Windows・Linux 対応の、オープンソースで無料の HTTP API クライアント。Rust と GPUI で作られた GPU レンダリングのネイティブウィンドウで、Electron ではありません。アカウント不要、何もアップロードせず、数百 MB のレスポンスでも UI は固まりません。

ライセンス: Apache-2.0 · 対応プラットフォーム: macOS, Windows, Linux · ダウンロードサイズ: 16 MB

## セクション

- [機能](https://getcat.io/ja/#features)
- [リクエスト](https://getcat.io/ja/#request)
- [レスポンス](https://getcat.io/ja/#response)
- [AI テンプレート](https://getcat.io/ja/#ai)
- [ワークスペース](https://getcat.io/ja/#workspace)
- [ダウンロード](https://getcat.io/ja/#download)
- [動作環境](https://getcat.io/ja/#requirements)
- [よくある質問](https://getcat.io/ja/#faq)

## 邪魔をしないために作られています

ここに書いてあるのは、GetCat が今できることだけです。ロードマップを機能として並べてはいません。

### ネイティブで軽快

GPU でレンダリングされるネイティブウィンドウです。Electron でも Tauri でも WebView でもありません。macOS・Linux・Windows で同じ画面、ダウンロードは約 16 MB。

### 大きなレスポンスでも滑らか

ストリーミング受信、進捗表示、いつでもキャンセル。メインスレッドが O(n) の処理をしないため、数百 MB の JSON でもウィンドウが固まりません。

### 一通りのリクエスト構築

7 つのメソッド、説明欄つきの Path / Query / ヘッダーの各テーブル、raw JSON からストリーミングのファイルアップロードまでのボディ形式。

### データはあなたのもの

履歴を残さず、レスポンスも保存せず、どこにもアップロードしません。保存したリクエストや設定は、手で編集でき Git でも管理できる整形済み JSON ファイルです。

### 書いたそばから保存

各タブの下書きは自動でディスクに書かれ、再起動後に復元されます。タブの順序、分割方向、テーマの設定も記憶します。

### システムに追従

テーマと言語は OS に追従し、固定もできます。タイトルバーは自前描画なので 3 つのプラットフォームで見た目が揃います。すべてのコントロールにアクセシブル名があり、スクリーンリーダーで使えます。

アプリの表示言語は English と简体中文 です。

## リクエストを組み立てて、コードごと持ち出す

リクエストを形づくるのに必要なものが一通りと、GetCat が実際に送信する内容とぴったり一致するワンクリック書き出し。

### 7 つのメソッド

`GET` · `POST` · `PUT` · `PATCH` · `DELETE` · `HEAD` · `OPTIONS`

URL のどこかに `{name}` と書けば、自動的に Path パラメータの表に現れます。

### ボディとパラメータ表

| 項目 | 説明 |
| --- | --- |
| `ボディなし` | GET・HEAD・OPTIONS 用。 |
| `raw JSON / Text / XML` | tree-sitter によるシンタックスハイライトと、ワンクリック整形。 |
| `x-www-form-urlencoded` | キーと値のペア。エンコードは任せられます。 |
| `form-data` | テキスト欄とファイル欄を行ごとに切り替え。ファイルは長さ既知のストリーミングで送られ、メモリには載りません。 |
| `binary` | ファイル 1 つをそのままボディに。同じくストリーミングです。 |
| Path パラメータ | URL 内の `{name}` プレースホルダから自動生成されます。 |
| Query | URL に付加されます。行ごとに有効・無効を切り替えられます。 |
| ヘッダー | さらに、行ごとにオフにできるグローバルな既定ヘッダーがあります。 |

### コードを生成

cURL、cURL (Windows)、Python requests をワンクリックでコピー。生成器はリクエスト送信と同じ組み立てロジックを使うので、コピーしたコードは GetCat が送るはずだったリクエストそのものです。

#### cURL

```bash
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"}]}'
```

#### cURL (Windows)

```bash
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}"
```

#### Python (requests)

```python
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) の処理を求められることは決してありません。

### サイズによる 3 段階

| 段階 | 条件 | 表示方法 |
| --- | --- | --- |
| ハイライト付きエディタ | 5 MB 以下かつ 200,000 行以下 | 完全なシンタックスハイライト、行番号、折りたたみ、レスポンス内検索。 |
| 行単位の仮想化 | 64 MB 以下 | プレーンテキストを行ごとに描画し、画面に見える範囲だけレイアウトします。 |
| ディスクへ退避 | 64 MB 超 | 一時ファイルに書き出し、先頭 1 MiB と要約だけをプレビュー。ワンクリックで保存も外部アプリで開くこともできます。 |

**受信中** — 受信済みバイト数と全体サイズを約 33 ms ごとに更新して表示し、どの時点でもキャンセルできます。

### 証明書チェック

Body とヘッダーの隣に「証明書」タブがあります。GetCat は相手側のリーフ証明書をオフラインで解析し、読み取った内容を表示します。

サブジェクト · 発行者 · 有効期間の開始 · 有効期限 · サブジェクト代替名 (SAN) · シリアル番号 · 署名アルゴリズム · SHA-256 フィンガープリント

**次の 4 つを警告します**

- 有効期限切れ
- まだ有効ではない — システム時計を確認してください
- ホスト名が証明書と一致しない
- 自己署名で信頼チェーンがない

TLS 検証は既定でオフです。自己署名証明書のローカル環境に手間なくつなげるようにするためです。リクエストはそのまま送信され、GetCat は証明書をオフラインで解析して上の 4 つを警告します。設定で検証を有効にすると、不正な証明書ではハンドシェイクが中断されます。

## 組み込みの AI API テンプレート — OpenAI と Anthropic のマルチモーダル本文の書き方比較

ワンクリックで URL・認証ヘッダー・本文が入ったタブができます。本当の価値は下のマルチモーダルの形にあります。3 つの API は互いに互換性がありません。

### 6 つのテンプレート

OpenAI Chat Completions、OpenAI Responses、Anthropic Messages。それぞれテキストのみと画像つきの 2 種類。

送信前に YOUR_API_KEY を置き換えてください。GetCat には変数や環境の仕組みがありません。

### 同じ画像リクエストの 3 通りの書き方

#### 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 を持つオブジェクトです。トークン上限のフィールドは max_tokens ではなく max_completion_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` | タブの順序、サイドバーの状態、分割方向、テーマ設定。 |
| `requests/<ulid>.json` | 保存したリクエスト 1 件につき 1 ファイル。 |
| `drafts/<tab-id>.json` | タブ 1 つにつき下書き 1 つ。再起動時に復元されます。 |
| `settings.json` | アプリケーション設定。 |

### 置き場所

| プラットフォーム | ディレクトリ |
| --- | --- |
| macOS | `~/Library/Application Support/GetCat/` |
| Linux | `$XDG_DATA_HOME/getcat/` |
| Windows | `%APPDATA%\GetCat\data\` |

書き込みはアトミックです。一時ファイルを作って置き換えるので、クラッシュしても半端なファイルは残りません。解析に失敗したファイルは `.corrupt-<時刻>` に改名されスキップされます。`Authorization` などのヘッダーは平文で保存されます。Postman や Insomnia のローカル DB と同じ扱いで、Unix では 0600 のパーミッションです。

### キーボードショートカット

| 操作 | macOS | Windows / Linux |
| --- | --- | --- |
| 送信 | `⌘ Enter` | `Ctrl Enter` |
| 新しいタブ | `⌘ T` | `Ctrl T` |
| タブを閉じる | `⌘ W` | `Ctrl W` |
| サイドバーの開閉 | `⌘ B` | `Ctrl B` |
| リクエストを保存 | `⌘ S` | `Ctrl S` |
| レスポンス内を検索 | `⌘ F` | `Ctrl F` |
| 設定 | `⌘ ,` | `Ctrl ,` |

### GetCat が意図的にやらないこと

ダウンロードする前に分かるように、そして他のツールから類推して誤解しないように、ここに挙げておきます。

リクエスト履歴 · 環境変数と変数展開 · スクリプトとテストアサーション · 専用の認証パネル · Cookie 管理 · フォルダツリー · GraphQL・WebSocket・gRPC · チーム同期とクラウドアカウント

## ダウンロード

すべてのビルドは GitHub Releases にあります。リンクは常に最新版を指します。

| プラットフォーム | 項目 | ファイル |
| --- | --- | --- |
| macOS | Apple Silicon | `GetCat-macos-arm64.dmg` |
| macOS | Intel | `GetCat-macos-x64.dmg` |
| Windows | x64 · インストーラー | `GetCat-windows-x64.msi` |
| Windows | x64 · ポータブル | `GetCat-windows-x64.exe` |
| Linux | x64 | `GetCat-linux-x64.tar.gz` |

### インストール

- **macOS** — 署名・公証済みです。「アプリケーション」にドラッグしてください。
- **Windows** — MSI はユーザー単位でインストールされ、管理者権限は不要、スタートメニューから起動できます。ポータブル版 exe はどこに置いても動き、レジストリには何も書きません。
- **Linux** — 展開してバイナリを PATH に置いてください。.desktop ファイルを 1 つ足せばランチャーにも並びます。コマンドは下記のとおりです。

#### Linux でのインストール

```bash
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 を 1 回だけ確認し、自分から何かをダウンロードすることはありません。更新を選ぶと、SHA-256 と minisign 署名の両方で検証してからインストールします。

## 動作環境

GetCat は GPU で描画するので、CPU よりグラフィックス周りが重要です。

### macOS

Apple Silicon と Intel の両方に対応。ディスクイメージは署名・公証済みです。

### Windows

Windows 10 バージョン 1803（2018 年 4 月更新）以降、または Windows 11。描画は Direct3D 11 の feature level 10.1 で、おおよそ 2010 年以降の GPU なら動きます。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` でドライバを確認し、GPU に応じたパッケージを入れてください。

| GPU | パッケージ |
| --- | --- |
| Mesa | `mesa-vulkan-drivers` |
| Intel | `vulkan-intel` |
| AMD | `vulkan-radeon` |
| NVIDIA | `nvidia-driver` |

`vulkaninfo --summary` — nouveau は Vulkan に対応していないため、NVIDIA では専有ドライバが必要です。仮想マシン内では lavapipe のソフトウェアレンダリングにフォールバックします。動きますが低速です。

## よくある質問

### Postman と何が違いますか？

GetCat は絞り込んだサブセットです。アカウント、クラウド同期、コレクション、環境変数、スクリプトはいずれもありません。代わりに、すぐ起動して、すべてのバイトが手元に残り、非常に大きなレスポンスでも詰まらない 16 MB のネイティブアプリが手に入ります。チーム連携やテストスイートが必要なら、Postman や Insomnia のほうが適しています。

### なぜ Electron や Tauri ではないのですか？

GetCat は Rust で書かれ、Zed エディタと同じ UI フレームワークである GPUI の上に構築されています。ウィンドウはブラウザエンジンではなく GPU が直接描画します。それがダウンロードサイズを約 16 MB に保ち、数百 MB が流れ込んでいる最中でもレスポンス欄を操作できる理由です。通信は Tokio ランタイムで動き、結果はチャネル経由で UI スレッドに戻るため、メインスレッドが O(n) の処理をすることはありません。

### リクエストや API キーはどこに保存されますか？アップロードされますか？

アップロードされません。テレメトリも、アカウントも、同期もありません。保存されたリクエスト・下書き・設定は、プラットフォームのデータディレクトリにある整形済み JSON ファイルで、手で編集しても Git に入れても構いません。Authorization などのヘッダー値は平文で保存されます。Postman や Insomnia のローカル DB と同じ扱いで、Unix では 0600 のパーミッションです。

### なぜ TLS 検証が既定でオフなのですか？

開発中によくある「自己署名証明書のローカル環境を叩く」がそのまま動くようにするためです。リクエストは通常どおり送信され、GetCat は相手の証明書をオフラインで解析して、期限切れ・まだ有効でない・ホスト名不一致・信頼チェーンのない自己署名を警告します。設定で検証を有効にすれば厳格な動作に戻り、不正な証明書ではハンドシェイクが中断されます。

### 環境変数、テストアサーション、チーム連携には対応していますか？

いずれも未対応で、現在の路線では予定もありません。変数展開、リクエスト前後のスクリプト、アサーションの実行、Cookie の保管、フォルダツリー、共有ワークスペースはありません。繰り返しのリクエストはテンプレートでカバーし、それ以外はアプリを小さく予測可能に保つために意図的に省いています。

### Linux でウィンドウが真っ黒です。どうすれば？

画面は Vulkan で描画されるので、真っ黒な場合はほぼ Vulkan ドライバの不足です。`vulkaninfo --summary` で確認し、GPU に応じて mesa-vulkan-drivers、vulkan-intel、vulkan-radeon のいずれかを入れてください。NVIDIA では専有ドライバが必要です（nouveau は Vulkan 非対応）。仮想マシンでは lavapipe のソフトウェアレンダリングにフォールバックします。

### GraphQL・WebSocket・gRPC には対応していますか？

対応していません。GetCat が話すのは HTTP だけです。GraphQL のクエリを JSON ボディとして POST することはもちろんできますが、スキーマのイントロスペクションもサブスクリプションも、プロトコル専用の画面もありません。

### 価格とライセンスは？

無料でオープンソース、Apache-2.0 です。有料プランもアカウントも、登録が必要なものは何もありません。ソースコード、issue、すべてのビルドが GitHub にあります。

## 関連リンク

- [公式サイト](https://getcat.io/ja/)
- [GitHub](https://github.com/finch-xu/GetCat): ソースコードと issue
- [Releases](https://github.com/finch-xu/GetCat/releases): すべてのバージョンとインストーラー
- [DeepWiki](https://deepwiki.com/finch-xu/GetCat): 自動生成されたコードドキュメント
