凪 - LLM用のwebui (tauriでのstudio版もある)
- Vue 85.2%
- JavaScript 8.8%
- Rust 5.6%
- HTML 0.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
Rebrand onair to nagi across the app: - Product name, window title, package and crate names - Tauri identifier life.c30.nagi.studio - Dev proxy path /nagi-api and X-Nagi-* headers - Storage dir .nagi-data/nagi.sqlite - localStorage nagi-* keys and IndexedDB nagi-character-memory - Theme id nagi with 凪 as the assistant display name Legacy data migrates automatically: the dev server renames .onair-data, and the client moves onair-* localStorage keys and the old IndexedDB memories on first load. VITE_ONAIR_PROXY_TARGET still works as a fallback. Also includes previously uncommitted agent work: native web_search and web_fetch commands, project directory picker, diff and file event rendering, and agent plan UI. |
||
| src | ||
| src-tauri | ||
| .gitignore | ||
| index.html | ||
| LICENSE | ||
| package.json | ||
| pnpm-lock.yaml | ||
| README.md | ||
| vite.config.js | ||
Nagi Studio(凪)
Nagi Studioは、OpenAI互換のChat Completions APIとMCPサーバーを利用できる、Vue 3 + Tauri 2製のチャットクライアントです。
Webブラウザでも利用できますが、デスクトップ版ではAgentモード、ローカルファイル操作、ターミナル実行、ネイティブ確認ダイアログを利用できます。
Features
- Chat / Characters / Agentの独立したモード
- OpenAI互換APIのストリーミング応答
- Markdown、コードハイライト、コードコピー、表、チェックリスト、選択肢UI
- MCPのStreamable HTTP / SSE接続とツール呼び出し
- 推論サマリー、ツール実行履歴、画像レスポンスの表示
- 複数チャット、タイトル自動生成、スクロール位置保存
- ファイル・画像添付とクリップボード貼り付け
- 複数テーマとレスポンシブUI
- SQLiteによる会話同期ストレージ
- 同期トークンを使った複数端末間の会話同期
- Charactersモードのユーザー設定、関係性、Embedding長期記憶
- 翻訳専用モード
Desktop Agent
Tauri版のAgentモードでは、MCPツールに加えて以下のネイティブツールを利用できます。
- テキストファイルの読み込み・書き込み
- ディレクトリ一覧の取得
- ローカルターミナルコマンドの実行
- コマンド、終了コード、標準出力、標準エラーのログ表示
- タスクプランと進捗の表示
- 会話ごとのプロジェクトディレクトリ
- 設定可能なツール連続呼び出し上限(最大50ラウンド)
- ネイティブ確認ダイアログ
AgentのTrust modeはSettings → Generationから変更できます。
| Mode | Behavior |
|---|---|
| コード演習のみ自動許可 | コード関連のファイル操作と安全な確認コマンドを自動許可し、それ以外は確認します。 |
| 全部任せる | ネイティブ操作を確認なしで実行します。強い権限なので注意してください。 |
| 毎回確認する | ネイティブ操作ごとに確認ダイアログを表示します。 |
Requirements
- Node.js 24以降
- pnpm 11以降
- Rust stable
- Tauri 2のプラットフォーム依存パッケージ
Fedoraでは以下をインストールします。
sudo dnf install -y \
webkit2gtk4.1-devel \
librsvg2-devel \
libsoup3-devel \
javascriptcoregtk4.1-devel
Setup
pnpm install
Web development
pnpm dev
ブラウザで http://localhost:5173 を開きます。
Desktop development
pnpm tauri dev
Build
pnpm run build
pnpm tauri build
Configuration
Settingsから以下を設定できます。
- OpenAI互換APIのEndpoint URL
- API keyとモデル
- 会話同期トークン
- Temperature、システムプロンプト、タイトル自動生成
- Embeddingモデルと長期記憶
- AgentのTrust mode
- テーマ
- MCPサーバー
開発時のAPIリクエストは、Viteの /nagi-api プロキシを経由します。既定の接続先は https://onari.c30.life です。変更する場合は環境変数を利用できます。
VITE_NAGI_PROXY_TARGET=http://localhost:6789 pnpm dev
Conversation storage
- ブラウザ内では
localStorageをオフライン用のキャッシュとして使用します。 - 開発サーバーでは
.nagi-data/nagi.sqliteへ会話を保存します。 - 同期トークンはブラウザの
localStorageに保存され、サーバーではSHA-256ハッシュをキーとして会話を分離します。 .nagi-data/、SQLiteファイル、APIキー、環境ファイルはGit管理対象外です。
現状のSQLite同期APIはVite開発サーバーのMiddlewareとして実装されています。本番利用では、同等のAPIを永続稼働するバックエンドへ移してください。
Security
Agentモードのファイル操作とターミナル実行は、ユーザー権限でローカル環境へアクセスします。
- 通常は「コード演習のみ自動許可」または「毎回確認する」を推奨します。
- 「全部任せる」は信頼できるモデル・MCPサーバー・プロンプトでのみ利用してください。
- API key、同期トークン、個人データをリポジトリへコミットしないでください。
Main structure
src/ Vue UI
src/components/ Image viewer components
src/composables/ Vue composables
src-tauri/ Tauri 2 / Rust native layer
vite.config.js Vite proxy and development SQLite API