2026年9月7日 月曜日
AI時短ラボ
検証· 約15

ターミナルの中にVS Codeを持ち込む「terminal-code(tode)」

terminal-codeは、code-server(ブラウザ上で動くVS Code)とterminal-browser(ターミナル上で動くブラウザ)を組み合わせ、ターミナルの中でVS Codeそのものを操作できるようにするOSSツール。SSH越しの利用やdiff比較など、CLIコマンド`tode`の実際のオプションを公式サイトから確認した。

ターミナルの中にVS Codeを持ち込む「terminal-code(tode)」
執筆・編集:
目次

3行まとめ

  1. terminal-codeは、code-server(ブラウザ上のVS Code)とterminal-browser(ターミナル上のブラウザ)を組み合わせ、ターミナルを離れずにVS Codeの画面をそのまま操作できるようにするツール。
  2. コマンド名はtode。SSH越しの起動、ファイルの特定行へのジャンプ、2ファイルのdiff比較、分割ペイン表示、ソースコントロールパネルの直接オープンなどのオプションが公式サイトとGitHub READMEに列挙されている。
  3. 開発元はZenbu Labs, Inc.。GitHub(zenbu-labs/terminal-code)でMITライセンス(著作権表記あり)のもとソース公開されていることを、LICENSEファイルとGitHub REST APIの両方で確認した。リポジトリは2026年8月8日作成、本記事執筆時点でStar数1,791。

「VS Codeをブラウザで動かす」の、さらに一段外側

terminal-codeが組み合わせているのは2つの既存プロジェクトだ。1つはcode-server——Microsoftの VS Codeをブラウザ上で動かす仕組み。もう1つはterminal-browser——ブラウザをターミナルの中で動かす仕組み。この2つを重ねることで、ターミナルの画面の中にVS Codeそのものを表示し、操作できるようにする、と公式サイトは説明している。

コマンドの一覧──GitHub READMEには公式サイトより多いオプションが載っていた

公式サイトに掲載されているtodeコマンドのオプションに加えて、GitHubリポジトリのREADMEを直接取得すると、サイトのトップページには出ていなかったオプションがさらに見つかった。

オプション 内容
-g, --goto <f:l:c> ファイルの指定行・列にジャンプして開く
-a, --add <folder> アクティブなワークスペースにフォルダを追加
-n, --new-window ファイルでも新しいペインを開く
-w, --wait ファイルが閉じられるまで待機
-d, --diff <a> <b> 2ファイルを比較表示
-r, --reuse-window 新しいペインではなく今のウィンドウでフォルダを開く
--install-extension 拡張機能をIDまたはvsixパスでインストール
--uninstall-extension 拡張機能を削除
--list-extensions インストール済み拡張機能を一覧表示
--split <direction> 新しいペインで開く(right/left/down/up)
--size <fraction> 新しい分割ペインが占める割合(0.2〜0.95)
--timing 起動の各段階にかかった時間を計測・レポート(コマンドとしても実行可)
--review ソースコントロールパネルを開いた状態で起動
--ssh <user@host> SSHサーバー上でterminal-codeを実行
--shortcut-setup terminal-codeと現在のターミナルのショートカット競合を解消
--import [editor] vscode互換エディタから設定・キーバインド・スニペット・拡張機能をインポート
--theme [file] エディタテーマを設定
--serve [path] code serverを起動しそのURLを表示
--skill terminal-code自体の改造を助けるエージェントスキル
--upgrade [--check] 最新版へアップグレード
--shutdown terminal-codeの活動をすべて停止
--uninstall [--yes] このマシンからterminal-codeのデータを全削除

出典: github.com/zenbu-labs/terminal-code README(tode --help相当の全文)

インストールはmacOS・Linux向けに1行のコマンドが案内されている。

curl -fsSL https://tode.sh/install | bash

数字で見る勢い──リポジトリ作成から3週間で1,791スター

GitHub REST APIで直接取得したリポジトリメタデータによると、zenbu-labs/terminal-codeが作成されたのは2026年8月8日で、直近のpushは同年8月28日。本記事執筆時点(2026年8月31日)で、作成から3週間あまりでStar数1,791・Fork数74・Open Issues 21に達しており、主要言語はTypeScriptと表示されている。licenseフィールドも今回はMIT Licenseとして正しく認識されていた(SPDX ID: MIT)。

土台となっている2つのプロジェクトも同様にAPIで確認した。zenbu-labs/terminal-browserは2026年7月6日作成で、terminal-codeより1ヶ月あまり先行しており、Star数2,450・Fork数118、主要言語はRust。ライセンスはこちらもMIT。さらにその下で動くcoder/code-serverは2019年2月27日作成のプロジェクトで、Star数79,134・Fork数6,837という、既に成熟した大規模OSSだ。つまりterminal-codeは、10年近い実績を持つcode-serverと、今年7月に生まれたばかりのterminal-browserという、成熟度の異なる2つのプロジェクトを組み合わせた、比較的新しいレイヤーだと分かる。

terminal-browserの中身──kittyグラフィックスプロトコルとElectronのオフスクリーンレンダリング

