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.
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.