Magnitude

magnitudedev/magnitude — 推論エンジンを内蔵し、ローカルモデルだけで完結するオープンソース・エージェント

1 — 概要

Magnitude はターミナルで動くコーディング/作業エージェントです。特徴は、エージェント本体だけでなく 推論エンジンそのものを同梱している点にあります。モデルはあなたのマシン上で動き、プロンプトもファイルも外部 API に送られません。API キー、トークン課金、レート制限がありません。

Local100% オフライン動作
Rustllama.cpp 上の自前エンジン
BunTypeScript モノレポ
Apache 2.0ライセンス

公式ドキュメントの表現を借りると、「今日のエージェントはローカルにあるが、モデルはそうではない」という問題意識から出発しています。Magnitude はスタック全体を自前で持つことで、モデルの選定・ダウンロード・メモリ配置・実行までを 1 つのアプリケーションの中で完結させます。

標準状態でシェルの実行、ファイルの編集、スクリプトの実行ができます。README では次のような日常業務が例に挙げられています。

  • 外部に出したくないデータの分析
  • プライベートなノートの管理
  • コードやログのレビュー
  • ファイルの検索と整理
  • ドキュメントやスライドの作成
  • 自動化スクリプトの作成

対応プラットフォームは macOS と Linux です。Windows では WSL 経由で利用します。

2 — インストールと初回起動

CLI をグローバルにインストールし、作業したいディレクトリで magnitude を実行します。npm 以外に bun / pnpm / yarn でも導入できます。

npm install -g @magnitudedev/cli

cd your-project
magnitude
STEP 01 ハードウェアの検出 初回起動時に CPU・メモリ・アーキテクチャ・Metal / CUDA などのアクセラレーションを検出します。
STEP 02 短時間のプロファイリング 重みを丸ごとダウンロードせずに、短いローカル推論テストで「収まるか」「どれくらい速いか」を推定します。
STEP 03 モデルの選択 Balanced / Best Quality / Fastest / Lightweight から選びます。推薦は機種ごとに変わります。
STEP 04 ダウンロードとロード 選んだモデルの取得・準備・メモリへのロードまで Magnitude が自動で行います。
ターミナル環境: Ghostty や Kitty のような色表現の豊かなターミナルを推奨しています。macOS 標準のターミナルは色数が限られるため見え方が変わります。Windows では wsl --install の後、WSL 内で同じ手順を実行します。

Exa の API キーを環境変数に設定してから起動すると、エージェントが Web 検索を使えるようになります。

export EXA_API_KEY="your-api-key"
magnitude
3 — ローカル推論エンジン

推論ランタイムは llama.cpp の上に Rust で書かれた自前エンジンで、アプリケーションの一部として同梱されます。別途モデルサーバーを立てたりランタイムを設定したりする必要はありません。モデルの起動・ロード・保持・停止という一連のライフサイクルを Magnitude が握っている点が、外部サーバーを呼ぶ構成との最大の違いです。

ドキュメントでは「ダウンロード済み」と「ロード済み」を明確に区別しています。状態は /settings → Hardware から確認し、手動でロード・停止することもできます。

状態意味
Downloadedモデルファイルがディスク上に保存されている
Loadingモデルと実行時データをメモリへ配置している最中
Running応答できる状態になっている
Unloaded選択もダウンロードもされているが、推論用メモリは使っていない

しばらく使われないモデルは自動的にアンロードされますが、ファイルが削除されるわけではありません。

  • アクセラレーション・配置・コンテキスト・メモリ: その時点のマシンに合わせて設定されます。ロード直前にもう一度メモリを確認するため、普段は収まる設定でも他のアプリがメモリを使いすぎていれば起動しません。
  • コンテキストと並列度: リクエストごとに設定されたコンテキストを維持したうえで、マシンに余力があるときだけ同時実行に追加のメモリを使います。余力がない場合はコンテキストを黙って削るのではなく、同時実行数を減らします。
  • キャッシュの再利用: 長い会話では、実行中のモデルが既に処理した一致部分を再利用し、新しい入力だけを処理します。
  • メモリ保護: ロード中・実行中は継続的にメモリを監視し、危険な水準まで空きが減るとマシンが不安定になる前にモデルを停止します。停止後もモデルの選択は保持され、/settings から再ロードできます。
