AIコーディング環境はエディタ側から出発したものが多い。VS Codeのフォークにチャットパネルを足す、という形が主流だ。Terax(crynta/terax-ai・★9,153・Apache-2.0・2026-09-04時点)はそこを逆にして、ターミナルを中心に据え、その周りにエディタ・ファイルツリー・Git・Webプレビュー・AIサイドパネルを配置する。
そして「Lightweight (7MB)」を看板に掲げている。Electron製のAIエディタが数百MBある中で、Tauri 2 + Rust + React 19 という構成で2桁小さいと主張しているわけだ。
この記事では、その看板を含めた確かめられる主張だけを実機とGitHub APIで測った。公式dmgを落として展開し、署名と公証を確認し、実際に起動してプロセスとソケットを観測した。逆に「エディタの使い勝手」や「AIエージェントの賢さ」は主観になるので扱わない。
du で測った Terax.app の実サイズ。・Tauri 2 + Rust + React 19。macOS版のアプリ実体は9.0MiBで公称に近い
・ただしLinux版AppImageだけ94.5MB(他形式の約14倍)
・Developer ID署名+Apple公証済み(
spctl が accepted を返す)・最新リリースは2026-07-27。mainはそこから97コミット先を走っている
AIコーディング環境の選び方全体はVibe Codingとは?AIコーディングの始め方・ツール比較・実践ワークフロー2026にまとめている。
日本語圏の「TERAX(テラックス)」は、鉱石粉末をプリントした体温ケア素材のアパレルブランドとしての知名度が先にある(QVCや楽天で「TERAX HOT」「ここちケア遠赤スパッツ」等が販売されている)。DataForSEO で
terax の月間検索ボリュームを引くと日本で320件あるが、12か月の推移は 170〜320 でリポジトリが作られた2026年4月より前から非ゼロであり、この数字をそのままOSSの需要と読むことはできない。直近3か月が 480 / 880 / 480 と持ち上がっているのはOSS側の伸びを反映している可能性が高いものの、両者は混在している。この記事が扱うのは crynta/terax-ai のほうである。
Teraxとは:ターミナルを中心に据えたAI開発環境(ADE)
READMEはTeraxを「terminal-first AI-native development environment (ADE)」と呼ぶ。構成要素は5つで、どれもターミナルタブと同じウィンドウに収まる。
| 領域 | 実装 | 主な機能 |
|---|---|---|
| ターミナル | xterm.js + WebGLレンダラ、portable-pty によるネイティブPTY |
ブロック単位表示、水平・垂直分割、複数タブのバックグラウンドストリーミング、zsh/bash/pwsh/fish/cmd |
| エディタ | CodeMirror 6 | TS/JS・Rust・Python・Go・C/C++・Java など、AI補完とhunk単位の差分適用、Vimモード、opt-inのLSP |
| ソース管理 | 独自パネル | hunk単位のstage/unstage、レーン描画のコミットグラフ、コミット検索 |
| ファイル | 独自エクスプローラ | ファジー検索、インラインリネーム、ディスク変更のライブ反映、AIパネルへの添付 |
| Webプレビュー | ネイティブ子webview | ローカル開発サーバーの自動検出、外部URLのプレビュー |
言語構成はGitHub API上で TypeScript 78.8% / Rust 19.2% だった。「Tauri 2 + Rust」を前面に出しているが、実装の重心はフロントエンド側にある——これは批判ではなく、Tauriアプリの一般的な姿である。Rust側の依存は src-tauri/Cargo.toml で28個と、Tauriアプリとしては素直な規模だ。
AI側はBYOK(自分のキーを持ち込む)方式で、OpenAI・Anthropic・Google・Groq・xAI・Cerebras・OpenRouter・DeepSeek・Mistral に加え、任意のOpenAI互換エンドポイントに向けられる。ローカル推論はLM Studio・MLX・Ollamaに対応する。エージェント側はプラン生成・サブエージェント・TERAX.md によるプロジェクトメモリ・承認ゲート付きのbash実行を持ち、さらにターミナル内にClaude Codeを起動して出力を読み、承認ゲート越しに追加指示を送るという「コーディングエージェントのオーケストレーション」まで載っている。
portable-pty でネイティブPTY"] --- B["コードエディタ
CodeMirror 6"] A --- C["ソース管理
コミットグラフ"] A --- D["Webプレビュー
子webview"] E["AIサイドパネル
BYOK + ローカル"] --> A E --> B F["TERAX.md
プロジェクトメモリ"] --> E E --> G["承認ゲート付き bash /
Claude Code の起動と監視"]
AI側はBYOK。ローカル推論にも向けられる
AI機能はすべて「自分のキーを持ち込む」前提で、ツール自体には課金が無い。READMEが挙げる接続先を整理すると次のようになる。
| 種別 | 接続先 |
|---|---|
| クラウド(BYOK) | OpenAI / Anthropic / Google(Gemini)/ Groq / xAI(Grok)/ Cerebras / OpenRouter / DeepSeek / Mistral |
| 任意のエンドポイント | OpenAI互換のAPIならすべて |
| ローカル・オフライン | LM Studio / MLX / Ollama |
エージェント側の機能は、プラン生成・サブエージェント・TERAX.md によるプロジェクトメモリ・ファイルの read / write / edit / multi-edit / grep / glob・承認ゲート付きのbash実行・バックグラウンドプロセス、と一通り揃っている。さらに「coding-agent orchestration」として、ターミナル内に Claude Code を起動して出力を読み、承認ゲート越しに追加の作業を投げるという機能が挙がっている。エディタ側にAIを埋め込むのではなく、ターミナルで動く既存のエージェントを外から操るという発想で、terminal-first を名乗るだけの一貫性はある。
Composer(プロンプト入力欄)は #handle でプロンプトスニペット、@path でファイルを差し込め、音声入力とエクスプローラからの添付にも対応する。テーマ関連では Kanagawa・Catppuccin・Rosé Pine・Everforest・Dracula・Solarized・Nord・Tokyo Night・GitHub・Xcode がエディタテーマとして同梱され、アプリのテーマとエディタのテーマは独立して設定できる。背景画像に不透明度とぼかしを掛ける設定まである。
上のAI機能・テーマ機能はREADMEの記載であって、動作を確認したものではない。加えて前述のとおり、ダウンロードできるのは v0.8.6(2026-07-27)のビルドで、READMEが説明しているのは97コミット先の main である。この一覧のどこまでが v0.8.6 に入っているかは、リリースノートからは判別できなかった。
「7〜8MB」はどこまで本当か
看板の数字を配布形式ごとに実測した。
| 配布形式 | 実測サイズ | 公称「7-8 MB」との関係 |
|---|---|---|
Terax_0.8.6_x64-setup.exe(Windows) |
4,335,936 B(4.3 MB) | 下回る |
Terax_0.8.6_x64_en-US.msi(Windows) |
5,419,008 B(5.4 MB) | 下回る |
Terax_0.8.6_amd64.deb(Linux) |
5,979,782 B(6.0 MB) | 下回る |
Terax_0.8.6_aarch64.dmg(macOS) |
6,739,016 B(6.7 MB) | 範囲内 |
Terax_0.8.6_x64.dmg(macOS) |
7,091,052 B(7.1 MB) | 範囲内 |
展開後の Terax.app |
9.0 MiB(本体バイナリ 8,488,912 B) | やや上回る |
Terax_0.8.6_amd64.AppImage(Linux) |
94,472,696 B(94.5 MB) | 約14倍 |
ダウンロードサイズで見れば公称はおおむね正しく、AppImageだけが例外だ。AppImageはGTK/WebKitのランタイムを同梱するため必然的にこうなる。READMEのLinux注記も「.deb / .rpm はシステムのGTKスタックにリンクするので滑らかな傾向」と書いており、AppImageを第一候補にしていない。とはいえ「Lightweight (7MB)」だけ見てAppImageを取ると14倍の物を掴むので、Linuxユーザーは.debか.rpm、Arch なら yay -S terax-bin、NixOSなら公式flakeを選ぶのが素直だ。
なお Terax.app の LSMinimumSystemVersion は 13.0 で、macOS 13 Ventura 以降が対象だった。
なぜ9MiBで収まるのか——アプリの中身を開けて確かめる
「Tauriだから小さい」で済ませずに、Terax.app の中身を見た。
ls Terax.app/Contents/
# CodeResources Info.plist MacOS Resources _CodeSignature
du -sh Terax.app/Contents/Resources # → 876K(中身は icon.icns のみ)
ls Terax.app/Contents/Frameworks # → 存在しない
otool -L Terax.app/Contents/MacOS/terax | grep WebKit
# → /System/Library/Frameworks/WebKit.framework/Versions/A/WebKit
Frameworks/ ディレクトリが存在せず、OS標準の WebKit にリンクしている。Electron製アプリが数百MBになるのは Chromium と Node.js のランタイムを丸ごと同梱するからで、TeraxはそれをOSのWKWebViewで代替している。バンドルの実体は「バイナリ1本(8,488,912 B)+アイコン876KB+メタデータ」だけで、React 19 のフロントエンドはバイナリに埋め込まれている。
この構造は、サイズと引き換えに描画がOS側のWebKitバージョンに依存するという性質を持つ。READMEのLinux注記が「AppImageはFUSEが要る」「WaylandでレンダリングがおかしければWEBKIT_DISABLE_DMABUF_RENDERER=1を試す」「.deb/.rpmはシステムのGTKスタックにリンクするので滑らかな傾向」と細かく書いているのは、まさにこの依存の裏返しだ。macOSとWindowsでは環境差が出にくく、Linuxではディストリ差が出やすいというのが、この設計から素直に予想される姿になる。
署名と公証は通っている
配布物の素性も確認した。
codesign -dv /Volumes/Terax/Terax.app
# Identifier=app.crynta.terax
# TeamIdentifier=4FLB46KK27
spctl -a -vv /Volumes/Terax/Terax.app
# /Volumes/Terax/Terax.app: accepted
# source=Notarized Developer ID
# origin=Developer ID Application: Edgar Injighulyan (4FLB46KK27)
Apple の公証(Notarization)を通っており、Gatekeeper が accepted を返す。個人メンテナのOSSデスクトップアプリでここまでやっているものは多くない。右クリック→開くのような回避操作なしにインストールできる。Linux版のアセットには .sig(Tauri updater 用の署名)も付いている。
起動して測る:1プロセス・RSS 51MiB・ソケット0本
実際に起動して観測した。--version や --help を付けてもGUIが起動する(Tauriアプリなのでフラグは解釈されない)ので、そのまま観測に使った。
# 起動して常駐プロセスを見る
./Terax.app/Contents/MacOS/terax &
ps -o rss=,etime= -p $(pgrep -f "Terax.app/Contents/MacOS/terax" | head -1)
# 52576 00:02:37 ← RSS 52,576 KB ≒ 51.3 MiB
# ソケットを数える(LISTEN も確立済みも)
for p in $(pgrep -f "Terax.app/Contents/MacOS/terax"); do
lsof -nP -p $p -a -i 2>/dev/null | tail -n +2
done | wc -l
# → 0
| 観測項目 | 結果 |
|---|---|
| 常駐プロセス数 | 1(別プロセスのヘルパーは観測されず) |
| RSS | 52,576 KB(約51.3 MiB) |
| LISTENソケット | 0本 |
| 外向きの確立済み接続 | 0本(起動から約4分間) |
これは
lsof による断続的な観測であり、2秒で閉じるような短命な接続は取りこぼす。「No telemetry」の主張と矛盾しない結果が出た、という以上のことは言えない。厳密に確かめるなら socket.connect 相当を包んで呼び出し自体を数えるか、パケットキャプチャが要る。またAIプロバイダのキーを設定して実際に使えば当然外部へ通信する——ここで観測したのはキー未設定・起動直後の状態である。
APIキーの保存先については、READMEが「keyring 経由でOSキーチェーンに書き、ディスクやlocalStorageには触れない」と説明している。src-tauri/Cargo.toml を確認すると keyring = { version = "3.6", ... } がプラットフォーム別に2箇所で宣言されており、機構としては実在する。ただし本記事は実際にキーを入れて保存先を追跡してはいないので、「その依存がある」ところまでが確認済みである。
配布物とリポジトリの間にある97コミットの差
導入判断でいちばん効くのがここだ。GitHub APIで測った現況は次のとおり。
gh api で取得。open_issues_count は 436 だが、これはPRを含む合計であり、Issue と PR に分けると 247 / 189 になる。gh api "repos/crynta/terax-ai/compare/v0.8.6...main" --jq '{ahead:.ahead_by}'
# → {"ahead":97}
| 指標 | 値 |
|---|---|
| 最新リリース | v0.8.6(2026-07-27) |
| 最終push(main) | 2026-09-02 |
| タグ→mainのコミット差 | 97 |
main の package.json の version |
0.8.6 のまま |
| オープンIssue | 247 |
| オープンPull Request | 189 |
READMEが説明しているのは main の姿で、ダウンロードできるのは7月27日のビルドである。この39日の間に97コミットが入っており、main の package.json もバージョンを上げていないため、リリースノートから「何が入って何が入っていないか」を判別する手掛かりが薄い。README の機能一覧に惹かれて入れた機能が、v0.8.6 のバイナリには無い可能性がある。
オープンPRが189本というのも目を引く。open_issues_count の 436 をそのまま「Issue 436件」と書いてしまいがちだが、GitHubのこのフィールドはPRを含むので、内訳を分けないと実態を誤る。★9,153に対してPR 189本というのは、コントリビュートが集まっている一方でレビューが追いついていない状態を示している。
ダウンロード実績では Windows が半分を超える
導入層の実態も測れる。v0.8.6のインストーラ(updater用の .tar.gz と .sig を除く)のダウンロード数は次のとおりだった。
| プラットフォーム | 内訳 | 合計 | 構成比 |
|---|---|---|---|
| Windows | x64-setup.exe 4,258 + msi 819 |
5,077 | 52.5% |
| macOS | aarch64.dmg 2,063 + x64.dmg 266 |
2,329 | 24.1% |
| Linux | deb 1,299 + AppImage 723 + rpm 236 |
2,258 | 23.4% |
「ターミナル起点」という性格から想像するよりも、Windowsの比率が高い。READMEがWSLを「ラップされたサブプロセスではなく第一級のワークスペース環境」と位置づけ、Windowsのシェル検出順(pwsh.exe → powershell.exe → cmd.exe)まで書いているのは、この層に応えたものだろう。16リリース累計のインストーラ系ダウンロードは86,799件で、★9,153に対して十分な実利用がある。
ソースからビルドする場合の前提
配布バイナリが7月27日のものである以上、mainの機能を試したいならソースからビルドすることになる。READMEが挙げる前提は3つだ。
# 前提: Rust (stable) / Node 20+ / pnpm / 各プラットフォームの Tauri 前提条件
pnpm install
pnpm tauri dev # 開発
pnpm tauri build # 本番バンドル
| 前提 | 内容 |
|---|---|
| Rust | stable(rustup 経由) |
| Node.js | 20以上、パッケージマネージャは pnpm |
| Tauri 前提条件 | プラットフォームごと(macOSならXcode Command Line Tools、LinuxならWebKitGTK等) |
Rust側の依存は28個と少ないが、Tauri 2 のビルドは初回に依存クレートのコンパイルが走る。この記事ではリリースバイナリで検証を完結させたためソースビルドは行っていないので、所要時間とディスク使用量は未計測である。実行環境の空きが少ないマシンで
pnpm tauri build を試すなら、node_modules と target/ の両方が伸びる点を見込んでおきたい。
READMEの多言語対応は11言語(簡体字中国語・スペイン語・ドイツ語・フランス語・日本語・韓国語・ポルトガル語・ポーランド語・ロシア語・インドネシア語・ヒンディー語)で、日本語版 docs/readme/README.ja.md の最終更新コミットは英語版と同一(2026-08-05)だった。多言語READMEは翻訳だけ古くなるのが定番だが、ここは同じコミットで揃えて更新されている。日本語で読みたい場合、内容が古い心配は今のところない。
何を確かめられて、何を確かめていないか
| 主張 | 判定 | 根拠 |
|---|---|---|
| 「Lightweight (7MB)」 | ○(AppImageを除く) | dmg 6.7MB / app 9.0MiB / exe 4.3MB。AppImageのみ94.5MB |
| Developer ID署名・公証済み | ○ | spctl -a -vv が accepted、source=Notarized Developer ID |
| 「No telemetry」 | △ | 起動後4分でソケット0本。無通信の証明ではない |
| 「No account」 | ○ | 起動にサインインは不要(キー未設定でGUIが開く) |
| APIキーはOSキーチェーンへ | △ | keyring 3.6 の依存は実在。保存先の追跡は未実施 |
| Tauri 2 + Rust + React 19 | ○ | Cargo.toml に tauri = "2"、言語構成 TS 78.8% / Rust 19.2% |
| README記載の全機能が使える | ✕(要注意) | 配布は7/27のv0.8.6、mainは97コミット先 |
| エディタ・AIの使い勝手 | — | 未評価(主観になるため扱わない) |
商用のAIエディタと比べたいならWindsurf IDE|CascadeエージェントでCursor・Copilotを超えたAI開発環境や、料金面での比較はcursor 料金(Cursor pricing)2026|Hobby・Pro・Pro+・Ultraの違いと選び方が近い。TeraxはBYOKなのでツール自体の課金が無く、払うのは自分が選んだモデルのAPI料金だけという点が構造的な違いになる。
①Linuxなら `.deb` / `.rpm` / AUR / Nix を選ぶ(AppImageは14倍・FUSEも要る)
②READMEの機能一覧を鵜呑みにしない。v0.8.6 は7/27のビルドで、mainは97コミット先
③macOS は 13.0 以降(
LSMinimumSystemVersion)。署名・公証済みなので回避操作は不要
まとめ:Teraxの看板は概ね正しく、注意点は「配布物の鮮度」
Teraxの主張のうち、外形的に検証できるものはほぼ通った。7〜8MBという配布サイズは(AppImageを除いて)事実で、署名と公証も本物、起動時のメモリも51MiBと軽い。個人が中心のOSSデスクトップアプリとしては、配布のきちんとしている側にある。
引っかかるのは性能でも設計でもなく、配布物とリポジトリの距離だ。最後のリリースから39日で97コミット、バージョン番号は据え置き、オープンPRは189本。★9,153・累計86,799ダウンロードという勢いに対して、リリースの刻みが追いついていない。READMEを読んで期待した機能が、いま落とせるビルドに入っているとは限らない——これは記事を書く側にとっても、読者が導入を決めるときにも、いちばん見落としやすい差である。
なお本記事はアプリを起動して外形を測っただけで、エディタの書き味やAIエージェントの実力は評価していない。そこは実際に自分のワークフローで数日使ってみるほかない領域だと考えている。