terminal-codeがVS Codeの画面をターミナルの中に描画できているのは、下敷きになっているterminal-browser自身のREADME「How does it work?」節によれば、次の仕組みによるという。

  • ghostty・kitty・cmux・VS Code内蔵ターミナルなど、kittyグラフィックスプロトコルに対応したターミナルは、ターミナル上で動くプログラムがピクセルを直接描画できる。terminal-browserはこれを使い、Chromiumが生成したピクセルをターミナルに表示する。
  • ピクセルの取得にはElectronのオフスクリーンレンダリングAPIを使い、GPUからChromiumが生成したピクセルを直接読み取ることで、フレーム落ちのない滑らかな描画を実現しているという。
  • ユーザー入力(マウスクリック・位置・キーボード)はターミナルから受け取ってChromiumに合成イベントとして送る一方、ターミナル経由では取得できない入力(トラックパッドのスムーズスクロールなど)は、バックグラウンドで動くSwift製アプリがOSから直接拾っているとされる。
  • 外側のUI(タブやツールバーなど)はRust製のグラフィックスエンジンの上に構築され、UI自体はReactのカスタムレンダラーで実装されており、TypeScriptでUIを書ける設計になっている。ブラウザの外側UIとページ内容は同じRustエンジン内の共有キャンバスに描画されるため、UIをページの上に重ねて表示できるという。

terminal-browser README はさらに、terminal-browser単体のCLIとしてopen <url>(URLを開く)、--split right(分割ペインで開く)、open --ssh <user@host> <url>(リモート越しの全ネットワークリクエストをSSH経由に)、ls(開いているブラウザの一覧)、action(エージェントからterminal-browserを操作するためのCLI)を持つことも紹介しており、「App Mode」(--app-mode)というオプションを使うと、ツールバーやタブ・右クリックメニューなどのブラウザUIを消して、ターミナル内でブラウザ技術を使ったアプリそのものを作れる設計になっている。terminal-browser自身のREADMEは、この「App Mode」の実運用例として、terminal-codeのリポジトリを名指しでリンクしている。

SSH越しの動作原理──バックエンドだけをリモートに置く

READMEの「SSH」セクションは、なぜtode --sshが推奨されるのかを技術的に説明している。SSH先のマシンで直接todeを実行することもできるが、その場合はVS Codeが描画する全フレームをネットワーク越しに送り、ユーザー入力もVS Codeが反応する前にすべてネットワーク越しに送る必要があり、kittyのグラフィックスプロトコルが持つ最適化の一部も失われるという。一方tode --sshは、VS Codeのバックエンドだけをリモートマシン上で動かし、フロントエンドはローカルデバイス上で動作させる。これによりユーザー操作への反応はほぼ即座になり、ネットワークリクエストはSSH接続経由でプロキシされる、という仕組みだ。

Windows対応は「非公式」──kittyグラフィックスプロトコル依存が理由

Windows向けの導線について、公式サイトのトップページには具体的な記述がなかったが、GitHub READMEの「Windows」セクションには理由と回避策が明記されていた。terminal-codeはkittyのグラフィックスプロトコルという、Windows上の多くのターミナルがまだ対応していないモダンな機能に依存しており、公式のWindowsビルドは存在しない。対応ターミナルを持ち込む試み(ibuildthecloud/winterm-ghosttyというプロジェクトへのリンク)が紹介されているが、READMEは「自己責任で試してほしい」という書き方をしている。互換ターミナルが揃った場合でも、WSL(Windows Subsystem for Linux)内にLinux版のterminal-codeをインストールするのがWindows上で動かす現実的な方法だとし、より公式な対応を望むならissueを立ててほしいと呼びかけている。

インストールもSSH越しの利用も、自分では試していない

本記事はterminal-code公式サイト(terminal-code.com)、GitHubリポジトリ(zenbu-labs/terminal-code、zenbu-labs/terminal-browser)のREADME本文・LICENSEファイル・リポジトリメタデータ(GitHub REST API)を2026年8月31日にcurlで直接取得して書いている。CLIオプションの全量やSSHの動作原理、Windows非対応の理由、terminal-browserが「How does it work?」節で自ら説明しているkittyグラフィックスプロトコル・Electronオフスクリーンレンダリングの仕組みはREADMEの記述で裏付けが取れたが、これはあくまでプロジェクト側の説明文であり、実際のソースコード(terminal-browserのRustエンジンやElectron連携部分の実装、code-serverとの間の具体的なAPI呼び出し)までは読んでいない。筆者の手元でterminal-codeを実際にインストールし、SSH越しの利用やdiff比較、拡張機能のインポートを試したわけでもない。運営元Zenbu Labs, Inc.についても、LICENSEファイルの著作権表記とterminal-code.comのフッター表記(© 2026 Zenbu Labs)以上の会社情報(所在地・設立時期など)は確認できなかった。

ターミナルの中でVS Codeを開くという組み合わせは未紹介

Zenn・Qiitaともに固有名詞としての言及はなかった(Qiitaの1件は無関係な雑記)。code-serverを使ったリモート開発環境の構築記事は日本語圏にもあるが、「ターミナルの中でVS Codeを開く」という組み合わせ方はまだ紹介されていない。

関連記事

シェア: ポスト はてブ

出典・参照資料

AIニュースの解説を動画でも

YouTubeでは注目ニュースの背景を解説し、Xでは新着記事をお知らせしています。

コメント

まだコメントはありません。最初のコメントを書いてみませんか?

AIについて聞きたいことはありますか?

質問箱で無料で受け付けています。回答は公開され、他の方の参考にもなります。

質問箱を見る →

新しい記事をメールで受け取る

AIの新しい発表を、出典付きで整理して届けます。

関連記事