モデル差の吸収: ローカルモデルは推論フォーマット、ツール呼び出し形式、チャットテンプレート、会話履歴の慣習がそれぞれ異なります。Magnitude はこれらを 1 つのインターフェイスへ正規化するため、モデルを切り替えてもシステム側の再設定が要りません。
4 — モデル推薦とカタログ

ハードウェアプロファイルとキュレーション済みのモデルデータを組み合わせ、そのマシン向けの少数の構成を提示します。1 件の推薦は「モデル・量子化・コンテキストサイズ」の具体的な組み合わせです。

推薦優先するもの
Balanced能力・速度・メモリ使用量の総合バランス
Best Qualityモデルの能力や忠実度
Fastest応答速度
Lightweightメモリとディスクの使用量を抑えること

評価にはエージェントとしての能力、推定速度、コンテキスト、実行時メモリ、ダウンロードサイズ、量子化による品質の保持率が使われます。速度は ~36–48 tok/s のような範囲で表示され、実際の値はプロンプト長や他の負荷で変動します。

推薦はあくまで短いリストで、カタログにはそのマシンで評価対象になる完全なキュレーション済みセットが並びます。/settings から catalog を開くと、推薦度・メモリ・知能・量子化品質・速度・コンテキスト・ライセンスを比較できます。

  • Magnitude が管理するモデルは ~/.magnitude/models に保存されます。
  • Hugging Face Hub のキャッシュも走査し、互換性のある GGUF モデルを取り込みます。
  • キャッシュ位置は HF_HUB_CACHE → HUGGINGFACE_HUB_CACHE → HF_HOME → XDG_CACHE_HOME の順に確認し、いずれも無ければ ~/.cache/huggingface/hub を見ます。

カタログ外のモデルを使う

カタログに無い GGUF モデルも、Hugging Face CLI で正規のキャッシュへ配置すれば利用できます。任意のディレクトリではなくキャッシュに置くのがポイントです。

hf download <owner>/<repository> --include "<model-and-quantization>*.gguf"

ダウンロードは一致するファイル(選択したセットの全シャードを含む)をすべて取得します。完了後に Magnitude を再起動すると、モデル一覧が更新されます。

5 — スキルによる拡張

スキルはエージェントに追加できる再利用可能な機能です。Magnitude を使うディレクトリで npx skills add を実行します。プロジェクト単位でも、グローバルでも導入できます。README が推奨しているものは次のとおりです。

npx skills add vercel-labs/agent-browser   # ログイン済み Chrome を操作する
npx skills add anthropics/skills/xlsx      # Excel の読み書き
npx skills add anthropics/skills/pptx      # PowerPoint の作成
npx skills add anthropics/skills/docx      # Word の読み書き
npx skills add anthropics/skills/pdf       # PDF の読み取り・入力・作成

導入したスキルはスラッシュコマンドのメニューに現れます。/ を入力して一覧から選ぶか、スキルの説明に合う作業を依頼すると、Magnitude がその指示を読み込んで実行します。現在のセッションに出てこない場合は、新しいセッションを開始してください。

グローバルスキルは以下から読み込まれます。

~/.claude/skills
~/.agents/skills
~/.magnitude/skills

加えて、カレントディレクトリ内の .claude/skills / .agents/skills / .magnitude/skills も読み込まれます。同名の場合はカレントディレクトリ側が優先されます。

導入前に中身を確認してください: スキルはコマンドの実行、依存関係のインストール、Web サイトの操作、外部サービスとのやり取りを指示できます。機微なファイルやログイン済みブラウザを扱うときは特に、ソースと指示内容を読んでから導入することが推奨されています。
6 — リポジトリ構成

