Catalog PyPI
Back to packageRELEASE DETAILS

0.1.0

PyPI

agentic-elastemp

A LangGraph + Claude agent for the elastemp temperature-dependent elastic constants workflow

agentclaudeconstantselastempelasticlanggraphmaterialsphonopysciencevasp
Published14 Oct 2026
Direct dependencies7
Transitive dependenciesNot calculated

README

Version 0.1.0 documentation

agentic-elastemp

An LLM agent for elastemp, the workflow that computes quasi-harmonic, temperature-dependent elastic constants from VASP and phonopy. It is built with LangGraph and uses Claude.

You ask about a project in plain language. The agent can tell you where the project stands, run the next analysis step, explain why a VASP run failed, and summarize the results. It never runs or submits VASP jobs; you still do that.

Install

pip install agentic-elastemp

This also installs elastemp, LangGraph and the Anthropic client. Python 3.10 or newer is required.

API key

The agent needs a Claude API key. It reads ANTHROPIC_API_KEY from the environment or from a .env file in the current or project folder:

cp .env.example .env      # then fill in ANTHROPIC_API_KEY=...

.env is in .gitignore. Never commit a real key; .env.example holds empty placeholders only. To choose the Claude model, set ELASTEMP_AGENT_MODEL in .env or pass --model.

Use

elastemp-agent --workdir runs/TiN                                   # conversation
elastemp-agent --workdir runs/TiN --ask "What should I run next?"   # one question

Type exit (or press Ctrl+D) to leave a conversation.

Example:

you> The VASP jobs finished. Where do we stand?
   [tool] project_status()

agent> The static runs are back: 43 of 44 converged, 1 failed. deformation-3/strain-2 hit NELM
(electronic SCF did not converge). Every deformation still has at least 7 converged points, so
get_elastic can drop that point and refit. You could also rerun it with a larger NELM first.

you> Rerun make_bulk_dynamic.
   [tool] run_step({"step": "make_bulk_dynamic"})

agent> I haven't run it. make_bulk_dynamic would delete 11 Phonon_calculation folders that already
contain finished DFPT runs. Do you want me to go ahead and delete them?

How it works

The agent has four tools. All of them are deterministic code on top of elastemp:

ToolPurpose
project_statusWhich steps are done, which VASP runs are finished, failed or missing, and what comes next
run_stepRun one elastemp step. A step that would delete finished VASP runs (for example rerunning make_bulk_dynamic) is refused unless you explicitly confirm
inspect_runConvergence verdict (from vasprun.xml) and OSZICAR/OUTCAR evidence for one run
read_resultsElastic constants, moduli, stability, temperature dependence, consistency checks and flags
START -> agent --(tool calls)--> tools -> agent
               --(answer)--> verify --(ok)--> END
                                    --(invented numbers)--> agent (one rewrite)

Number check: after each answer, a verify node compares every number in it with the tool results. If the agent states a value that came from nowhere (an "experimental" value from memory, say), it is asked to rewrite the answer once. If it still does, the answer is shown with an [Unverified: ...] note.

Development

pip install -e ".[dev]"
pytest

The tests replace Claude with a scripted model, so they need no API key and make no network calls.

License

MIT. See LICENSE.

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 8

Native requirements
7 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
elastemp
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
elastemp<0.3,>=0.2.2runtime
langgraph
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
langgraph>=1.0runtime
langchain-anthropic
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
langchain-anthropic>=1.0runtime
pytest
Environment
{
  "extras": "",
  "marker": "extra == \"test\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
pytest>=7; extra == "test"runtime
pytest
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
pytest>=7; extra == "dev"runtime
build
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
build; extra == "dev"runtime
twine
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
twine; extra == "dev"runtime
ruff
Environment
{
  "extras": "",
  "marker": "extra == \"dev\"",
  "requires_python": ">=3.10",
  "evaluation": "NOT_EVALUATED"
}
ruff; extra == "dev"runtime

Distribution files

2 collected
agentic_elastemp-0.1.0-py3-none-any.whl

bdist_wheel · 18.52 KB · Python py3

Source file
agentic_elastemp-0.1.0.tar.gz

sdist · 20.7 KB · Python source

Source file

Repository

PENDING
karthik-balas/agentic-elastemp

Shared repository data · GitHub

License detected in repository
Not collected

Repository

PENDING
karthik-balas/elastemp

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 22:15 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:228bbcfb9cf61d64180306ff71a9fefa8cfee66de09a969421b9872ba6431bae

Other collected versions

View all collected versions →