← 資料一覧

Terax(crynta/terax-ai)

Tauri 2 + React 19 の AI ネイティブターミナル(ADE)。WebView は invoke 越しにのみ OS に触れる。

1 — 概要

Terax は、マルチタブ端末・CodeMirror 6 エディタ・ファイルツリー・ローカル dev サーバ向けプレビュー・BYOK の AI サイドパネルを単一ウィンドウにまとめたデスクトップアプリ。バックエンドは Rust(portable-pty)で PTY を保持し、フロントは React 19 + TypeScript。テレメトリなし・API キーは OS キーチェーン保存が README の約束として明記されている。

Tauri 2デスクトップシェル
React 19UI レイヤ
BYOK複数クラウド + LM Studio
~7 MBREADME 記載の目安

プロジェクトルートの TERAX.md は、エージェント向けの長期メモと同時に「変更前に読むべきアーキテクチャ文書」として運用されている。

2 — スタックと配布

README の Tech stack 一行に基づく。Vercel AI SDK v6・Tailwind v4・shadcn/ui・Zustand・xterm.js(WebGL)などが列挙されている。

領域主な依存メモ
シェルTauri 2、Rust stableバンドル ID は app.crynta.terax(TERAX.md)
端末xterm.js、WebGL、portable-ptyバックグラウンドでタブ間ストリーミング継続
編集CodeMirror 6Vim、複数テーマ、インライン補完と AI diff
AI@ai-sdk/* 系OpenAI / Anthropic / Google / Groq / xAI / Cerebras / 互換エンドポイント
パッケージpnpmNode 20+ 前提(README)
Windows: コード署名がない間は SmartScreen が警告を出す。README は「More info → Run anyway」と案内している。
Linux: Arch は AUR の terax-bin。AppImage は FUSE 要件や Wayland 時の WEBKIT_DISABLE_DMABUF_RENDERER=1 のヒントが README にある。
3 — OS 境界と Rust

Rust 側(src-tauri/)がファイルシステム・プロセス・シェル・シークレットを所有し、WebView からは Tauri の invoke() で登録コマンドにだけ届く。TERAX.md が列挙する代表コマンドは次のとおり。

pty::* → fs::tree / file / mutate → fs::search / grep → shell_run_command → shell_session_* / shell_bg_* → secrets::*
  • PTY: 対話シェルは長寿命セッション。出力は Tauri の Channel でストリーム。
  • ワンショットシェル: shell_run_command は AI ツール用。対話 PTY とは別経路(Unix は $SHELL -lc、Windows は PowerShell 経由)。
  • シークレット: keyring クレート。サービス名は terax-ai。Linux はファイルフォールバックが cfg 付きで分岐。
  • Windows ConPTY: 並行スポーンでパイプが詰まる問題への対策として SPAWN_LOCK。子プロセス木の孤児化防止に Job Object(TERAX.md の Known gotchas と関連)。

シェル統合(OSC)

Unix は ZDOTDIR や --rcfile で注入スクリプトを載せ、OSC 7(cwd)と OSC 133(プロンプト境界・終了コード)をホストへ送る。Windows はユーザの $PROFILE の後に prompt をラップして同系のマーカを出す。

4 — フロント構成

単一ウィンドウの React アプリ。タブはタグ付きユニオン(terminal / editor / preview / ai-diff など)で、切り替え時にアンマウントせず CSS で非表示にし、PTY と dev サーバのストリームを維持する設計(TERAX.md)。

モジュール責務の要約
terminal/xterm セッション、OSC ハンドラ、テーマ
editor/CodeMirror スタック、言語モード、Vim
explorer/ツリー、ファジー検索、コンテキストアクション
tabs/useTabs と cwd 継承(useWorkspaceCwd)
ai/エージェント、ツール、セッション、コンポーザー UI
settings/tauri-plugin-store ベースの設定と別ウィンドウ
パス表現: フロントの正規形はスラッシュ。OSC 7 やエクスプローラ由来のパスは .split(/[\\/]/) で正規化し、Windows のドライブ表記も境界で揃える(TERAX.md の UI 規約)。
5 — AI サブシステム

プロバイダ一覧は src/modules/ai/config.ts の PROVIDERS。メインエージェントは Experimental_Agent とステップ上限、サブエージェントは専用ツール集合で起動。

  • セッション: tauri-plugin-store に会話とアクティブ ID を永続化。API キー切替時はメモリ上の Chat マップを破棄し、ディスク上のセッションは残す。
  • ツール承認: ファイル書き換え・シェル実行などは needsApproval: true。AI SDK の承認応答フローと連動。
  • ライブコンテキスト: アクティブ端末の cwd とバッファ末尾(約 300 行)を遅延取得するブリッジを App.tsx から注入。
  • セキュリティ: lib/security.ts がパス拒否リストを持ち、読み書き双方に適用。バイパスしないこと。

設定フロー(README 要約)

  1. Settings → AI を開く。
  2. プロバイダを選び API キーを入力(ローカルは LM Studio エンドポイント)。
  3. キーは secrets_* 経由でキーチェーンへ。ディスクや localStorage には置かない。
6 — ビルドと出典

README の手順をそのまま掲載する。

pnpm install
pnpm tauri dev
pnpm tauri build

検証コマンド(README):

pnpm exec tsc --noEmit
cd src-tauri && cargo clippy

一次情報

  • GitHub: crynta/terax-ai — 本体リポジトリ
  • リポジトリ内の README.md — 機能一覧・スクリーンショット・プラットフォーム注意
  • リポジトリ内の TERAX.md — アーキテクチャ詳細と運用上の制約