Skip to content

Releases: halonyx-io/dethrottled

Dethrottled 1.4.1 — clearer hardware comparisons and Halonyx style

Choose a tag to compare

@davidjangel davidjangel released this 04 Nov 16:20
523c2bb

Dethrottled's showcase now describes the hardware rather than using hostnames, and follows Halonyx's charcoal, off-white and cyan visual style.

  • ARM64 edge device: eight cores (four Cortex-A55 + four Cortex-A78), 11.29 GiB OS-visible RAM, Ubuntu 24.04.5.
  • x86_64 mini PC: AMD Ryzen 7 5800U, eight cores / sixteen threads, 30.76 GiB OS-visible RAM, Debian 13.
  • New hardware comparison graphic; specifications appear alongside benchmark charts. Architecture, recovery and worker diagrams share the same palette and hierarchy.
  • Showcase images stay inline without image-only links. Documentation and explanatory reports use architecture/device-class labels; raw capture IDs remain stable for evidence traceability.

This documentation patch also publishes the corrected README on PyPI. Benchmark values are unchanged and refer to the retained 1.4.0 cohort. Application behavior is unchanged apart from version identity and its matching default user-agent string.

python -m pip install --upgrade dethrottled==1.4.1
dethrottled stack up
dethrottled stack status

Docker Engine and Compose are prerequisites. Package installation starts no services. The managed default stack includes the API, browser, SearXNG, Crawl4AI and format worker; media/layout remain optional profiles.

Validation: 631 local tests passed; 67 skipped and two network tests deselected. Ruff, generated HTTP/MCP references, 58 documentation pages, 367 links/image paths, metadata and bundled deployment-source checks passed. All eight graphics were rasterized and reviewed; GitHub preserved fourteen inline image placements and PyPI preserved four README images. The wheel started five ready services and passed 21/21 browser/document contracts plus worker-restart restoration on both native architectures, outside the source checkout. All fourteen checks on the released commit subsequently passed, including macOS/Windows/Python and both native container jobs. The Trusted Publishing workflow completed successfully; attached wheel/source hashes match PyPI. The packaged deployment bundle is byte-identical to the one used for both local native validations.

Complete native CI · Successful PyPI publisher

Post-publication checks passed on the ARM64 edge device using both the actual PyPI package and a fresh v1.4.1 clone: five services ready, 21/21 functional contracts and four-storage worker-restart restoration per route. Fresh optional libraries and full-profile startup also passed; uncached inference workers report initialization honestly. The package-managed default stack is running at 127.0.0.1:8787. Existing mini-PC production services were untouched.

See the attached installation-verification-1.4.1.json for commands, timings, dependency versions, original record hashes and per-case results; native-verification-1.4.1.json contains both native candidate runs.

Live presentation verification also passed on GitHub and the browser-rendered PyPI page: four README graphics, zero image links. A plain HTTP PyPI request received a Client Challenge; the explicit /drive browser read loaded the actual project page. PyPI proxies its image URLs through Camo; decoded sources match the expected graphics. This single-page observation is retained in presentation-verification-1.4.1.json and is not a new general anti-bot benchmark.

Dethrottled 1.4.0 — complete installation and measured native stacks

Choose a tag to compare

@davidjangel davidjangel released this 04 Nov 10:52
e8bb9b4

Dethrottled now ships the complete default engine through PyPI-managed Docker workers, without requiring a Git checkout.

pip install dethrottled==1.4.0
dethrottled stack up
dethrottled stack status

Docker Engine and Compose are prerequisites. --profile media, layout and full add local inference workers. Explicit project/port selection supports isolated installations. Shutdown preserves data and downloaded models; package installation itself starts nothing.

This release also fixes headed-tab activation and popup-navigation races found during fresh ARM64 validation. Restored IndexedDB is checked before exposing a resumed session, with bounded recovery and preserved checkpoints on failure. Port probing permits immediate POSIX restarts while still refusing active listeners.

