Harden fetch + dep updates + site‑rules routing
Release history
MikkoParkkola/nab releases
Ultra-fast web fetcher and MCP server with HTTP/3, JS rendering, anti-fingerprinting, browser cookie auth, and 1Password integration. Fetches any URL as clean Markdown for AI context.
All releases
22 shown
Routine maintenance release for MikkoParkkola/nab.
Changelog
Full Changelog: https://github.com/MikkoParkkola/nab/compare/v0.10.2...v0.10.3
Routine maintenance release for MikkoParkkola/nab.
Changelog
Full Changelog: https://github.com/MikkoParkkola/nab/compare/v0.10.0...v0.10.1
Routine maintenance release for MikkoParkkola/nab.
Changelog
Full Changelog: https://github.com/MikkoParkkola/nab/compare/v0.8.5...v0.9.0
Routine maintenance release for MikkoParkkola/nab.
Changelog
Full Changelog: https://github.com/MikkoParkkola/nab/compare/v0.8.4...v0.8.5
Routine maintenance release for MikkoParkkola/nab.
Changelog
Full Changelog: https://github.com/MikkoParkkola/nab/compare/v0.8.3...v0.8.4
Routine maintenance release for MikkoParkkola/nab.
Changelog
Full Changelog: https://github.com/MikkoParkkola/nab/compare/v0.7.2...v0.8.0
Routine maintenance release for MikkoParkkola/nab.
Changelog
Full Changelog: https://github.com/MikkoParkkola/nab/compare/v0.7.1...v0.7.2
Fixed deserialization of `speakerId` emitted as a JSON string by FluidAudio v0.13+.
Full changelog
Patch release for the speakerId JSON deserialization fix found during the post-v0.7.0 live smoke test of the nab + hebb composition.
The bug
FluidAudio v0.13+ emits speakerId as a JSON string ("1") instead of an integer (1). This broke nab analyze --diarize on fresh FluidAudio installations.
The fix
Custom serde Visitor that accepts i64, u64, or str/String. Both forms deserialize to the same i32 speaker_id. Regression tests added.
Affected
All v0.7.0 users running FluidAudio v0.13+ (the current version installed by nab models fetch fluidaudio). Upgrade to v0.7.1.
Verification
nab analyze /tmp/test_30s.wav --audio-only --diarize --format json
# → 30s audio, 0.24s wall, 123x realtime, 2 speakers identified
Full smoke test of the nab + hebb composition passed after this fix.
- Cross‑platform backends (sherpa‑onnx + whisper‑rs) are available behind feature flags for Linux/Windows/Intel macOS
- nab models fetch fluidaudio now installs the FluidAudio Swift CLI persistently, surviving reboots
- nab analyze v2: FluidAudio (Parakeet TDT v3) on Apple Neural Engine delivering 131× realtime at 97.18% confidence across 25 EU languages plus opt‑in Qwen3‑ASR for zh/ja/ko/vi, with optional speaker diarization and word‑level timestamps
- URL watch: any URL can be subscribed as an MCP resource; background poller uses conditional GETs, semantic diff, adaptive backoff and emits notifications/resources/updated on change
- Active reading via MCP sampling: during transcription nab invokes the host LLM to identify references, recursively fetches them with nab fetch, and inlines citations as footnotes
Full changelog
Highlights
nab analyze v2 — multilingual SOTA ASR via FluidAudio (Parakeet TDT v3 on Apple Neural Engine). Live-tested at 131× realtime on a 2h 09m English interview with 97.18% confidence. Optional speaker diarization (PyAnnote community-1), word-level timestamps, and multilingual support across 25 EU languages + opt-in Qwen3-ASR for zh/ja/ko/vi.
URL watch — nab is now RSS for the entire web. Any URL can be a subscribable MCP resource. Background poller with conditional GETs, semantic diff, adaptive backoff. Clients receive `notifications/resources/updated` on change.
Active reading via MCP sampling — during transcription, nab asks the host LLM to identify references and recursively looks them up via `nab fetch`. Inlines citations as footnotes. Novel pattern — no other ASR pipeline does this.
Full MCP 2025-11-25 spec closure — Streamable HTTP transport, structured logging, argument completion, sampling helper, roots helper, `list_changed` notifications, elicitation form + URL mode. Top 1% of MCP servers in the wild.
Apple Vision OCR — 15 languages, ANE-accelerated, zero model download. Integrated into nab fetch (auto-OCRs images with thin/missing alt text, inlines `[Image: ]` annotations in the markdown output).
Cross-platform backends — sherpa-onnx + whisper-rs behind feature flags for Linux/Windows/Intel macOS.
nab + hebb composition — `nab analyze --diarize --include-embeddings` auto-matches speakers against hebb's voiceprint database. `nab fetch` auto-saves URLs to hebb's `kv:urls` namespace. Full sovereign multimodal stack.
nab models fetch fluidaudio — persistent install of the FluidAudio Swift CLI. Survives reboots (no more `/private/tmp` fragility).
Stats
- 13 commits in this release
- ~20,000 lines of Rust added
- 1187 tests passing, 0 errors, 0 deprecation warnings
- 0 commercial API dependencies in the default composition path
Full changelog
See CHANGELOG.md for the complete list.
Installation
```bash
cargo install nab --version 0.7.0
nab models fetch fluidaudio # one-time: clone + build FluidAudio Swift CLI
nab analyze my-video.mp4 --diarize
```
See docs/getting-started.md for full installation options.
Companion repo
Works standalone, but unlocks more when paired with hebb v0.4.0 (voiceprint DB + MCP-as-database) for named speakers and personal web memory.
Routine maintenance release for MikkoParkkola/nab.
Changelog
Full Changelog: https://github.com/MikkoParkkola/nab/compare/v0.6.7...v0.6.8
Routine maintenance release for MikkoParkkola/nab.
Changelog
Full Changelog: https://github.com/MikkoParkkola/nab/compare/v0.6.6...v0.6.7
Routine maintenance release for MikkoParkkola/nab.
Changelog
Full Changelog: https://github.com/MikkoParkkola/nab/compare/v0.6.5...v0.6.6
- All 8 MCP tools advertise outputSchema and return structured_content
Full changelog
Changed
- All 8 MCP tools now advertise
outputSchema+ returnstructured_content - Extract truncation constants, consolidate schema helpers
- Benchmark tool reports error count per URL
- README: remove unlisted Windows binary, update test count to 907
Fixed
- Dockerfile: Rust 1.93 + proper build deps for Glama
- CHANGELOG: correct rust-mcp-sdk version reference
- MCP tools `submit`, `login`, `validate` return `structured_content` alongside text
- MCP `benchmark` tool reports error count per URL instead of silently dropping failures
Full changelog
Fixed
- Dockerfile: Rust 1.93 (was 1.87), add build-essential/cmake/clang for crypto deps
- Dockerfile:
--no-default-featuresto skip BoringSSL/QUIC for faster Docker builds
Changed
- MCP tools
submit,login,validatenow returnstructured_contentalongside text - MCP
benchmarktool reports error count per URL instead of silently dropping failures - CHANGELOG entries for 0.6.1–0.6.4
- Hidden section stripping (removes whitespace sections), noise section stripping (security advisories, cookie banners, newsletter signups), smarter fallback to direct html2md when readability drops tables, and markdown cleanup (strips base64 data URIs and empty link artefacts)
- Added `glama.json` for server ownership verification
- Added Dockerfile for server inspection and tool detection
Full changelog
What's New
Improved HTML-to-Markdown Pipeline
- Hidden section stripping:
<details>,<noscript>,<dialog>removed before readability - Noise section stripping: Security advisories, cookie banners, newsletter signups stripped
- Smarter fallback: Falls back to direct html2md when readability drops tables
- Markdown cleanup: Strips base64 data URIs and empty link artefacts
Glama MCP Directory
- Added
glama.jsonfor server ownership verification - Added Dockerfile for server inspection and tool detection
- Added Glama score badge to README
Full Changelog
https://github.com/MikkoParkkola/nab/compare/v0.6.2...v0.6.3
Minor fixes and improvements.
Full changelog
Transitive dependency updates via cargo update. All direct + transitive
dependencies at latest versions. Zero outdated on deps.rs.
Full changelog: https://github.com/MikkoParkkola/nab/compare/v0.6.1...v0.6.2
- All dependencies updated; ensure code aligns with new versions (especially `rand` 0.10 and `rust-mcp-sdk` 0.9).
- Contact emails in CODE_OF_CONDUCT.md and SECURITY.md replaced with actual address.
- `rand` API migration from 0.9 to 0.10 (RngExt changes)
- `rust-mcp-sdk` schema and message_observer updates from 0.8.3 to 0.9
Full changelog
Fixes
- All dependencies updated — 0 outdated (was 7), including breaking changes:
rand0.9→0.10 (RngExt API migration)rust-mcp-sdk0.8.3→0.9 (BTreeMap schemas, message_observer)coset0.3→0.4 (WebAuthn types)roxmltree0.20→0.21,tungstenite0.24→0.28,rquickjs0.9→0.11,criterion0.6→0.8
- CI green — fixed rustfmt compliance for Rust 2024 edition
- Contact emails — replaced non-existent
*@parkkola.devwith actual address in CODE_OF_CONDUCT.md and SECURITY.md - SECURITY.md — added v0.6.x to supported versions
Install
cargo install nab
# or
brew install nab
# or
cargo binstall nab
Full changelog: https://github.com/MikkoParkkola/nab/compare/v0.6.0...v0.6.1
- Public functions now return `Result<(), NabError>` instead of generic error types.
- 13 internal re-exports removed from `lib.rs`.
- SSRF validation returns `NabError::SsrfBlocked` instead of a generic error.
- `NabError` typed error hierarchy with 9 semantic variants (e.g., `InvalidUrl`, `SsrfBlocked`).
- Config structs replace positional parameters across all CLI commands.
- Structural refactoring: monolithic files split into focused submodules, none exceeding 800 LOC.
Full changelog
Highlights
Typed error hierarchy — NabError with 9 semantic variants replaces bare anyhow::Error at public API boundaries. Consumers can now match on InvalidUrl, SsrfBlocked, ProviderError, AuthError, etc.
Structural refactoring — 5 monolithic files (up to 2172 LOC) decomposed into focused submodules. No file exceeds 800 LOC. Public API surface reduced (13 internal re-exports removed).
Safety hardening — ~10 unwrap()/expect() calls replaced with proper error propagation. UTF-8 truncation panics eliminated.
What's New
NabErrortyped error hierarchy (9 variants)- Config structs replace positional parameters across all CLI commands
- 6 shared helpers consolidated in
cmd/mod.rs
Breaking Changes (Library API)
- Public functions now return
Result<T, NabError>instead ofResult<T, anyhow::Error> - 13 internal re-exports removed from
lib.rs - SSRF validation returns
NabError::SsrfBlockedinstead of generic error
Bug Fixes
- Silent TOML field mismatch in
concurrent_fetch_custom_item_limit - UTF-8 truncation panics across cmd/ layer
- SPA status messages moved from stdout to stderr
Install
cargo install nab
# or
brew install nab
# or
cargo binstall nab
Full changelog: https://github.com/MikkoParkkola/nab/blob/main/CHANGELOG.md
- Arena allocator implementation
- PDF support added
- Content router introduced
Full changelog
What's Changed
- feat: arena allocator, PDF support, content router, submit & login by @MikkoParkkola in https://github.com/MikkoParkkola/nab/pull/18
New Contributors
- @MikkoParkkola made their first contribution in https://github.com/MikkoParkkola/nab/pull/18
Full Changelog: https://github.com/MikkoParkkola/nab/compare/v0.3.0...v0.4.0
Routine maintenance release for MikkoParkkola/nab.
Changelog
Full Changelog: https://github.com/MikkoParkkola/nab/compare/v0.2.0...v0.3.0
- HTTP/3 support
- JavaScript execution
- Cookie authentication
Full changelog
Initial release - Ultra-minimal browser engine
Features
- HTTP/3 support
- JavaScript execution
- Cookie authentication
- Anti-fingerprinting
Binaries
- microfetch-aarch64-apple-darwin - CLI tool
- microfetch-mcp-aarch64-apple-darwin - MCP server
- libhtml2md-aarch64-apple-darwin.dylib - HTML to Markdown library
Checksums
See checksums-sha256.txt