NewTool開発者ツールボックス
カーネル優先の開発者ツールボックス。下層は Rust で書かれたアルゴリズムカーネル(CLI newtool)、上層は Tauri 2 デスクトップアプリの React シェル。ひとつのカーネルが 3 つの消費者にサービスを提供します。AI(skill パッケージ / MCP)、人間(デスクトップアプリ)、ブラウザ(wasm)です。
01$ newtool list --json02{ "count": 3, "algorithms": ["base64", "jwt.decode", "uuid.v7"] }0304$ newtool run jwt.decode --params '{"token":"eyJhbGci..."}'05{ "ok": true, "data": { "header": { "alg": "HS256" } } }アルゴリズムは一度だけ書き、人と AI が同じ実装を使います。
設計のポイント
このツールがなぜこのように作られているのか、そしてそれが何をもたらしたのか。
アルゴリズムはすべて Rust で実装し、UI はシェルにすぎません。ツールロジックを UI 層で書き直すことはなく、Rust カーネルか React の表示層を通るため、端をまたぐ挙動の乖離が起きません。
skills スキルパッケージとして WorkBuddy / Codex / Claude Code へ配布。AI は人間が UI を開かなくても list / describe / run を直接実行します。
tool.toml が app / cli / web-wasm / web-server の4 つの有効な形態を宣言し、マニフェストが可視性の唯一の情報源です。
リモートは MCP で newtool-server に直接接続し、ローカルバイナリを導入せずとも全アルゴリズムを呼び出せます。
能力一覧
- Rust アルゴリズムカーネルが唯一の事実源:マニフェストが契約であり、build.rs がマニフェストとコードの乖離を検知
- 3 つの消費者がカーネルを共有:AI skill パッケージ、Tauri デスクトップアプリ、ブラウザ wasm バインディング
- リモート利用は MCP(streamable HTTP)経由でローカルバイナリ不要
- CLI 契約:stdin → stdout、統一エンベロープ、discover / describe 対応
- ツールの宣言的定義:tool.toml が引数と形態を記述し、ビルドスクリプトがページとレジストリを生成
- 自社開発エンジンを独立 crate 化:cipher / css / json / diff / yaml / id / text
設計指標
どれも実装における具体的な決定に対応しています。
すべて newtool-core にあり、UI 層はアルゴリズムロジックを書き直さない
AI(スキルパッケージ / MCP)、人(デスクトップアプリ)、ブラウザ(wasm)
tool.toml が app / cli / web-wasm / web-server を宣言
cipher / css / json / diff / yaml / id / text を独立 crate として
マニフェストとコードが不一致ならビルドが即失敗し、ランタイムに持ち込まれない
リモートは MCP で直接接続。ローカルバイナリなしで利用可能
プラットフォーム対応
カーネルとシェルを分離したことで、対応状況はプラットフォームごとに個別に進められます。
Tauri 2 デスクトップアプリ。React シェルがひとつのカーネルを共有
newtool コマンド。stdin → stdout の統一エンベロープ
カーネルを wasm にコンパイル。オフラインで動作し、インストール不要
streamable HTTP。リモートからローカルバイナリなしで接続
skills/newtool-toolbox を WorkBuddy / Codex / Claude Code へ配布
一般的なやり方との違い
違いは通常機能表ではなく、「境界をどこに引くか」にあります。
コマンド概要
完全なマニュアルは CLI リファレンスページにあります。すべてのコマンドは既定で構造化された結果を出力します。
newtool listすべてのアルゴリズムと有効な形態を一覧
--json--status rust|todonewtool describe <algo>アルゴリズムの引数定義・形態・例を表示
--jsonnewtool run <algo>アルゴリズムを実行。引数は stdin または --params で渡す
--params--stdin--jsonnewtool mcp serve全アルゴリズムを MCP streamable HTTP で公開
--port--host実際の出力
01$ newtool list --json02{ "count": 3, "algorithms": ["base64", "jwt.decode", "uuid.v7"] }0304$ newtool run jwt.decode --params '{"token":"eyJhbGci..."}'05{ "ok": true, "data": { "header": { "alg": "HS256" } } }モジュール
4 グループ・14 モジュール。すべてリポジトリの実際のディレクトリ構造に基づきます。
Rust · Tauri 2 · React · TypeScript · WASM · MCP · TOMLアルゴリズムを一度だけ書く場所。
crates/newtool-core純粋関数のアルゴリズムカーネル。IO がなく、CLI / デスクトップ / wasm から同時に呼び出せる
crates/newtool-corecrates/newtool-cliCLI 契約:stdin → stdout、統一エンベロープ、discover / describe 対応
crates/newtool-cliそれぞれ独立した crate として、単体でも再利用可能。
newtool-cipher暗号・復号とエンコード系のアルゴリズム
libs/newtool-ciphernewtool-cssCSS の処理とフォーマット
libs/newtool-cssnewtool-json / newtool-yamlJSON と YAML の解析・変換・検証
libs/newtool-{json,yaml}newtool-diffテキスト差分の比較
libs/newtool-diffnewtool-idUUID v7 などの ID を生成
libs/newtool-idnewtool-textテキスト処理と変換
libs/newtool-text可視性の唯一の情報源はマニフェストであり、コードコメントではありません。
manifests/algorithms.tomlアルゴリズムの唯一の事実源。status = rust でレジストリと強制同期
manifests/algorithms.tomlbuild.rs ガードビルド時にマニフェストとコードの乖離を検知し、乖離があれば失敗
crates/*/build.rstool.tomlツールの引数と4 つの有効な形態(app / cli / web-wasm / web-server)を宣言的に定義
tools/*/tool.toml同じカーネル、3 つの消費者。
Tauri 2 デスクトップシェルReact シェル + kernel-client の3アダプタ(tauri / http / wasm)
apps/desktopskills/newtool-toolboxWorkBuddy / Codex / Claude Code へ配布するスキルパッケージ。AI が直接呼び出す
skills/newtool-toolboxMCP serverstreamable HTTP。リモートからローカルバイナリなしで接続
newtool-server使い方
4 の典型的なシーン。それぞれ、そのまま実行できるステップに分解しています。
Web を開かず、拡張を入れずに、CLI やデスクトップアプリで直接計算します。
- 1newtool list で必要なアルゴリズムを探す
- 2newtool describe で引数の形を確認
- 3newtool run で実行し、JSON の結果をそのままパイプへ
- 4同じアルゴリズムをデスクトップアプリで GUI 操作も可能
AI は UI を開く必要がなく、list / describe / run の3ステップで完結します。
- 1スキルパッケージを導入するか、MCP エンドポイントに接続
- 2AI が list を呼び、利用可能なアルゴリズム一覧を取得
- 3describe で引数のスキーマを取得
- 4run で実行し、構造化された結果を読む
カーネルは wasm にコンパイル済み。オフラインでも動き、データはブラウザから出ません。
- 1Web 版を開くと、カーネルが wasm として読み込まれる
- 2入力データはローカルで処理される
- 3サーバーへの要求は一切なし
- 4機密テキストや鍵素材の取り扱いに適する
アルゴリズムは一度だけ書く。人と AI、どの端でも挙動は自然に一致します。
- 1アルゴリズムは newtool-core に実装し、マニフェストに登録
- 2build.rs がビルド時にマニフェストとコードの乖離を検知
- 3CLI / デスクトップ / wasm の3形態が同じ実装を再利用
- 4新しいアルゴリズムはマニフェストと実装を足すだけで、各端に自動反映
データ境界とセキュリティ
この種のツールの価値の大部分は「何をしないか」にあります。以下の各項目には実装箇所を明記しています。
デスクトップと wasm の形態ではデータが端末から出ず、機密テキストや鍵素材をアップロードする必要がありません。
newtool-core 純粋関数・IO なしアルゴリズムカーネルは純粋関数で、ネットワークもファイルアクセスも行わず、攻撃面が小さくなります。
crates/newtool-coreマニフェストと実装の乖離はビルド時に失敗し、「ドキュメントにはあるがコードにない」を防ぎます。
build.rs ガードCLI 出力は統一された構造を持ち、形式の揺れで AI が誤読することがありません。
stdin → stdoutデスクトップシェルは必要以上のシステム権限を要求せず、アルゴリズムはユーザーディレクトリに触れません。
Tauri 2 の権限設定discover / describe できるアルゴリズムのマニフェスト自体が監査の入口です。
manifests/algorithms.tomlリリースリズム
リリース済みは何を納品したか、開発中は何を進めているかを明記します。
v0.4リリース済みカーネル- newtool-core の純粋関数アルゴリズムカーネル
- newtool-cli の統一エンベロープ
- 7 個の自社開発エンジン crate
- マニフェスト駆動のレジストリ
v0.7リリース済みマルチプラットフォーム- Tauri 2 デスクトップアプリ
- kernel-client の3アダプタ(tauri / http / wasm)
- ブラウザ wasm 版
- build.rs の乖離ガード
v0.9開発中AI への配布- skills/newtool-toolbox スキルパッケージ
- MCP streamable HTTP エンドポイント
- アルゴリズムマニフェストの可視ブラウズ
- バッチとパイプラインモード
v1.0計画中エコシステム- アルゴリズムマーケットとサードパーティの貢献
- チーム共有のプリセットとスニペット
- IDE プラグイン
- アルゴリズムのバージョンと互換ポリシー
よくある質問
ひとつのカーネルが AI スキルパッケージ、デスクトップアプリ、ブラウザ wasm という3 つの消費者を同時に支える必要があるからです。Rust なら1 つの実装をネイティブと wasm の2 ターゲットにコンパイルでき、端をまたぐ挙動の乖離を防げます。これが「アルゴリズムは一度だけ書く」の前提です。
モジュール
4 グループ・14 のモジュール。パスはリポジトリのディレクトリに直接対応し、エンジニアが素早く位置を特定できます。
アルゴリズムを一度だけ書く場所。
crates/newtool-core純粋関数のアルゴリズムカーネル。IO がなく、CLI / デスクトップ / wasm から同時に呼び出せる
crates/newtool-corecrates/newtool-cliCLI 契約:stdin → stdout、統一エンベロープ、discover / describe 対応
crates/newtool-cliそれぞれ独立した crate として、単体でも再利用可能。
newtool-cipher暗号・復号とエンコード系のアルゴリズム
libs/newtool-ciphernewtool-cssCSS の処理とフォーマット
libs/newtool-cssnewtool-json / newtool-yamlJSON と YAML の解析・変換・検証
libs/newtool-{json,yaml}newtool-diffテキスト差分の比較
libs/newtool-diffnewtool-idUUID v7 などの ID を生成
libs/newtool-idnewtool-textテキスト処理と変換
libs/newtool-text可視性の唯一の情報源はマニフェストであり、コードコメントではありません。
manifests/algorithms.tomlアルゴリズムの唯一の事実源。status = rust でレジストリと強制同期
manifests/algorithms.tomlbuild.rs ガードビルド時にマニフェストとコードの乖離を検知し、乖離があれば失敗
crates/*/build.rstool.tomlツールの引数と4 つの有効な形態(app / cli / web-wasm / web-server)を宣言的に定義
tools/*/tool.toml同じカーネル、3 つの消費者。
Tauri 2 デスクトップシェルReact シェル + kernel-client の3アダプタ(tauri / http / wasm)
apps/desktopskills/newtool-toolboxWorkBuddy / Codex / Claude Code へ配布するスキルパッケージ。AI が直接呼び出す
skills/newtool-toolboxMCP serverstreamable HTTP。リモートからローカルバイナリなしで接続
newtool-server技術スタック
レイヤー設計
カーネルからシェルまで、各層の責務と実装技術。この種のツールの中核設計は「カーネルとシェルの分離」です。
crates/newtool-core は純粋関数で IO なし + crates/newtool-cli が newtool コマンドを提供
libs/newtool-{cipher,css,json,diff,yaml,id,text} を独立 crate として
manifests/algorithms.toml が唯一の事実源。status = rust でレジストリと強制同期
Tauri 2 + React シェル。kernel-client の3アダプタ(tauri / http / wasm)
skills/newtool-toolbox スキルパッケージ + MCP streamable HTTP
Rust · Tauri 2 · React · TypeScript · WASM
マルチプラットフォーム対応
カーネルは同じで、プラットフォームが違えばシェルが変わるだけです。対応状況はプラットフォームごとに個別に進められます。
Tauri 2 デスクトップアプリ。React シェルがひとつのカーネルを共有
newtool コマンド。stdin → stdout の統一エンベロープ
カーネルを wasm にコンパイル。オフラインで動作し、インストール不要
streamable HTTP。リモートからローカルバイナリなしで接続
skills/newtool-toolbox を WorkBuddy / Codex / Claude Code へ配布
技術スタック
コマンドマニュアル
6 本のコマンド。設計前提は、構造化された出力と意味を持つ終了コードです。スクリプトも AI Agent も確実に消費できます。
newtool listすべてのアルゴリズムと有効な形態を一覧
--json--status rust|todonewtool describe <algo>アルゴリズムの引数定義・形態・例を表示
--jsonnewtool run <algo>アルゴリズムを実行。引数は stdin または --params で渡す
--params--stdin--jsonnewtool mcp serve全アルゴリズムを MCP streamable HTTP で公開
--port--hostnewtool web同じカーネルを使うブラウザ UI をローカルで起動
--port--opennewtool skills installスキルパッケージを導入し、AI クライアントへツールボックスを配布
--target workbuddy|codex|claude出力の規約
CLI はプログラムのためのインターフェースであり、人間が読めるのは付随的なことです。
既定で JSON を出力し、フィールド名は安定しています。人間が読みやすい整形は呼び出し側が決め、CLI は推測しません。
成功・失敗・使い方の誤りで異なる終了コードを返します。スクリプトと Agent はテキストを解析せず、コードで分岐します。
ローカルのトークンファイルを自動検出し、コマンドラインでの平文の資格情報を避けます(シェル履歴やプロセス一覧に残るため)。
実際の呼び出し
01$ newtool list --json02{ "count": 3, "algorithms": ["base64", "jwt.decode", "uuid.v7"] }0304$ newtool run jwt.decode --params '{"token":"eyJhbGci..."}'05{ "ok": true, "data": { "header": { "alg": "HS256" } } }アイデンティティ・エージェント・プライベートドメインの複雑さを、統治可能なひとつのカーネルへ
既存の IAM の置き換え、エージェント基盤の構築、あるいはプライベートドメイン運用の本格化——まずは 30 分のアーキテクチャ相談から始めましょう。私たちが得意とする種類の問題かを先に判断し、適さない場合は率直にお伝えします。