The redesigned documentation includes original architecture/workflow/profile diagrams and charts generated from retained two-device evidence. the ARM64 edge device and the x86_64 mini PC both passed 63 browser/document contracts, three restart checks, 33 format-retention trials and 108 controlled concurrency requests. Fifty live search questions, thirty fixed fetch targets and six research tasks per device preserve failures alongside successes. Native speech and layout tests passed on both architectures.

These measurements establish specific capabilities and costs, not universal source access or semantic accuracy. Fresh fetches assessed ok: 26/30 on the ARM64 edge device, 27/30 on the x86_64 mini PC. Research tasks with readable sources: 5/6 and 6/6. Production was not changed during this validation.

Post-publication verification passed on the ARM64 edge device using both the actual PyPI 1.4.0 package and a fresh clone of the release tag: five services ready, 21/21 functional contracts and 1/1 four-storage restoration per route. GitHub release artifacts match the PyPI SHA-256 hashes.

Dethrottled 1.3.0 — bounded DDG + SearXNG discovery

Choose a tag to compare

@davidjangel davidjangel released this 03 Nov 02:53
897211c

Default discovery now combines DDG Lite/HTML/TLS/browser with small Yahoo and Yandex supplements through SearXNG. DDG retains its source order and ten-choice family budget; each supplement contributes at most three choices, novel supplements alternate, and the final menu defaults to and is capped at fifteen unique URLs. There is no automatic search pagination. Fast remains DDG-only; news and academic sources remain deliberate profiles.

Research keeps ten sources by default, permits twenty on request and admits at most twenty-four unique candidate URLs across facets, including up to four replacement candidates. Transport/attachment recovery remains separate from the primary-source budget. HTTP/MCP schemas, public REST validation, capability metadata and docs agree.

The recorded 400-query experiment supports compact supplementation but does not establish a dependable end-to-end gain from XGBoost, semantic inference or deeper pagination, so those are not added to defaults. Automated relevance labels and their uncertainty, per-query wins/losses, acquisition failures and page-read results are retained in the repository.

Validation: 615 offline tests passed; lint and documentation checks passed; real adapter transport checks exercised fifteen search results and twenty research sources. Deployed public REST/MCP checks confirmed version 1.3.0 and matching backend identity. One public default search returned twelve unique choices in 1.24 seconds; a two-source research smoke test completed in 10.2 seconds. These are deployment observations, not broad performance guarantees.

Compatibility: search requests above fifteen are now rejected (previous ceiling sixteen); default HTTP/MCP requested menu increases from ten to fifteen. Research's source ceiling increases from sixteen to twenty. MCP dependency remains pinned to the maintained 1.30.0 SDK.

Evidence and per-query results: https://github.com/halonyx-io/dethrottled/tree/main/evaluations/search-policy/results/2026-11-03

Dethrottled 1.2.0 — hard limits for compact source menus

Choose a tag to compare

@davidjangel davidjangel released this 02 Nov 18:54
b7afe57

Ten choices is now a hard DDG limit, rather than a default that callers could expand to fifty.

  • DDG Lite/HTML/TLS/browser share ten choices. Automatic search pagination and the default browser Bing race are removed; the direct fallback defaults to DuckDuckGo.
  • Each supplementary engine gets three choices, six supplements total. Supplements append after the trusted primary order; the complete unique menu is at most sixteen. No automatic general-web SearXNG supplementation is enabled.
  • Research defaults to web-only and shares these budgets across facets before reads and coverage output. It does not expose another ten URLs for every subquery.
  • HTTP/MCP reject oversized discovery requests. Drive snapshot/network lists are capped at ten (Bing snapshots three); corpus search returns at most ten matches. Document text limits, retained-document continuation, OCR and file-format capabilities retain their existing capacities.

