Dinoer

The project

A fork of a browser-automation tool, narrowed to one question: can an agent's research be trusted, not just fast? Tested against that question directly — and the test did not go the way the fork expected.

Dinoer began as a fork of Diwall 1.21.0 (25 July 2026, later reconstructed 9 August 2026 from Diwall 1.23.0) — visual browser automation for LLMs, the tool this whole project’s execution core still comes from. What it kept: the ability to navigate, fill, click, wait, resolve a credential inside the browser process. What it dropped, entirely, in a from-scratch reconstruction on 9 August 2026: screenshots, Set-of-Mark, the vision model — the whole layer that let a model look at a page.

The bet was that a model does not need to see a page to use it — only to read it. What follows is what it took to find out whether that bet paid off.

The shape of how it grew

Three stages, and the third one is the one that changed the project’s own claim about itself.

Narrowing came first. The perception layer was removed, not replaced — extraire_texte (11 August) closed the one real gap it left, a way to read a page’s cleaned text when the accessibility tree alone was not enough.

Building the research pipeline followed: campagne.py orchestrating SearXNG discovery, light HTTP collection, escalation to the retained browser core only when a page needed it, and a delegated LLM writing the final report. A real territorial campaign (11–12 August) proved the naive version of that last step — concatenate the corpus, truncate at 60,000 characters — silently dropped the most relevant pages on a large corpus. Temporal pre-filtering and semantic ranking fixed it, measured against the same corpus rather than assumed fixed.

Testing the actual thesis came last, and it is the largest part. On 14 August, a live run caught the delegated model making twelve web searches of its own — a real containment gap, closed the same day by a project-local opencode.jsonc, with the residual gap (a model denied websearch reaching curl through bash instead) documented rather than hidden. Hours later, a real head-to-head against a single unprepared Perplexity query found three pages Dinoer’s own SearXNG-driven discovery had never surfaced — not a bug, a structural reach difference between an authenticated commercial search backend and a local, unauthenticated one. The project’s own claim about itself was rewritten the same evening, in place, not appended below the old one: not “beats generalist search,” but “a traceable, reproducible synthesis of a locked corpus.” The full test →

Three things that did not change, and one that did

It runs on your machine. Collection, credentials, the encrypted directory — the default has never been anything else. Search delegates to a SearXNG instance you point it at, local or remote; synthesis delegates to a model you configure. Neither is Dinoer’s own.

It says what it is. Respectful-navigation doctrine, inherited from Diwall unchanged: a declared identity by default, a counted passage, no attempt to defeat a site that closes its door.

What changed: Diwall’s agent decides nothing beyond what a scenario file says. Dinoer’s research pipeline delegates real interpretive judgment to a model — what counts as a match, how to group duplicate events across pages — contained by opencode.jsonc, not eliminated. Stating the gap precisely, rather than claiming a seal that does not exist, is the position this project holds itself to.

The development log

Continuous, dated, reverse chronological — including the reversal above, written the evening it happened. A retrospective account would have smoothed it into a straight line; the log does not.

Development log →

Who builds it

Three participants, distinct roles, stated plainly rather than smoothed into a single voice.

Ronan Davalan — architect and arbiter: product vision, security requirements, direction. Every architectural decision is validated by him.

Claude Code (Anthropic) — systems engineer and lead developer: fork of Diwall’s execution core, the research pipeline (campagne.py, lib/searxng.py, lib/fetch_leger.py, lib/selection_candidats.py, lib/extraction.py, lib/tables_reference.py, lib/cache_recherche.py), removal of the perception layer. Principal author of the source code.

Gemini (Google) — synthesizer and strategic advisor: independent architectural analysis, cross-validation of technical decisions, resolution of logical conflicts.

Where it is now

Four tools (shot.py, rpa.py, campagne.py, journal.py), an encrypted credential directory, scenarios validated against a schema before a browser starts, four languages of documentation. A .deb package and git-clone install, both maintained — see Downloads.

And a positioning that narrowed once already, on real evidence, and will narrow or widen again the same way — not by intuition.

Limits → · What Dinoer does not compete on →