>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
TypeScript

nodetermは乱雑なターミナルタブを無限キャンバスに変える

Claude CodeやCodexのような自律型AIエージェントを通常のサービスと並行して実行しようとする開発者は 누구나、すぐに同じ問題に遭遇します。iTermやWarpで dozen 個のタブが開くと、収拾がつかない状態になります。テストがどこで失敗したのか、どのブランチがバックグラウンドで編集されているのか、どのターミナルがコマンド確認を待っているのかがわからなくなります。

nodeterm interface

nodetermプロジェクトは、ワークスペースに対する異なるアプローチを提供します。線形タブやスプリットではなく、無限キャンバスを使用し、各ターミナルを独立した移動可能なノードとして配置します。

キャンバスの中身

核となるアイデアはシンプルです:ワークフローに空間的な方向性をもたらします。バックエンド、フロントエンド、バックグラウンドエージェントを1つのクラスターにグループ化し、その横にタスクリマインダー付きのメモを貼り付けることができます。

Canvas with nodes

ここでのノードは単なるターミナルではありません。キャンバス上には以下を配置できます:

  • xtermとtmuxに基づくフル機能のターミナルセッション
  • AIエージェントカード(Claude Code、Copilot、Gemini、Grok)
  • クイックセーブ支持的Monacoコードエディタ
  • Git差分ビューアとWebページプレビューウィンドウ
  • エージェントにリンクしてコンテキスト共有できるテキスト付箋

ウィンドウを閉じたりシステムを再起動したりしても、セッションは失われません。内部では、アプリケーションはリアルタイムのtmuxセッションを維持しています。macOSでは、クライアントに組み込みのtmuxバイナリが付属しているため、別途インストールする必要はありません。

出力解析なしのエージェント監視

エージェントがコードを書いたりテストを実行したりするために長い時間を費やしている場合、そのステータスを確認し忘れるのは簡単です。nodetermはテキスト出力を解析するのではなく、システムフックを通じて状態を追跡します。

Agent statuses

プロセスがユーザーの確認を必要とする場合、カードがNEEDS YOUバッジで点灯し、ネイティブ通知がポップアップ表示されます。MacBookでは、アクティブエージェントのステータスがノッチエリアにも表示されます。

興味深い詳細として、アプリ内のエージェントは組み込みCLIを通じてキャンバスと対話できます。たとえば、あるエージェントがテストを実行したり、別のエージェントのビルド成果物をチェックしたりするための隣接ノードを作成できます。

ライブセッションからのKanbanボード

Cmd+Shift+Bを押すと、キャンバスがKanbanボードモードに切り替わります。ボード上の各カードは、動作中のターミナルセッションのままです。

Kanban board

カードを「進行中」列から「レビュー」にドラッグし、モーダルウィンドウで開いて、コードに関するエージェントの質問に直接答えることができます。GitHub Issuesとの双方向同期もサポートされており、タスクがボードにプルされ、移動時にステータスが変更されます。

スマホからのアクセスとサーバーモード

このアプリはデスクトップのElectronクライアントに限定されません。アーキテクチャは独立したコアとトランスポートに分離されているため、nodetermは3つの形式で動作します。

Mobile connection

  1. macOSおよびLinux用のデスクトップアプリケーション
  2. サーバーエディション。同じキャンバスがリモートサーバーでグラフィカルシェルなしで実行され、WebSocket経由で通常のブラウザで開きます。
  3. iOS用モバイルクライアント。モニター画面でQRコードをスキャンすると、セッションがエンドツーエンド暗号化で電話に転送されます。コーヒーを淹れに行っても、モバイルでエージェントのプロンプトに答えることができます。

シェルへの直接音声入力

nodetermにはローカルなWhisperモデルが組み込まれています。Cmd+Alt(LinuxではCtrl+Alt)を押しながら長い指示を音声入力すると、オーディオはCPU上で直接処理されます。

Voice dictation

テキストは自動的にターミナルに送信されません。まず認識結果が表示され、必要に応じて手動で編集し、その後初めて送信ボタンを押します。オーディオデータはネットワーク経由で送信されません。

アーキテクチャとスタック

クライアントはTypeScriptで記述され、ElectronとキャンバスエンジンとしてReact Flowライブラリを使用しています。

開発者はPTY、git、エージェントオペレーションをCorePlatformインターフェースに抽出しました。ElectronプロセスとサーバーNodeプロセスは同じインターフェースを実装しています。これにより、Webバージョンは切り詰められた移植版ではなく、literally同じレンダラーインターフェースを使用します。

このプロジェクトはBusiness Source License 1.1(BUSL-1.1)の下で配布されています。ソースコードは個人使用と本番使用に開放されていますが、nodetermに基づく競合する有料サービスの作成を禁止しています。各バージョンのリリースから4年後、コードは自動的に純粋なMITに切り替えられます。

試す方法

macOSでは、Homebrew経由でアプリをインストールするのが最も簡単です:

brew tap nodeterm/tap
brew trust nodeterm/tap
brew install --cask nodeterm

Linuxでは、リポジトリのリリースページにAppImageと.debパッケージが利用可能です。

リモートマシンでヘッドレスサーバーを実行したい場合は、Node.js 22とtmuxのみが必要です:

git clone https://github.com/eneskirca/nodeterm.git
cd nodeterm
npm install
npm run server:dev

起動後、Webインターフェースはhttp://127.0.0.1:8443で待機しています。

nodetermが役立つ人

このツールは主に、何十もの並行タスクを開いている、git worktreesを扱っている、またはコマンドラインAIエージェントにコードのチャンクを активно委任している開発者を対象としています。画面半分を占めるクラシックなミニマリストターミナルの方が心地よいなら、空間的なキャンバスは過剰に感じるかもしれません。しかし、延々と続くタブやtmuxウィンドウの中で迷子になっていることに厌倦しているなら、nodetermのビジュアルアプローチがあなたの心に秩序をもたらすかもしれません。

関連プロジェクト