This deliberately removes the former larger-menu contract. Existing agents should refresh MCP tools/instructions; requests for fifty results now fail validation. A novel supplementary URL is not automatically trustworthy. Small live checks found useful Docker material alongside off-task Python and academic suggestions, so supplementary profiles remain deliberate options, not a newly claimed accuracy improvement.

Validation: 680 offline full-image tests passed, 15 skipped; native AMD64/ARM64 default-Compose gates and the Python/Windows/macOS matrix pass. Headed-browser fixtures verify provider caps and no next-page requests. Public HTTPS MCP on szbox returned 10 default DDG choices and 10 + 1 Mwmbl choices on an explicit supplemented request, preserving primary order, and rejected oversized search/research/drive/corpus calls. Public REST rejected oversized search/research requests. API/MCP identities and workflow hashes match; temporary test credentials were revoked.

Policy, small live checks and limitations · Current limits · CI

Attached verification records the deployed limits and public transport checks. No new paid service, API dependency or runtime package was introduced.

Dethrottled 1.1.3 — measured source choices and dependable cooldowns

Choose a tag to compare

@davidjangel davidjangel released this 02 Nov 18:05
8bd208f

Search menus stay in source order after a 120-question source-choice study, with 80 development and 40 held-out questions. HTTP now defaults to ten choices, matching MCP. Agent instructions explain when to read, expand to 20 or rewrite around a missing fact; the 50-result ceiling remains available. Automatic Bing/Brave fusion and snippet reranking were not justified on the tested host and are not enabled.

This release fixes two upstream-control gaps: a sole/all-blocked engine selection no longer bypasses its cooldown, and the pinned Compose SearXNG honors longer Retry-After suspensions. MCP imports the API's shared workflow instead of maintaining a duplicate. Staged tests caught and reproduced stale instructions despite matching application versions.

The held-out DDG10 menu averaged 2.53 useful choices in the first three; equal-weight Bing/Brave RRF averaged 1.73. These are model-assisted menu judgements, not verified-answer accuracy. DDG20 improved estimated evidence coverage by 5 percentage points with more off-topic material. Bing browser/locale controls were more promising than its default scraped route, but need broader validation. Brave still returned 429 at the 30-minute recovery probe.

Validation includes 677 offline tests in the full API image (15 skipped), native AMD64/ARM64 default-Compose gates, 36/36 paced size checks, 9/9 bounded burst checks and 283 unique fetched URLs. Production on szbox reports 1.1.3 across API/MCP; authenticated public HTTPS MCP returned 10 default and 20 explicit results with matching workflow hashes. The existing shared helper also produced a busy-client 429, retained separately; a temporary independent test identity passed and was revoked afterward. No paid provider, ranking API or new runtime package was added.

Full report, methods and limitations · CI

Attached replay data includes frozen lists, labels, original provider ranks, selection lock, per-query comparisons and hashes. Ranking replay needs only Python's standard library. Credentials, browser state and bulk fetched third-party page bodies are excluded. The separate production verification records the exact deployed identity and functional checks.

dethrottled 1.1.2 — broader autonomous discovery and audited limits

Choose a tag to compare

@davidjangel davidjangel released this 02 Nov 13:04

Completes the coverage and reproducibility improvements assessed in the November 2 audit. Search accepts up to 50 results, research up to 30 sources and 10 additional queries, and explicit text reads up to one million characters. Defaults remain smaller; the limits page explains bounded jobs and continuation.

1.1.2 fixes automatic broad-search escalation. With cheap TLS discovery enabled, a request for 50 results no longer stops at ten: it invokes browser discovery, merges unique URLs and retains cheap results on browser failure. Diagnostics distinguish fulfilled and partial breadth. Old short browser-cache entries are bypassed for the changed semantics. Small requests retain the fast cheap path.

Before publication, an isolated API plus actual MCP SDK returned 50 unique URLs through the complete TLS/browser path in about 4.36 seconds (TLS 10, browser 50). This demonstrates additional discovery, not 50 independent facts or answer accuracy. The failed public 1.1.1 check is retained in the evidence. No general hostile-source breakthrough is claimed.

