orb MochiBullet
winget install --id=MochiBullet.orb -e orb is a Rust/Tauri vibe-coding terminal with Warp-style command blocks, a command palette, and an integrated MCP/usage sidebar.
winget install --id=MochiBullet.orb -e orb is a Rust/Tauri vibe-coding terminal with Warp-style command blocks, a command palette, and an integrated MCP/usage sidebar.
Rust製・バイブコーディング専用ターミナルエミュレータ。 軽量 × リッチ(ネオン/サイバー)を狙う、(MochiBullet)専用ターミナル。
> 16GB RAM・4コアの非力めノートでもヌルヌル最強に戦える軽さを第一制約に設計。 > Claude Code との並走(バイブコーディング)を前提にした、AI常駐パネル・Warp風コマンドブロック・案件ランチャーを持つ。
> Windows 向けにビルド済み配布物(インストーラ/ポータブル/winget)を提供。実行には PowerShell 7 (pwsh) と WebView2 ランタイム(Win10/11 は標準)が必要です。
>
> macOS は現時点でビルド済み配布物なし。 クロスプラットフォーム対応(#17)は進行中で、シェル統合・ファイルオープン等のコードは Unix/macOS 対応済みですが、Mac 向けの .app/.dmg はまだリリースしていません。当面は下記「4. ソースからビルド」でお試しください(既定シェルは bash 決め打ち・zsh は未対応)。
Releases から取得:
orb_*_x64-setup.exe(NSIS)または *.msiorb-x86_64-pc-windows-msvc.exe(インストール不要・単体起動)cargo binstall orb
Releases のポータブル exe を ~/.cargo/bin へ展開します(ビルド不要)。
※ GUI(フロント/WebView)を伴うため cargo install orb には非対応です。
winget install MochiBullet.orb
(winget-pkgs への登録後に利用可能)
git clone https://github.com/MochiBullet/orb
cd orb
pnpm install
pnpm tauri build
# Windows: インストーラ → src-tauri/target/release/bundle/、ポータブル exe → src-tauri/target/release/orb.exe
# macOS: .app → src-tauri/target/release/bundle/macos/
macOS では事前に Xcode Command Line Tools(xcode-select --install)と Rust(rustup)が必要です。動作確認は pnpm tauri dev から。
詳しい前提・開発手順は 開発 を参照。
| 層 | 採用 |
|---|---|
| アプリ基盤 | Tauri 2.x(Rustコア × WebView2 UI、Windows標準WebViewで同梱不要・軽量) |
| PTY | portable-pty(Windows は内部 ConPTY) |
| Async | tokio(Tauri command 用。PTY reader は専用 std::thread) |
| IPC | Tauri 2 Channel API(PTY出力は生バイトフレームで送る) |
| UI描画 | @xterm/xterm 6.x + addon-webgl / addon-fit / addon-unicode11 / addon-clipboard / addon-search |
| フロント | Svelte 5 (runes) + Vite + TypeScript(SvelteKitは使わない=単一ウィンドウSPAに最小ランタイム) |
| スタイル | プレーンCSS + CSS変数(Tailwind不使用=依存ゼロ) |
| 既定シェル | pwsh.exe 7+(UTF-8、ユーザーの既存 profile.ps1 をそのまま起動) |
| HTTP | reqwest(サイドバーのトークン使用量取得のみ) |
| テスト | vitest(レイアウトツリーのユニットテスト) |
リリースビルドは lto + codegen-units=1 + panic=abort + strip + opt-level="s" でバイナリ・常駐RAMを最小化。
| 指標 | 値 |
|---|---|
バイナリ(release orb.exe) | 5.37 MB(debug 21.5 MB の約 1/4。WebView2 は Windows 標準で同梱不要) |
| 常駐 RAM | 約 34 MB(複数ペイン / タブ操作でも安定) |
> 同梱 Chromium を持つ Electron 系(exe 100MB超・RAM 数百MB)と比べ、exe・常駐とも桁違いに軽い。起動時間・大量出力スループットの実測は今後追加予定。
copy / →AI / 失敗は 🔧 fix)。プロンプト間ジャンプ(Ctrl+↑/↓)。alt-buffer(vim/lazygit/btop/fzf 等)中はブロック処理を完全停止。~/.config/orb/blocks/YYYY-MM-DD.jsonl)へ Rust から追記。Ctrl+Shift+H でログのみからブロック列を再構築する履歴オーバーレイ(検索・日付ナビ・copy/→AI)。OSC 52;c;? に空応答=プロセスによるクリップボード吸い出しを防ぐ)。~/.config/orb/projects.toml の案件を Ctrl+P パレットから起動。dev3 レイアウト=左 AI / 右上 dev / 右下 lg(lazygit)を正しい cwd で spawn。AI 起動プリセット(継続 --continue / 新規 / 危険モード --dangerously-skip-permissions、Tab で巡回)。案件は現タブを潰さず案件名の新タブで開く。claude --continue を violet 差し色の専用ペインで常駐。行き: 別ペインの選択範囲(Ctrl+L)やコマンドブロック(→AI / 失敗は 🔧fix)を cwd/exit/コマンド/出力の構造化コンテキストとして AI ペインの入力欄へ(bracketed paste=複数行でも1回の貼り付け・送信は人が Enter)。帰り: AI の提案テキストを選択して Ctrl+Shift+L でシェルのプロンプトへ再入力(実行は人が Enter=プロンプトがレビューの場)。ブロック履歴からは失敗の一括→AI(直近最大10件のダイジェスト)も可能。config.toml に保存。フォントサイズは全ペインに即反映。背景画像は端末背後に透過表示(暗幕は画像だけに効く)。decorations:false、翡翠グラデ、ランチャーにオーロラ演出(transform 駆動・reduced-motion 尊重)。| キー | 動作 |
|---|---|
Ctrl+Shift+D / Ctrl+Shift+E | 横分割 / 縦分割 |
Ctrl+Shift+W | ペインを閉じる |
Ctrl+Tab / Ctrl+Shift+Tab | ペインのフォーカス巡回 |
Ctrl+T / Ctrl+W | 新規タブ / タブを閉じる |
Ctrl+P | 案件ランチャー |
Ctrl+, | 設定 |
Ctrl+F | スクロールバック検索 |
Ctrl+Shift+H | ブロック履歴(耐久ログから再構築) |
Ctrl+ホイール / Ctrl+= / Ctrl+- / Ctrl+0 | フォント拡大 / 縮小 / リセット |
Ctrl+↑ / Ctrl+↓ | 直前 / 直後のプロンプトへジャンプ |
Ctrl+L | 選択範囲を AI ペインへ送る |
Ctrl+Shift+L | AI ペインの選択(提案コマンド等)をシェルのプロンプトへ再入力(実行は Enter で) |
Ctrl+C / Ctrl+V | コピー(選択時)/ ペースト |
> 注: タッチパッドのピンチは WebView2 がネイティブ処理し JS に届かないため、font zoom は Ctrl+ホイール / Ctrl+± で行う(#10)。
~/.config/orb/)| ファイル | 中身 |
|---|---|
config.toml | font_size / font_family / scrollback / accent / ligatures / bg_image / bg_dim(無ければ既定を書き出す。Ctrl+, でも編集可) |
blocks/YYYY-MM-DD.jsonl | ブロック耐久ログ(append-only。Ctrl+Shift+H の履歴が読む) |
projects.toml | 案件ランチャーの [[project]] 群(無ければ既定10案件を書き出す) |
shell-integration.ps1(OSC 133/633 注入)はバイナリに埋め込み、起動時に %TEMP%\orb\ へ一度だけ展開される。
PaneId → PTYハンドル のフラットな HashMap だけ持つ=激薄。前提:Rust stable / Node 20+ / pnpm / pwsh 7+ / WebView2(Win10/11標準)。
pnpm install
pnpm tauri dev # 開発(ホットリロード)
pnpm test # レイアウトツリーのユニットテスト(vitest)
pnpm check # svelte-check(型)
pnpm tauri build # リリースビルド
src/ フロント(Svelte 5 + Vite)
App.svelte ルート(TitleBar / TabBar / Workspace / Sidebar)
main.ts mount エントリ(config を先読み)
core/ config / pty / usage(invoke 薄ラッパ)
terminal/ Terminal.svelte + blocks/osc.ts(OSC状態機械+decoration)
layout/ tree.ts(分割ツリー)/ Workspace.svelte / tabs.ts / launch.ts / Launcher.svelte
chrome/ TitleBar / TabBar / Sidebar / Settings
store/ appStore(cwd / layout / focus / aiPane)
styles/ テーマトークン / ネオン演出 / ベース
src-tauri/ Rustコア
src/ lib.rs / commands.rs / pty.rs / shell.rs / config.rs / usage.rs / state.rs / error.rs
resources/ shell-integration.ps1(OSC133/633注入)
tauri.conf.json decorations:false 等
MVP(P0〜P3)完成後、拡張を GitHub Issue で管理(Termux 等からの引き継ぎ担保)。
実装済み: コマンドブロック+ツールバー / ペイン分割(cwd継承)/ タブ / 案件ランチャー / AIペイン / サイドバー(トークン)/ 設定GUI / フォントズーム / 検索 / aurora演出 / レイアウトツリーのユニットテスト。
継続: クロスプラットフォーム(#17)/ サイドバーのモデル・MCP連携(#18)/ 描画スループット実測(#16)/ ロゴ(#11)。
~/.config/starship.toml の [palettes.mochibullet](teal #2dd4bf / violet #a78bfa / 黒 #000 …)corporate-website-template-cloudflare の globals.css(.dream-glow 等、transform/opacity駆動で軽量)~/.config/claude/tools/gen-warp-launch-configs.ps1~/.config/powershell/profile.ps1(PSReadLine / zoxide / fzf / starship / eza / bat / lazygit)