Skip to main content

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.
  • Where the packages are fixed, such as a demo or a shared machine, init --sysimage bakes the whole Julia environment into a system image and sessions start with it already loaded. It is checked against the environment before every session, so an image that has fallen behind refuses to run instead of quietly using the old code.

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.

Metadata

Release files for jutul-agent 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jutul-agent 0.2.0
File Size Uploaded Provenance Actions
jutul_agent-0.2.0.tar.gz 2.3 MB Without provenance Details for jutul_agent-0.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for jutul-agent 0.2.0
File Interpreter ABI Platform Actions
jutul_agent-0.2.0-py3-none-any.whl Python 3 none any Details for jutul_agent-0.2.0-py3-none-any.whl

Total release size: 2.9 MB

Release files / jutul_agent-0.2.0.tar.gz

Download URL jutul_agent-0.2.0.tar.gz
Size 2.3 MB
Tags Source
SHA-256 checksum
How to use checksums
2a78c47d53bf3684a1eef8a26f8841edebb4675beb64e57c230e378bb0aea8a2
BLAKE2b-256 checksum
How to use checksums
d753f4b140f58cf7d55081a40c6cc735e2e51678e1f022342776cc06a26328e0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","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}

Release files / jutul_agent-0.2.0-py3-none-any.whl

Download URL jutul_agent-0.2.0-py3-none-any.whl
Size 653.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
03af09f7ae41a197055ca1d3f41173f1f06072241e3e2ff9d61ea148625e72cd
BLAKE2b-256 checksum
How to use checksums
c2835819fdf2950fa748f5e1758da637149cb6ddfb751102a391d1fc0c6101f4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","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}

Security for jutul-agent 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page