The audit changes include complete dependency locks for both adapters, a pinned multiarchitecture Python base, tested runtime dependency upgrades, backend-version diagnostics, compact MCP JSON preserving native payloads, and explicit documented limits. Four previously affected dependency groups have no known advisories in the checked updated locks. OpenTelemetry remains because FastAPI requires it; two unrelated major dependency upgrades remain held for compatibility review.

658 regression tests pass. All 14 CI checks pass, including native AMD64/ARM64 browser pagination, 21 fresh-stack contracts and restart restoration per architecture. SDK 1.30.0 stays pinned. The browser worker from 1.1.1 is unchanged; upgrading from older releases requires rebuilding it as well as the API. Host adapters need updated source/version metadata and the full adapter lock; reconnect MCP clients to refresh cached schemas.

Exact-commit CI · Whole-path evidence and negative results · Audit assessment · Limits and defaults

Production verification: public MCP returned 50 search results and a 68,405-character retained document; REST/MCP browser handoff, native clicks, replay and caller isolation pass. Bridge and backend both report 1.1.2; all rebuilt workers are ready, real AMD WebGL is verified, and retained SQLite databases pass integrity checks. PyPI installation/import succeeds and file hashes match the release build. Checksummed raw verification records are attached below.

Post-merge main CI also passes all 14 checks.

Dethrottled 1.1.1 — verified broad browser discovery

Choose a tag to compare

@davidjangel davidjangel released this 02 Nov 12:37

Correction: superseded by 1.1.2. The worker gains below were verified, but the final public check exposed a core short circuit when cheap TLS discovery was enabled: broad requests still stopped at ten results. 1.1.2 fixes and tests the whole MCP → API → TLS/browser path. The original observations below describe the worker, not the complete production pipeline.

This completes the browser-discovery path behind the broader limits introduced in 1.1.0. The API now forwards the requested count to the browser worker; requests above 12 results collect usable engine results and follow same-origin next-page controls instead of stopping at the first usable page.

Small searches keep the fast first-page race. Broad requests remain bounded by five pages per engine and the existing six-second engine budget. A later blocked page retains earlier usable results and reports the failure; each result preserves its source engine. No new upstream, account, key or proxy is required.

Measured on one fixed query with software rendering: 10 URLs in ~0.91s before, 50 in ~3.77s after, with the original URLs retained. The additional results include mirrors and older documentation versions; this is more discovery, not proof of 50 independent facts or improved answers. The native Chromium harness separately verifies 50-anchor extraction, pooled results, first-page-only small requests, the page budget and partial results after a later 403.

654 regression tests pass. Both native AMD64/ARM64 CI jobs run the new browser harness alongside the existing fresh-stack and restart gates. The 1.1.0 dependency locks, higher reading/research limits, compact MCP framing and backend identity diagnostics are retained. SDK 1.30.0 remains pinned.

Rebuild both the API and browser worker. Existing data/checkpoints are preserved. Host-managed MCP adapters need the current version metadata to advertise the correct release. Refresh client tool schemas after upgrades.

Methods, raw observations and pilot failures · Audit assessment · Coverage limits

All 14 checks pass on the exact release commit, including native AMD64/ARM64 browser pagination checks and 21 fresh-stack contracts plus restart restoration on each architecture.

Dethrottled 1.1 — broader agent coverage and audited dependencies

Choose a tag to compare

@davidjangel davidjangel released this 02 Nov 12:04

Dethrottled 1.1 gives agents room to request broader evidence while keeping acquisition, admission and continuation bounded.

More useful coverage

  • Search accepts up to 50 results.
  • Research accepts 30 sources, 10 additional facets, and 120,000 characters per source. Defaults rise to ten sources and 12,000 characters.
  • Fetch, retained-document reads and explicit browser text/HTML actions accept one million characters. Automatic headed recovery retains its staged acquisition and can capture more visible text from a partial HTML read.
  • Publisher diversity is a preference rather than a hard two-document quota: research can use additional primary documents when fewer publishers are available.
  • MCP result entries, structured content and native images retain their shape. JSON text is compact, and the docs explain parsing entries individually.

