Inspiration
Today's "AI scientists" mostly write papers about experiments whose results they report themselves. We wanted the opposite: an agent that does real computational research, choosing hypotheses, experiments and fidelities, and changing direction, without ever being able to invent a measurement, rewrite a test, or declare its own simulator valid. In VALO, Nemotron is the scientist; the harness is the laboratory.
What it does
You give VALO a research question in plain English, e.g. "Maximize efficiency of a III-V single-junction solar cell while reducing its surface area."
- Intake. The lead scientist (Nemotron 3 Ultra) reads the catalogue of simulated worlds, lists the ways the question can be read, and asks the researcher structured questions. It drafts a research specification. Trusted code checks every "can / cannot measure" claim against the catalogue. Only the human can approve the spec.
- World build and qualification. It builds a simulated world (Solcore/Sesame drift-diffusion for solar cells, or NVIDIA Warp for heat spreading). A qualification lab runs 16 fixed checks and issues a passport: trust state, the calibrated F1↔F2 error band, and the region where each fidelity is valid. A world that fails is quarantined and repaired.
- Research. The scientist opens tracks, writes hypothesis cards, and locks predictions (hashed) before any run. It designs experiments and picks a fidelity (F0 analytic, F1 depletion approximation, F2 drift-diffusion). The fidelity controller advises the cheapest admissible fidelity. 13 code gates refuse anything illegal: unlocked predictions, inadmissible fidelity, out-of-bounds designs, probing the sealed held-out conditions, over budget, out of scope.
- Judging. A deterministic judge compares locked predictions with measured runs: supported, refuted, unresolved or invalid. The model never writes a verdict.
- Wrap-up. Verification at the reference fidelity, a sealed held-out test revealed once, a referee/adjudicator council, and a report in which every number must carry a run or verdict id or it is dropped by the claim linter.
- Cockpit. A live web UI shows:
- an intake stepper;
- the world passport;
- an Research Tree;
- a best-so-far chart;
- evidence and report;
- full observability of every model call and its cost.
A real run (camp_6b88f4b0f7b8, on NIM, $0.26 total):
- 134 scientist turns and 386 real Solcore simulations (236 at F1, 150 at F2), with 31 refusals by gates.
- The scientist's main hypothesis, that the F1-optimal design transfers to F2, was refuted by the code judge: predicted +1.2%, measured −2.3% relative efficiency at F2.
- An F2 optimisation found 27.00% vs a 26.55% baseline. This is an exploratory lead, not a confirmed claim, and the report says so.
- The qualification lab quarantined a GaInP world variant for an F1/F2 ranking inconsistency.
How we built it
- Stack: Python 3.12, FastAPI with Server-Sent Events, SQLite (WAL) evidence ledger, Pydantic v2 and SQLAlchemy 2. The cockpit is vanilla JS with d3-org-chart.
- Models: NVIDIA Nemotron through Nebius Token Factory (the hosted configuration) and NVIDIA NIM (development), behind one OpenAI-compatible client. Roles are routed by tier:
- Ultra 550B for the lead scientist;
- Super-VL 120B for the specialists (hypothesis forger, methods, analyst, world builder, referee, writer);
- Lightning 30B for fast parsing and memory.
We use strict json_schema outputs with the thinking toggle per role. There is an automatic cross-provider fallback (NIM → Token Factory) on rate limits. Every call is ledgered with tokens, cost and request id.
- Physics: Solcore 5.10, Sesame drift-diffusion, tmm optics; NVIDIA Warp for the thermal world. And other world simulators.
- Science core: prediction locking, the judge, uncertainty widening from the passport, a fidelity controller, validity domains that work for any world, sealed held-out tests, quarantine and repair with stale-result propagation, and wrong-world detection.
- Memory: a port of Hindsight (FTS5 + dense embeddings + link expansion, fused by RRF). Code writes a belief timeline whenever a verdict or world change happens. Memory is never evidence.
- Literature: Tavily and arXiv, reranked.
- Built by: one person orchestrating a team of AI coding agents. Over 100 small reviewed commits and 1,069 automated tests.
Challenges we ran into
- Keeping the model honest without scripting it. We wanted the scientist free to choose, but never free to grade itself. The answer was hard gates in code plus a refusal that always says how to unblock, instead of a fixed pipeline.
- Fidelity gaps are real. F1 (depletion approximation) ranks designs differently from F2 (drift-diffusion). The agent's own hypothesis that "F1 optimum transfers" was refuted. The qualification lab must catch this, not the model.
Accomplishments that we're proud of
- Real end-to-end autonomous campaign on real physics, where the model never touched a number it reported.
What we learned
- The useful split is the model proposes, code disposes. Nemotron is very good at choosing what to try next. Trusted code must own what is true.
- Cheap fidelity is for refuting, not for claiming; a passport makes that enforceable.
- Long-running agents need state they can't lose: a ledger, a belief timeline and a digest, not a longer prompt.
What's next for Valo - AI Scientist
- More world kinds (tandem cells, PhysicsNeMo surrogates as a qualified fidelity).
Built With
- arxiv
- d3.js
- docker
- fastapi
- hindsight
- javascript
- nebius-token-factory
- numpy
- nvidia-nemotron
- nvidia-nim
- nvidia-warp
- openai-api
- optuna
- pydantic
- python
- server-sent-events
- sesame
- solcore
- sqlalchemy
- sqlite
- tavily
- tmm
Log in or sign up for Devpost to join the conversation.