Bun ワークスペースのモノレポで、cli / desktop / web / inference / packages/* が並びます。AGENTS.md は依存方向を次のように定めています。

clients (cli / web) → client-common → sdk → acn (daemon)

クライアントは client-common と sdk だけを import し、acn / agent / acn-protocol / ai / providers を直接参照しません。クライアントに新しい機能が必要な場合は、acn-protocol に RPC を追加し、acn にハンドラを実装します。SDK 側は自動的にそれを公開します。

パッケージ役割
client-common共有ステート、フック、表示同期。AgentClient を利用する
sdk型付き RPC クライアント、デーモンのライフサイクル、バイナリ解決
acnエージェントランタイム・セッション・ファイル操作・表示ストリームをホストするデーモン
acn-protocolSDK と ACN が共有するワイヤ契約(RPC とスキーマ)
aiプロバイダ非依存の契約(Provider, ModelCatalog, BoundModel など)
providers具体的なプロバイダ実装とレジストリ
agentエージェントランタイム、プロジェクション、ワーカー、ツール、表示のマテリアライズ
event-coreイベントソーシング、プロジェクション、アドレス付きステート
icn / icn-protocol推論エンジンのライフサイクルと OpenAPI 由来の型
storageセッション・設定・認証の永続化
rolesワーカー特化のためのロール/スロット定義
ディレクトリ位置づけ
design/アーキテクチャと挙動の恒久的なソース・オブ・トゥルース。bun design-docs で該当文書を引ける
info/人間と LLM 向けの簡潔な高レベル文書。壊れやすいファイル名やコード片に依存しない記述を保つ
docs/公開ドキュメントサイトのソース(Get Started、Models、Skills、Reference など)
inference/Rust の推論クレート、カタログ、ベンチマーク、パリティ検証
ICN のライフサイクル: ACN はローカルのデーモンで、クライアントは SDK の JIT ensurance を通じて、データルートごとに 1 つの正規の ACN を得ます。別のコーディネータープロセスは存在せず、同時起動はプロセスセーフなマシンステートで調停されます。公開・停滞・起動上限の 3 つのタイムアウトは互いに独立して設計されています。
  • Effect-TS ネイティブ: 新規コードは Effect-TS で書き、Effect に触れる TypeScript コードは effectful なまま保ちます。逆方向(脱 Effect 化)は行いません。
  • DI はサービスに分割: サービスは同名のインターフェイスを持つ Context.Tag として定義します。
  • シリアライズ対象は Effect Schema: 任意値は Schema.optionalWith(..., { as: 'Option', exact: true }) を使い、undefined を持ち込まないようにします。
  • ブランド型: ID など意味を持つ文字列には Effect のブランド型を使います。
  • 不要な後方互換を作らない: 明示的に求められない限り、レガシー互換のシムは残しません。
7 — イベントソーシングと表示

event-core は Effect ベースのイベントソーシング基盤です。永続化される「イベント」と、プロジェクションからのみ発生する揮発的な「シグナル」を明確に分けています。

観点EventsSignals
永続化EventSink に保存される保存されない
リプレイハイドレーション時に再生される再生されない
発生元ワーカー(非同期)、外部プロジェクションのみ(同期)
意味起きた事実派生した通知

プロジェクションはステートフルかつ同期で、イベントを発行できませんがシグナルを出せます。ワーカーはステートレスで非同期に fork され、イベントを発行できますがハイドレーション中は動きません。

表示(Display)はイベントソースドなセッション状態に対する、ウィンドウ付きのランタイムビューとして設計されています。クライアントは表示の意図を持ち、エージェントは受理された表示の真実を持ちます。

  • Requested shape — クライアントの表示意図(選択中のセッション、表示するワーカースタック、タイムラインのウィンドウなど)から導かれる要求。
  • Accepted shape — 要求のうち、その時点のプロジェクション状態で解決できる部分だけを含むエージェント側の答え。
  • Accepted snapshot — { shape, state }。UI が描画するのは要求ではなくこのスナップショットです。

形状の書き込み経路が 1 本で、受理された真実の所有者も 1 つ、常駐管理は UI キャッシュではなく event-core が担当するため、競合が起きにくい構造になっています。DisplayViewRuntime はランタイム状態であり、プロジェクションでもイベントログでもありません。

DisplayTimelineProjection ModelRequestActivityProjection ProjectionConsumer

過去のセッションは ~/.magnitude/sessions/ に UTC タイムスタンプのフォルダ名で保存され、bun session で検査できます。イベントは 0 始まりのインデックスを持ち、出力は JSON なので jq に流せます。

bun session list                       # 直近のセッション一覧
bun session events <id>                # 全イベントを index / type / timestamp で列挙
bun session event <id> <index>         # 1 イベントのペイロードを JSON で表示
bun session search <keyword> <id>      # ペイロードをキーワード検索
bun session projection <id> Window     # イベントを再生して指定プロジェクションを出力

利用できるプロジェクションは Window、Fork、TaskGraph、Turn、Display、Compaction、WorkingState、SessionContext、Proposal、AgentRegistry、Artifact、ChatTitle、Replay などです。

8 — 操作リファレンス
コマンド別名内容
/new—新しい会話を開始する
/resume—最近の会話を開く
/models—準備済みのモデルを選ぶ
/catalog—ローカルモデルを探してダウンロードする
/hardware—ローカル推論のハードウェアを確認する
/settings/sモデル設定を開く
/bash—bash モードに入る
/init—プロジェクト用の AGENTS.md を生成する
/transcript—トランスクリプト表示を切り替える
/exit/quit, /qMagnitude を終了する

/ を入力すると補完付きで一覧が出ます。導入したスキルも同じメニューにコマンドを追加できます。

キー動作
Enter / Shift+Enter送信・確定 / 改行の挿入
Ctrl+T推論レベルのセレクタを開く(もう一度押すと選択肢を移動)
Ctrl+R最近の会話を開閉する
Esc開いているメニューを閉じる、または実行中の作業を中断する
Ctrl+C入力欄をクリア(空でアイドル時は終了)
Ctrl+A / Ctrl+E行頭 / 行末へ移動
Ctrl+U / Ctrl+Kカーソルより前 / 後を削除
Ctrl+W / Ctrl+D前の単語 / 次の単語を削除
Ctrl+Y最後に削除したテキストを復元

入力欄で @ を打つとファイルやディレクトリを参照でき、その内容がコンテキストに含まれます。画像は貼り付けやドラッグで渡せます。長いテキストの貼り付けは入力欄を埋め尽くさず、ペーストセグメントに畳まれます。! で始めるとシェルコマンドを直接実行できます。

パス用途
~/.magnitude/models/Magnitude が管理するローカルモデル
~/.magnitude/cache/モデルのメタデータ、プロファイリング結果などの破棄可能なキャッシュ
~/.magnitude/sessions/会話履歴
~/.magnitude/logs/アプリケーションログ
~/.magnitude/traces/トレース有効時のローカルトレースデータ
~/.magnitude/config.jsonユーザー設定とモデル選択
キャッシュの削除: ~/.magnitude/cache を消すとハードウェアのプロファイリングとモデル評価がやり直しになりますが、ダウンロード済みモデルは消えません。モデルは ~/.magnitude/models に分けて保存されています。

環境変数は EXA_API_KEY(Web 検索)のほか、HF_HUB_CACHE、HUGGINGFACE_HUB_CACHE、HF_HOME、XDG_CACHE_HOME が Hugging Face キャッシュの探索に使われます。会話がモデルのコンテキストに収まらなくなると、古い部分を要約に圧縮してセッションを継続します。

解説の出典: このページは magnitudedev/magnitude リポジトリの README.md、AGENTS.md、docs/ 配下のドキュメント(why-magnitude、get-started、inference-engine、models、skills、reference)、および info/・packages/event-core/ARCHITECTURE.md の記述をもとに構成しています。