Audited dependencies and deployment

The core runtime refreshes 27 existing pins and resolves to 76 packages, including tested PyMuPDF 2 and Resiliparse/FastWARC 2. The complete 32-package adapter runtime is locked, and all six Python Dockerfiles pin a multi-architecture base digest. This does not freeze every apt download or external asset byte.

The dated package-advisory scan flags four baseline package groups and none in the candidate locks. That is a database observation, not proof that no vulnerabilities exist. OpenTelemetry API stays because FastAPI requires it. Dateutil 4 provenance agrees with upstream, but its compatibility change and the Hub 2 HTTP-client migration are outside this update; their existing versions remain pinned.

MCP health now reports backend identity and warns when it is mismatched or unavailable, with ten-second cached refresh. Equal version strings alone do not establish matching code or correct answers. SDK 1.30.0 remains pinned.

Verification and limits

652 tests pass, and all 14 release CI checks pass. Native AMD64 and ARM64 each pass 21 fresh-stack contracts plus restart restoration, without GPU/.env/prior volumes. The real browser fixture retains a fact after 158,911 text characters, beyond the old 120,000 ceiling. Real SDK/HTTP fixtures exercise both MCP and REST limits, native image preservation, strict arguments, token revocation and backend replacement.

Paired TLS checks retain the existing Python documentation facts but produce no additional hostile-source reads. Reddit remains unreadable through TLS alone in that test, and Crunchbase/G2 remain blocked. Existing headed-browser recovery remains part of the engine. No general anti-bot, answer-accuracy or paid-provider superiority claim is made.

See the audit assessment and raw evidence, coverage limits and operations guide.

Host-managed adapters should install requirements/adapters.lock, update adapter code/version metadata and restart. Check existing MCP_MAX_RESULTS/MCP_MAX_CHARS overrides: older values still restrict new code. Preserve data/checkpoints when recreating services. The independent PDF print utility deliberately remains on its tested 0.9.4 runtime.

Dethrottled 1.0.1 — maintained MCP SDK and clear release identity

Choose a tag to compare

@davidjangel davidjangel released this 02 Nov 09:07

This maintenance release upgrades and verifies the public MCP/REST adapter stack after 1.0.

  • MCP SDK 1.28.1 → 1.30.0, the maintained 1.x release. SDK 2.x requires a separate API migration; it is not a drop-in dependency update.
  • MCP initialization now reports Dethrottled 1.0.1 instead of the SDK version. Adapter /health reports version and sdk_version separately; backend capabilities still identify the engine reached.
  • FastAPI/Uvicorn adapter versions now match the versions already tested in the core runtime. Container and host-managed environments share requirements/adapters.txt.
  • Both native Docker CI jobs now exercise an actual MCP client/server offline: initialization identity, all 20 tools, browser-action schemas, unexpected-argument rejection, private-target rejection, authentication and token revocation.

No acquisition, ranking, extraction or browser-recovery policy changes. This release improves dependency maintenance, release identification and transport regression coverage; it does not claim additional source reads or a latency improvement.

See deployment and version identity and the maintenance evaluation.

Host-managed MCP deployments must install src/dethrottled/__init__.py as dethrottled_version.py beside the adapter, install requirements/adapters.txt, and restart the adapter. Container builds include these automatically. Refresh client tool schemas after upgrading. Existing data volumes are retained.

All 14 checks pass on the exact release commit, including native AMD64/ARM64 adapter transport verification, fresh-stack contracts and restart restoration: release CI.

