nab について
nab は、ウェブページを LLM 向けの Markdown として取得し、音声・動画を分析し、URL の変更を監視するローカルの Rust 製 CLI と MCP サーバーです。ウェブ情報の抽出や端末内でのメディア処理を必要とするエージェントや開発者向けです。
主な機能
- 01URL を整形済み Markdown として取得
- 02トークン上限に応じたコンテンツ抽出
- 03音声と動画をローカルで文字起こし
- 04録音内の話者を識別
- 05URL の変更を監視して通知
活用シーン
- 01LLM の調査向けに必要な内容を取得
- 02インタビューを文字起こしして話者を識別
- 03ステータスページの変更を追跡
MCP 対応
nab は stdio と Streamable HTTP に対応する MCP サーバーを提供し、コンテンツ取得・分析ツールと URL 監視用リソースを公開します。MCP の取得機能は、焦点を絞った抽出とトークン上限に対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
nab
トークン効率に優れたウェブ取得ツール+多言語ASR+URL監視ツールです。MCP 2025-11-25および2026-07-28に対応(部分対応:待機しない呼び出し)。Rust製です。まずmacOS arm64に対応し、クロスプラットフォームで動作します。

nabは、3つの機能を高い品質で実現する単一のRustバイナリです。あらゆるURLを(実際のブラウザーCookieとボット対策回避機能を使って)クリーンなMarkdownとして取得し、あらゆる音声・動画ファイルをデバイス上の多言語ASRと話者ダイアライゼーションで分析し、あらゆるURLの変更を監視して、コンテンツが変化した際に通知を送信します。すべてローカルで動作します。デフォルトではAPIキーの設定は不要です。出力はLLMのコンテキストウィンドウに合わせて調整されています。
nabを選ぶ理由
- 設計段階からトークン消費を抑制。 nabは、LLMに本当に必要な情報だけを返します。クリーンなMarkdown、BM25-liteによるクエリー重視の抽出、構造を考慮したトークン予算によって、コンテキストウィンドウに生のHTMLを流し込むことなく、ウェブ調査のトークンコストを削減します。
- マルチモーダルで、完全にデバイス上で動作。 あらゆる音声・動画を文字起こしし、話者を識別します(Apple Neural Engine上のFluidAudio / Parakeet TDT v3 — 2時間のクリップをリアルタイムの131倍で処理、EUの25言語に対応、単語単位のタイムスタンプ、zh/ja/ko/vi向けのQwen3-ASRはオプション)。Apple Visionで画像のOCRも行います(15言語、約10~50 ms)。クラウド不要、APIキー不要です。
- 認証が必要なサイトにもアクセス。 実際のブラウザーCookie、TOTP/MFAによる1Password自動ログイン、WebAuthnパスキー、フィンガープリント偽装、WAF回避により、公開URLと同じコマンドで社内ダッシュボード、SaaSアプリ、有料記事にもアクセスできます。
- ウェブを監視。 MCPリソースを介して任意のURLを購読できます。条件付きGET、セマンティック差分、適応型バックオフに対応。ウェブ全体を対象にしたRSSです。
- プロンプトインジェクションをデフォルトで防御。 AIに向けた隠し指示は、モデルによって黙って実行されるのではなく、ユーザーに提示されます。詳しくはセキュリティをご覧ください。
すべてが単一のローカルRustバイナリで動作します。クラウドバックエンドはなく、デフォルトではAPIキーも不要です。出力はLLMのコンテキストウィンドウに合わせて調整されています。
クイックスタート
AIアシスタントに伝える(推奨):
https://github.com/MikkoParkkola/nab を読み、ウェブ取得および音声分析用のMCPサーバーとしてnabをインストールしてください
エージェントがバイナリをインストールして設定し、取得を開始します。Claude Code、Cursor、Windsurf、およびターミナルにアクセスできるあらゆるAIで動作します。
または、自分でインストールして試す:
brew trust --tap MikkoParkkola/tap # Homebrew 6.0+
brew install MikkoParkkola/tap/nab # install
nab fetch https://news.ycombinator.com # fetch as markdown
nab models fetch fluidaudio # download ASR model
nab analyze interview.mp4 --diarize # transcribe + identify speakers
nab watch add https://status.openai.com --interval 5m # subscribe to changes
機能
| コマンド | 説明 |
|---|---|
nab fetch <url> | 任意の URL をクリーンな Markdown として取得します。HTTP/3、ブラウザー Cookie の注入(Brave/Chrome/Firefox/Safari/Edge/Dia)、1Password の自動ログイン、フィンガープリントの偽装、プロンプトインジェクション/情報流出シグネチャを対象とする取得時の YARA-X による秘匿処理、12 種類のサイトプロバイダーに対応しています。MCP の取得では、クエリに焦点を当てた抽出、可読性の向上、トークン予算にも対応しています。 |
nab browser <url> | 設定済みの Chrome DevTools Protocol WebSocket エンドポイントを介して、JavaScript の多いページを明示的なオプトインでブラウザー表示します。Chromium は同梱されておらず、デフォルトの nab fetch がブラウザーやリモートプロバイダーを自動起動することはありません。 |
nab analyze <video|audio> | 文字起こしと話者ダイアライゼーションを行います。Apple Neural Engine 上の FluidAudio(Parakeet TDT v3)により、2 時間のクリップをリアルタイムの 131 倍で処理し、単語レベルのタイムスタンプ、25 の EU 言語に対応しています。zh/ja/ko/vi 向けの Qwen3-ASR、および MCP サンプリングによるアクティブリーディングはオプションです。 |
nab watch add <url> | URL を監視し、購読可能な MCP リソースを通じて通知を送信します。ウェブ全体を対象とする RSS に対応しています。条件付き GET、セマンティック差分、適応型バックオフを備えています。 |
nab models fetch <name> | 推論モデルのバイナリを永続的にインストールします。fluidaudio(macOS の Apple Silicon でデフォルト)、sherpa-onnx(クロスプラットフォーム対応の Parakeet TDT、CPU でリアルタイムの約 30 倍)、whisper(汎用フォールバック、whisper-large-v3-turbo、99 言語)に対応しています。 |
nab-mcp | MCP 2025-11-25 および 2026-07-28 対応サーバーです。stdio と Streamable HTTP に対応しています。12 個のツール、4 個のプロンプト、2+N 個のリソース、構造化ログ、サンプリング、ルート、エリシテーションを備えています。 |
nab::content::ocr | Apple Vision OCR エンジンです。15 言語に対応しています。Apple Neural Engine による高速化に対応しています。画像 1 枚あたり約 10~50 ms です。macOS のみで利用できます。 |
セキュリティ:プロンプトインジェクション対策
ウェブページには、あなたではなく AI に向けて書かれた指示が含まれるケースが増えています。HTML コメント、display:none/aria-hidden のテキスト、data-ai/data-mcp/data-agent 属性のペイロード、WebMCP マニフェストなどに隠されています。このようなページを素朴なツールで取得すると、隠された指示がそのままモデルのコンテキストに入り、実行されるおそれがあります。これはプロンプトインジェクションをフィッシングに利用する類の攻撃です。
nab は取得したすべてのページを悪意のある入力として扱い、コンテンツがエージェントに届く前に、ローカルでネットワーク通信を行わない 2 つのガードを実行します。デフォルトで有効で、フラグも設定も不要です。
- Secure Ingestion ガード — 人間には見えない、機械を対象としたマークアップ(AI 宛てのコメント、非表示の
display:none/aria-hiddenテキスト、エージェント専用のdata-*ペイロード、WebMCP の広告)を検出して除去し、各検出内容をInfo/Warn/Blockの重大度で報告します。ページがエージェントに何を伝えようとしたかを確認でき、気付かないうちに実行されることはありません。 - YARA-X シグネチャガード — 返されるすべての本文をスキャンし、プロンプトインジェクション、情報流出、シークレット漏えい、難読化のシグネチャを検出します。デフォルトでは一致したセクションを秘匿します。
NAB_YARA_ACTION=refuseを設定すると取得そのものを拒否し、緊急時に監査可能な形で一時的に無効化する場合はNAB_YARA_BYPASS=1を設定します。
その結果、隠された指示はモデルに実行されるのではなく、あなたに見えるようになります。組み込みのウェブ取得ツールではなく、エージェントに nab fetch を使わせる大きな理由です。
ライセンス: どちらのガードも Enterprise Edition モジュールです。PolyForm Noncommercial 1.0.0 に基づき、個人利用および非商用利用は無料です。商用/ビジネス利用には商用ライセンスが必要です(COMMERCIAL.md およびライセンスのセクションを参照)。
インストール
Homebrew(macOS、推奨)
brew tap MikkoParkkola/tap
brew install nab
事前ビルド済みバイナリ(Rust ツールチェーン不要)
ほとんどのユーザーにはこの方法がおすすめです — すぐに実行できるバイナリなので、お使いのマシンでコンパイルする必要はありません。
cargo-binstall をお持ちの場合は、適切な事前ビルド済みバイナリが自動的に取得されます。
cargo binstall nab
そうでない場合は、GitHub Releases から直接ダウンロードしてください。以下のすべてのプラットフォーム向けに nab CLI と nab-mcp サーバーが提供されており、checksums-sha256.txt も含まれています。
| プラットフォーム | CLI バイナリ | MCP サーバーバイナリ |
|---|---|---|
| macOS Apple Silicon | nab-aarch64-apple-darwin | nab-mcp-aarch64-apple-darwin |
| macOS Intel | nab-x86_64-apple-darwin | nab-mcp-x86_64-apple-darwin |
| Linux x86_64(glibc) | nab-x86_64-unknown-linux-gnu | nab-mcp-x86_64-unknown-linux-gnu |
| Linux x86_64(静的 musl) | nab-x86_64-unknown-linux-musl | nab-mcp-x86_64-unknown-linux-musl |
| Linux ARM64(glibc) | nab-aarch64-unknown-linux-gnu | nab-mcp-aarch64-unknown-linux-gnu |
| Linux ARM64(静的 musl) | nab-aarch64-unknown-linux-musl | nab-mcp-aarch64-unknown-linux-musl |
| Windows x64 | nab-x86_64-pc-windows-msvc.exe | nab-mcp-x86_64-pc-windows-msvc.exe |
macOS Apple Silicon でのインストール例(お使いのプラットフォームに合わせてファイル名を置き換えてください):
shasum -a 256 -c checksums-sha256.txt --ignore-missing
chmod +x nab-aarch64-apple-darwin
mv nab-aarch64-apple-darwin /usr/local/bin/nab
xattr -d com.apple.quarantine /usr/local/bin/nab 2>/dev/null || true
crates.io から(ソースからコンパイル)
nab をローカルでビルドします。Rust ツールチェーン(1.95 以降)が必要で、数分かかります。
cargo install nab
ソースから
git clone https://github.com/MikkoParkkola/nab.git
cd nab
cargo install --path .
インストールの重複を避ける
nab を複数の方法(たとえば Homebrew tap と cargo install)でインストールすると、どのコピーが使われるかは PATH の順序によって決まります。多くの環境では /opt/homebrew/bin が ~/.cargo/bin より前にあるため、Homebrew のバイナリが新しい cargo インストール版を上書きすることがあります。その場合、nab --version は古いバージョンを表示します。
組み込みの診断機能を実行すると、PATH 上にあるすべての nab、優先されるもの、および各バージョンを確認できます。
nab doctor
PATH 上のバイナリが古い場合、その doctor はこのコマンドより前のバージョンである可能性があります。新しいインストール版をフルパスで呼び出して診断してください。例:~/.cargo/bin/nab doctor。解決するには、インストール方法を1つに絞る(brew uninstall nab または cargo uninstall nab)か、使いたいインストール先のディレクトリが先に来るよう PATH の順序を変更してください。
MCP の設定
MCP Registry 名:mcp-name: io.github.MikkoParkkola/nab
MCP クライアントの設定(Claude Desktop、Cursor、Windsurf など)に追加します。
{
"mcpServers": {
"nab": {
"command": "nab-mcp",
"args": []
}
}
}
または、自動インストーラーを使用します。
nab mcp install # Claude Desktop (default)
nab mcp install --client claude-code # Claude Code
nab mcp install --client cursor # Cursor
nab mcp install --client windsurf # Windsurf
nab mcp install --client codex # OpenAI Codex CLI
nab mcp install --client vscode # VS Code Copilot
nab mcp install --client zed # Zed
nab mcp install --dry-run # preview without writing
gemini、amazon-q、lm-studio もサポートされています。
ツールの一覧についてはツール、機能と HTTP トランスポートについては MCP 統合を参照してください。
Claude Code プラグイン
このリポジトリには、plugin/ にローカルの Claude Code プラグインが含まれています。nab MCP の自動登録に加え、Claude Elite の research、url-insight、wayback、ia、oreilly のスキルがバンドルされています。
claude --plugin-dir ./plugin
このプラグインは、fetch、認証済み Brave Cookie による取得、アーカイブの取得、複数ソースの調査に対応した /nab ワークフローを提供します。nab の認証対応パスを優先して案内します。既存のブラウザーセッションには nab fetch --cookies brave <url> を、1Password/TOTP フローには nab fetch --1password <url> を使用します。
使用方法
Fetch
# Basic fetch — auto-detects browser, returns markdown
nab fetch https://example.com
# Use cookies from a specific browser
nab fetch https://github.com/notifications --cookies brave
# 1Password auto-login (TOTP/MFA supported)
nab fetch https://internal.company.com --1password
# Google Workspace (Docs, Sheets, Slides) with comments
nab fetch --cookies brave "https://docs.google.com/document/d/DOCID/edit"
# Output JSON with confidence scores
nab fetch https://example.com --format json
# Batch fetch with parallelism
nab fetch --batch urls.txt --parallel 8
# Explicit browser rendering for JS-heavy pages
NAB_BROWSER_CDP_WS=wss://... nab browser https://example.com
nab fetch https://example.com --render --browser-cdp-url wss://...
fetch の共通フラグ:
| フラグ | 説明 |
|---|---|
--cookies <browser> | auto、brave、chrome、firefox、safari、edge、none |
--1password / --op | 1Password の認証情報を検索して自動ログインします |
--proxy <url> | HTTP または SOCKS5 プロキシ |
--format <fmt> | full(デフォルト)、compact、json |
--raw-html | Markdown への変換をスキップします |
--readability | 一般的な HTML ページに対して可読性抽出を強制します |
--max-output-tokens <n> | 出力トークンの上限を設定します。返される Markdown では、余裕を確保するため上限の 80% を使用します |
--remote-fallback | r.jina.ai によるリモートの薄いコンテンツの補完を明示的に有効にします。内部向け、認証が必要な URL、機密性の高い URL には使用しないでください |
--render / --interactive | 設定済みの CDP ブラウザによるレンダリングを明示的に有効にします。JS を多用するページに使用します。NAB_BROWSER_CDP_WS または --browser-cdp-url が必要です |
--diff | 前回の取得からの変更点を表示します |
-X <method> -d <data> | HTTP メソッドと本文 |
-o <path> | 本文をファイルに書き込みます |
MCP の fetch は、クエリに焦点を当てた抽出、可読性抽出、構造を考慮したトークン予算、永続的な暗号化 Cookie セッションに対応する focus、readability、max_tokens、session パラメーターもサポートします。
Analyze
nab analyze は、音声ファイルと動画ファイルをローカルで文字起こしします。macOS arm64 では、デフォルトのバックエンドは FluidAudio です。Apple Neural Engine 上で Parakeet TDT v3 を実行します。
# Download the ASR model (~600 MB, one-time)
nab models fetch fluidaudio
# Transcribe a video
nab analyze interview.mp4
# Add speaker diarization (PyAnnote community-1)
nab analyze interview.mp4 --diarize
# Force a language hint (BCP-47)
nab analyze podcast.mp3 --language fi
# Word-level timestamps
nab analyze talk.mp4 --word-timestamps
# Active reading: nab uses MCP sampling to look up references mentioned in the audio
nab analyze interview.mp4 --active-reading
# Expose speaker embeddings for matching against hebb's voiceprint database
nab analyze interview.mp4 --diarize --include-embeddings
# Output JSON
nab analyze podcast.mp3 --format json
2 時間 9 分の英語音声ファイル(Karen Hao のインタビュー、M シリーズの MacBook Pro)での実測値:
| メトリック | 値 |
|---|---|
| 実行時間 | 59.6 s |
| リアルタイム比 | 131x |
| FluidAudio の平均信頼度 | 97.18 % |
| 音声抽出(ffmpeg) | リアルタイムの約 650 倍 |
| バックエンド | プラットフォーム | 言語 | 話者ダイアライゼーション |
|---|---|---|---|
fluidaudio(macOS arm64 のデフォルト) | macOS arm64 | EU の 25 言語、オプトインで Qwen3-ASR による zh/ja/ko/vi に対応 | PyAnnote community-1 |
sherpa-onnx | Linux/x86、macOS、Windows | Parakeet ONNX、25 以上の言語 | sherpa-onnx pyannote-seg-3.0 |
whisper-rs | 汎用フォールバック | whisper-large-v3-turbo、99 言語 | なし |
Watch
nab watch は、任意の URL を購読可能なリソースにします。MCP クライアントは、コンテンツが変更されると notifications/resources/updated を受け取ります。
nab watch add https://news.ycombinator.com --interval 10m
nab watch add https://example.com/pricing --interval 1h --selector "table.pricing"
nab watch add https://api.openai.com/status --interval 5m --notify-on regression
nab watch list
nab watch logs <id>
nab watch remove <id>
ウォッチごとのオプション:
| フラグ | デフォルト | 説明 |
|---|---|---|
--interval <duration> | 1h | ポーリング間隔(5m、1h、24h) |
--selector <css> | なし | 差分の対象を単一の要素に絞る CSS セレクター |
--notify-on <kind> | any | any、regression、semantic |
--diff <kind> | semantic | text、semantic、dom |
ポーラーは条件付き GET(If-None-Match、If-Modified-Since)を使用するため、304 応答のコストは実質的にゼロです。連続して 5 回失敗したウォッチは自動的にミュートされます。429 と 503 では適応型バックオフが適用されます。
Models
nab models list # show installed model versions
nab models fetch fluidaudio # download FluidAudio binary + Parakeet weights
nab models update fluidaudio # check for upstream updates
nab models verify fluidaudio # checksum + smoke test
whisper と sherpa-onnx はどちらも、macOS のデフォルトである fluidaudio バックエンドとともに、クロスプラットフォームのフォールバックとして提供されます。
MCP integration
nab-mcp はネイティブの Rust 製 MCP サーバーです。stdio(デフォルト)または Streamable HTTP 経由で動作します。2026-07-28 には完全準拠していません。待機を必要としない呼び出しは、fetch、fetch_batch、submit、auth_lookup、fingerprint、validate、benchmark、watch_create、watch_list、watch_remove を含め、このリビジョンで処理されます。login、analyze、task は、その呼び出しで elicitation や sampling が発生しない場合にのみ処理されます。elicitation または sampling が発生する 2026-07-28 の呼び出しは、待機せずに JSON-RPC エラーを返します。セッション、elicitation、sampling、タスクは 2025-11-25 のままです。2026-07-28 のリクエストに initialize もセッション ID も必要ありません。HTTP では、その呼び出しに対応する mcp-protocol-version ヘッダーを送信します。stdio では、成功または JSON-RPC エラーが最初のメッセージになる場合があります。crates.io のビルドには SDK パッチがないため、nab-mcp は 2026 フックなしでコンパイルされ、2026-07-28 を処理しません。
クイックセットアップ(推奨)
nab mcp install # Claude Desktop (default)
nab mcp install --client claude-code # Claude Code
nab mcp install --client cursor # Cursor
nab mcp install --client windsurf # Windsurf
nab mcp install --client codex # OpenAI Codex CLI
nab mcp install --client vscode # VS Code Copilot
nab mcp install --client zed # Zed
nab mcp install --dry-run # preview what would change
gemini、amazon-q、lm-studio もサポートされています。nab-mcp バイナリのパスを自動検出し、既存の設定をバックアップして、nab エントリーを追加します。インストール後、クライアントを再起動してください。
手動セットアップ
MCP クライアントの設定(~/.config/claude/mcp.json など)に追加します。
{
"mcpServers": {
"nab": {
"command": "nab-mcp",
"args": []
}
}
}
HTTP トランスポート
nab mcp serve --http 127.0.0.1:8765
# or directly:
nab-mcp --http 127.0.0.1:8765
デフォルトでは localhost にバインドします。仕様に従い、オリジンのチェックと MCP-Protocol-Version ヘッダーの検証が適用されます。
MCP の機能
| 機能 | 状態 |
|---|---|
| ツール | 12 個のツール。構造化出力スキーマ、アノテーション、検証エラーに対応 |
| プロンプト | 4 個のプロンプト(fetch-and-extract、multi-page-research、authenticated-fetch、match-speakers-with-hebb) |
| リソース | 静的リソース 2 個と動的な監視リソース N 個。すべて購読可能 |
| ロギング | RFC 5424 のレベルに対応した notifications/message |
| サンプリング | nab がアクティブリーディング、注目箇所の抽出、フォームの自動入力のためにホスト LLM を呼び出します |
| ルート | ワークスペース単位で保存するために roots/list を照会します |
| 入力要求 | OAuth/SSO 用のフォームモードと URL モード |
| 引数補完 | ツール引数用の completion/complete |
| サーバーアイコン | ライト用とダーク用の SVG |
| トランスポート | stdio と Streamable HTTP(再開可能、セッション単位) |
ツール
nab-mcp は 12 個の MCP ツールを公開します。
fetch— URL を取得し、Cookie、注目箇所、トークン予算、セッションに対応したクリーンな Markdown に変換しますfetch_batch— 複数の URL を並列で取得します(HTTP/2 多重化、タスク拡張型の非同期実行)submit— CSRF 処理とスマートなフィールド抽出を用いてウェブフォームを送信しますlogin— TOTP/MFA を含め、1Password の認証情報を使ってウェブサイトに自動ログインしますauth_lookup— パスワードを公開せずに、URL に対応する 1Password の認証情報を検索しますfingerprint— 現実的な Chrome、Firefox、Safari のブラウザーフィンガープリントプロファイルを生成しますvalidate— 実際のウェブサイトに対して検証テストスイートを実行します(HTTP/2、HTTP/3、TLS 1.3、1Password)benchmark— 複数回の反復で URL の取得時間を計測し、最小値/平均値/最大値を表示しますanalyze— 多言語 ASR を使って音声/動画を文字起こしし、話者を識別しますwatch_create— コンテンツが変更されたときに MCP リソース通知を送信する URL 監視を作成しますwatch_list— アクティブな URL 監視の ID、URL、ポーリング状態を一覧表示しますwatch_remove— ID を指定して URL 監視を削除します
オプトインの Cargo 機能 task を有効にしてビルドすると、実験的なウェブタスク用エントリーである task も公開されます。シード URL を取得してスクリーニングし、検出された API エンドポイントを返します。
サイトプロバイダー
nab は 12 のプラットフォームの URL を検出し、広範な HTML スクレイピングではなく、API または安定した構造化ページデータを使用します。
| プロバイダー | URL パターン | 方法 |
|---|---|---|
| Twitter / X | x.com/*/status/* | FxTwitter API |
reddit.com/r/*/comments/* | JSON API | |
| Hacker News | news.ycombinator.com/item?id=* | Firebase API |
| GitHub | github.com/*/*/issues/*、*/pull/* | REST API |
| Google Workspace | Docs、Sheets、Slides | Export API + OOXML |
| YouTube | youtube.com/watch?v=*、youtu.be/* | oEmbed |
| Wikipedia | *.wikipedia.org/wiki/* | REST API |
| StackOverflow | stackoverflow.com/questions/* | API |
| Mastodon | */users/*/statuses/* | ActivityPub |
linkedin.com/posts/* | oEmbed | |
instagram.com/p/*、*/reel/* | oEmbed | |
| Substack | *.substack.com/p/*、substack.com/*/p/* | 記事 DOM(.available-content) |
どのプロバイダーにも該当しない場合、nab は標準的な HTML 取得と Markdown 変換にフォールバックします。
アーキテクチャ
nab は、直交する少数のサブシステムを中心に構築されています。cmd/(CLI)、bin/mcp_server/(MCP サーバー)、content/(HTML/PDF/OCR パイプライン)、analyze/(ASR+話者ダイアライゼーション+ビジョン)、watch/(URL 監視+サブスクリプション)、auth/(Cookie+1Password+WebAuthn)、site/(サイトごとのプロバイダー)、そして共有の AcceleratedClient(HTTP/3+接続プール+フィンガープリントストア)です。
参照先:
- docs/ARCHITECTURE.md — モジュール構成とデータフローの全体像
- docs/sovereign-stack.md — nab が hebb と連携してローカルファーストのマルチモーダルスタックを形成する方法
- docs/getting-started.md — 新規ユーザー向けガイド
設計上の注意点
docs/design/ ディレクトリでは、最近の設計提案を管理しています。
- analyze-v2.md — 多言語 ASR+話者ダイアライゼーション+ビジョンのパイプライン
- url-watch-resources.md — MCP の購読可能なリソースとしての URL 監視
- active-reading.md — MCP サンプリングによるアクティブリーディング
- mcp-spec-closure.md — MCP 2025-11-25 仕様の残る差分を解消
関連ツール
nab は、ソブリンなマルチモーダルスタックの片方です。もう片方は、神経科学に着想を得たメモリー MCP サーバー hebb です。連携例:
nab analyze --diarize --include-embeddings→hebb voice_match→ 名前付きの話者ラベルnab fetch URL→hebb kv_set→ 個人用のソブリンな Web メモリーnab watch add URL→hebb kv_set(更新時)→ あらゆる Web ページの変更履歴
連携の全体像については、docs/sovereign-stack.md をご覧ください。
設定
nab には設定ファイルは不要です。ブラウザー Cookie の自動検出、ランダム化されたフィンガープリント、Markdown 出力など、適切なデフォルト設定を使用します。
永続状態は ~/.nab/ に保存されます。
| パス | 用途 |
|---|---|
~/.nab/snapshots/ | --diff による変更検出用のコンテンツスナップショット |
~/.nab/sessions/ | AES-256-GCM で暗号化された名前付きセッションの jar(Windows 以外) |
~/.nab/session-key | セッション暗号化用にローカルで生成されたマスターキー(Windows 以外) |
~/.nab/fingerprint_versions.json | キャッシュされたブラウザーバージョン(14 日ごとに自動更新) |
~/.local/share/nab/watches/ | URL 監視状態 |
~/.local/share/nab/models/ | インストール済み推論モデルのバイナリー |
~/.nab/telemetry/ | 日次ハートビートの記録と本製品のインストール ID |
~/.revaluator/machine-id | このマシン上の製品間で共有されるランダム ID |
任意のプラグイン設定は ~/.config/nab/plugins.toml にあります。プラグインの例については、docs/getting-started.md をご覧ください。
環境変数
| 変数 | 用途 |
|---|---|
HTTPS_PROXY / https_proxy | HTTPS プロキシ URL |
HTTP_PROXY / http_proxy | HTTP プロキシ URL |
ALL_PROXY / all_proxy | すべてのプロトコル用プロキシ |
RUST_LOG | ログレベル(例:nab=debug) |
NAB_SSRF_ALLOW_PRIVATE | 1/true に設定すると、プライベート/内部アドレス(RFC 1918、IPv6 ULA、CGN)へのフェッチを許可します。デフォルトでは無効です。ループバックアドレスとクラウドメタデータアドレスは引き続きブロックされます |
NAB_SSRF_ALLOWLIST | 指定したプライベート範囲のみを例外とする、カンマ区切りの CIDR/IP 許可リスト(例:10.252.0.0/16,192.168.1.5)。デフォルトでは空です。上記の一括許可フラグよりも推奨されます |
NAB_KEYCHAIN_INTERACTION | バックグラウンドでの自動化では never に設定します。macOS Keychain の読み取りで UI を開かず、プロンプトが表示される可能性のある Python Cookie フォールバックも無効になります |
NAB_NO_TELEMETRY | 0 または false 以外に設定すると、日次ハートビートをスキップします。NO_TELEMETRY と DO_NOT_TRACK も同じ動作をします |
NAB_TELEMETRY_ENDPOINT | ハートビート URL を置き換えます。空の値の場合はデフォルトが使用されます |
PUSHOVER_USER / PUSHOVER_TOKEN | MFA 用の Pushover 通知 |
TELEGRAM_BOT_TOKEN / TELEGRAM_CHAT_ID | MFA 用の Telegram 通知 |
ライブラリの使用
use nab::AcceleratedClient;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let client = AcceleratedClient::new()?;
let html = client.fetch_text("https://example.com").await?;
println!("Fetched {} bytes", html.len());
Ok(())
}
要件
- ソースからビルドする場合は Rust 1.95 以降
analyzeコマンドとstreamコマンドには ffmpeg が必要です:brew install ffmpeg- 1Password CLI(任意。認証情報との連携に使用):1Password のドキュメントを参照してください
貢献
開発環境のセットアップ、コードスタイルのガイドライン、テスト手順、プルリクエストの手順については、CONTRIBUTING.mdを参照してください。
責任ある使用
このツールには、ブラウザーの Cookie 抽出とフィンガープリントの偽装機能が含まれています。これらの機能は、自分が認証済みのコンテンツへのアクセス、自動テスト、利用が許可されているサイトなど、正当な用途を想定しています。責任を持ってご使用ください。
トラブルシューティング
MCP サーバーに接続できませんか? ターミナルでnab-mcpを直接実行して、エラーを確認してください。which nab-mcpを実行し、バイナリが存在することを確認してください。cargo install nabでインストールした場合、nabとnab-mcpの両方が$PATH上にあるはずです。
Cookie の抽出に失敗しますか? macOS では、システム設定 > プライバシーとセキュリティ > フルディスクアクセスで、ターミナルにフルディスクアクセスを許可してください。ブラウザーの Cookie は保護されたディレクトリに保存されています。特定のブラウザーを対象にするには、--cookies braveを使用してください。Keychain の認証ダイアログを絶対に表示してはならないバックグラウンドツールでは、NAB_KEYCHAIN_INTERACTION=never nab ...を実行できます。macOS がサイレントに提供できるプレーンテキストの Cookie と認証情報は引き続き使用できますが、承認が必要な認証情報は利用できません。Nab は、プロンプトを表示する可能性のある代替手段を呼び出さず、安全側に失敗します。
ASR モデルが見つかりませんか? nab models fetch fluidaudioを実行して、モデルをダウンロードしてください(約 542 MB)。モデルディレクトリは~/.nab/models/です。インストール済みのモデルを確認するには、nab models listを使用してください。
Fetch で Markdown ではなく HTML が返されますか? 自動アクセスをブロックするサイトもあります。ブラウザーのセッションを使用するには、nab fetch URL --cookies braveを試してください。ログインが必要なサイトでは、nab fetch URL --1passwordを試してください。
JavaScript アプリから Fetch すると、内容がほとんど返されませんか? デフォルトのnab fetchはローカルファーストで、HTTP のみを使用します。DOM の実行が必要なページでは、NAB_BROWSER_CDP_WSまたは--browser-cdp-urlで外部 CDP エンドポイントを設定し、nab browser URLまたはnab fetch URL --renderを実行してください。リモートブラウザープロバイダーに URL とレンダリング後のページ内容が送信される場合があります。ローカルブラウザーの Cookie は、リモートブラウザーでは自動的に利用できません。
YARA-X ガードによって Fetch の内容が編集されましたか? nab fetchと MCP のfetchは、返された本文を保存または返す前に、デフォルトでスキャンします。編集せずにブロックするには、NAB_YARA_ACTION=refuseを設定してください。NAB_YARA_BYPASS=1は、監査対象となる緊急時のオプトアウトです。
watch で「too many open files」と表示されますか? ulimit を増やしてください:ulimit -n 4096。macOS のデフォルト値(256)は、多数の watch を同時に実行するには小さすぎます。
エコシステム
nab は MCP ツール群の一部です:
| ツール | 説明 |
|---|---|
| mcp-gateway | 汎用 MCP ゲートウェイ。コンパクトな 12~15 個のツール構成で、100 件以上の登録を置き換えます |
| trvl | AI 旅行エージェント。フライト、ホテル、地上交通向けの 36 個の MCP ツールを提供します |
| nab | ウェブコンテンツの抽出。Cookie とボット対策の回避により、あらゆる URL を取得します |
| axterminator | macOS GUI 自動化。アクセシビリティ API 経由で 34 個の MCP ツールを提供します |
ライセンス
nab は v0.9.0 以降、デュアルライセンスです。
| 対象範囲 | ライセンス | ファイル |
|---|---|---|
| コアの取得/分析/監視/MCP サーバー/公開ウェブの取得 | MIT | LICENSE |
| 指定された Enterprise Edition モジュール(認証付きアクセスおよびボット対策) | PolyForm Noncommercial 1.0.0 | LICENSE-EE.md |
EE 指定パス(すべてのファイルに // SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0 が記載されています):
src/auth/— 1Password、WebAuthn、ブラウザー Cookie の注入(プレミアム認証付きアクセス)src/fingerprint/— ブラウザーフィンガープリントの偽装(ボット対策回避)src/waf/— WAF チャレンジ処理src/site/— サイトごとのプロバイダー統合(独自のドメイン知識)src/security/— 機械を標的とした HTML ディレクティブや隠しメタデータを除去する Secure Ingestion ガードcrates/nab-yara-engine/— プロンプトインジェクション、データ流出、シークレット、難読化を対象とする、取得時の YARA-X シグネチャーガード
実際には次のようになります:
- 非商用利用、改変、再配布は無料です。
- EE モジュールの商用利用には、別途商用ライセンスが必要です。
- 企業は GitHub Sponsors を通じて、プロジェクトごとに月額 500 EUR の標準商用利用ライセンスを購入できます。
- 商用利用、フォーク、ラッパー、共有サービス、マネージドサービスのデプロイについては、COMMERCIAL.md をご覧ください。
- v0.9.0 より前のすべてのリリースは引き続き完全な MIT ライセンスであり、今後も MIT ライセンスのままです。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。