Skip to main content

Specialized scientific agent for AD-enabled simulators built on the Jutul framework.

Project description

jutul-agent

CI Simulators Docs PyPI License: MIT

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.

JutulDarcy    BattMo    Fimbul    Mocca

jutul-agent web UI: a Fimbul geothermal doublet with the 3D temperature field over time     jutul-agent web UI: a BattMo discharge-rate investigation with plots and a report

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 pkgdir path (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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jutul_agent-0.1.0.tar.gz (2.1 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

jutul_agent-0.1.0-py3-none-any.whl (561.4 kB view details)

Uploaded Python 3

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

Hashes for jutul_agent-0.1.0.tar.gz
Algorithm Hash digest
SHA256 5724a23f3fb962ad9c78bbec44a783dac2e4154087a9d6352ad4153ed3512d72
MD5 2db352d87f5a31656769c9425bbf4c50
BLAKE2b-256 e17f913c185c0d54ff09c4804776891d9e82ef90f5ba86dc3a939d4da9f9121f

See more details on using hashes here.

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

Hashes for jutul_agent-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c41a44bf8e70aa2265cd9b4f0ffb629734f64e7c854267e1b34e8a9503e4618c
MD5 0e89f27b2f85f81c6750ff3c82676527
BLAKE2b-256 26ff7bb2f3950020ddcb3d7639ad8bd135b5c19b7e97767b5ead469adff03bd1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page