Publication and production verification completed: PyPI file hashes match these assets, installation from the public index succeeds, and public clients using SDK 1.28.1 and 1.30.0 both identify server/backend 1.0.1 with matching workflow instructions. Native browser operation, retained reads, replay and caller isolation pass through the public REST/MCP endpoints. All 14 post-merge main CI checks also pass. Machine-readable deployment/publication records and checksums are attached; these observations do not imply broader source coverage.

Dethrottled 1.0 — autonomous web evidence and native browser control

Choose a tag to compare

@davidjangel davidjangel released this 02 Nov 08:41

Dethrottled gives agents one self-hosted, keyless interface for discovering sources, reading evidence and operating a real browser. Its reading workflow escalates through HTTP, TLS impersonation, rendering and a headed browser, then presents retained evidence, provenance, gaps and concrete continuation actions.

What 1.0 delivers

  • A complete default Compose stack: API, Patchright browser, SearXNG, Crawl4AI and MSG/XLSB parsing. Native documents, OCR and MiniLM/E5 corpus models are included in the API image. No GPU, API key or .env file is required.
  • Automatic, bounded recovery: publisher representations, lazy content, expandable details, primary application responses and visitor state can be reached through the normal reading workflow. Agents can continue manually through /drive when needed.
  • Real browser operation: native controls, frames, popups, downloads, scoped sessions, operation replay and persistent checkpoints. MCP exposes the complete browser action vocabulary.
  • Evidence agents can continue: retained documents, page/row/range reads, source pixels where available, partial-content diagnostics and explicit provenance. Mixed error banners produce warnings without deleting useful material.
  • Optional local speech and PDF layout: docker compose --profile full up -d --build starts both; the API discovers them automatically. First use downloads model weights. These profiles require more memory than the default stack.
  • Portable, verifiable packaging: pinned Python runtime packages, baked corpus models and offline verification; native AMD64/ARM64 build and functional gates. Source installs remain available through PyPI.

All 14 CI checks passed on the exact release commit, including native AMD64/ARM64 fresh-stack contracts and restart restoration: release CI. Machine-readable release verification and both architectures' functional evidence are attached below.

Recorded evidence

  • 648 tests passed locally; 15 skipped and two live-network tests deselected.
  • Fresh default stack without GPU or .env: 20/20 functional contracts plus restart restoration passed locally.
  • 22/22 controlled parser tasks passed. On the known pollution regression set, detections improved from 6/8 to 8/8; false flags stayed 0/10 and facts retained stayed 18/18. These are fixture results, not a population accuracy score.
  • Three fresh Reddit thread sessions on software and three with GPU recovered the predefined facts and exercised native comment-sort controls. Median navigation/read times were approximately 1.93s and 1.76s on the test host; this small sample does not establish a GPU advantage.
  • Actual authenticated MCP/REST probes and a fresh agent conversation completed the tested workflows. This is not a general agent success-rate estimate.

Crunchbase and G2 remained blocked, and CarGurus yielded no usable text. Dethrottled does not promise every source, solve every CAPTCHA, verify an agent's final answer or claim superiority to paid engines. OCR, speech and inferred layout require inspection when accuracy matters.

The release-gate report preserves protocols, timings, negative results and CI verification. Start with the documentation, agent integration and deployment configuration.

Install or upgrade

For the complete engine:

git clone https://github.com/halonyx-io/dethrottled.git
cd dethrottled
git checkout v1.0.0
docker compose up -d --build

For the Python package and optional Python readers:

python -m pip install --upgrade 'dethrottled[all]'

The Python package does not install Docker services, system OCR programs or model weights. Existing deployments must rebuild/recreate the changed services and update their adapters; publishing this release does not restart running installations. Preserve data/checkpoints and follow the upgrade guide.

Package publication verified

PyPI 1.0.0 was published successfully through the current repository's Trusted Publisher. Both PyPI file hashes match the wheel/source assets attached here. A fresh base install from the public index imports successfully and runs the CLI as version 1.0.0. See the attached publication-verification.json and SHA256SUMS.