Specialized scientific agent for AD-enabled simulators built on the Jutul framework.
Project description
jutul-agent
A scientific AI agent for differentiable simulators built on the Jutul framework. Ask for a simulation in plain language. The agent sets it up, runs it, analyses and plots the results, and iterates: fixing mistakes and refining the next run.
The browser UI (jutul-agent web): chat on the left; interactive plots and reports pinned in a canvas on the right. On the left, a Fimbul geothermal doublet showing the 3D temperature field around the wells over time. On the right, a BattMo C-rate study with voltage curves, an attempts map, and a written report.
Quickstart
Install uv and Julia (via juliaup). Then:
uv tool install jutul-agent
jutul-agent key openai # save a provider key (Anthropic and Google work too)
mkdir my-study && cd my-study
jutul-agent init --sim battmo # jutuldarcy | battmo | fimbul | mocca
jutul-agent web # browser UI, or: tui, or run "<prompt>"
Local models through Ollama need no key. init
precompiles the Julia and plotting stacks once (a few minutes), so sessions
then start in seconds, and jutul-agent doctor checks the setup if anything
looks wrong. Keep it current with jutul-agent upgrade.
One folder is bound to one simulator and its Julia environment, so use a separate folder for each. The browser UI opens at http://127.0.0.1:8742 and runs locally for a single trusted user. The full installation and usage guide covers workspaces, interfaces, and models; to work on jutul-agent itself, clone the repo (see Development).
Supported simulators
--sim |
Package | Domain |
|---|---|---|
jutuldarcy |
JutulDarcy.jl | Reservoir / multi-phase flow |
battmo |
BattMo.jl | Lithium-ion (and other) battery cells |
fimbul |
Fimbul.jl | Geothermal (ATES, BTES, doublet, EGS) |
mocca |
Mocca.jl | Adsorption-based CO₂ capture (PSA / VSA / TSA) |
What makes it work for scientific computing
- A persistent Julia REPL per session. State, loaded packages, and compiled methods carry across turns, and a first solve is fast because each simulator ships a precompiled warm package.
- The agent reads real source. Every package in the environment is on disk at
its real
pkgdirpath (read-only in the shared depot), so answers come from the installed version, not from memory. - Everything is recorded. Each session writes a trace of every message, tool call, and artifact. Transcripts and the benchmark grade against it.
- Models are interchangeable: OpenAI, Anthropic, Google, or local models via Ollama, switchable mid-session.
Documentation
The full documentation lives at sintef-agentlab.github.io/jutul-agent (source in docs/): using the agent, how it works (architecture, the Julia kernel, the trace), and extending it (adding a simulator, improving the agent, evaluation).
Development
Work from a clone instead of a tool install. uv run resolves the
jutul-agent command from the checkout, so run every command through it
(uv run jutul-agent ...); upgrade with git pull && uv sync.
git clone https://github.com/SINTEF-agentlab/jutul-agent
cd jutul-agent
uv sync --extra eval
uv run pre-commit install
uv run ruff check . # lint
uv run pytest # unit tests (integration and live skipped)
uv run pytest -m integration # adds the Julia-requiring tests
uv run jutul-agent eval canary # bench canary
Developed at SINTEF.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jutul_agent-0.1.0.tar.gz.
File metadata
- Download URL: jutul_agent-0.1.0.tar.gz
- Upload date:
- Size: 2.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5724a23f3fb962ad9c78bbec44a783dac2e4154087a9d6352ad4153ed3512d72
|
|
| MD5 |
2db352d87f5a31656769c9425bbf4c50
|
|
| BLAKE2b-256 |
e17f913c185c0d54ff09c4804776891d9e82ef90f5ba86dc3a939d4da9f9121f
|
File details
Details for the file jutul_agent-0.1.0-py3-none-any.whl.
File metadata
- Download URL: jutul_agent-0.1.0-py3-none-any.whl
- Upload date:
- Size: 561.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c41a44bf8e70aa2265cd9b4f0ffb629734f64e7c854267e1b34e8a9503e4618c
|
|
| MD5 |
0e89f27b2f85f81c6750ff3c82676527
|
|
| BLAKE2b-256 |
26ff7bb2f3950020ddcb3d7639ad8bd135b5c19b7e97767b5ead469adff03bd1
|