materials-cli
A config-driven funnel for high-throughput materials discovery — on your own machines.
You write one YAML file saying what to explore and where each stage runs. You run one command.
materials-cli run
flowchart LR
A(compose) --> B(structure) --> C(screen) --> D(["calculate<br/><i>optional</i>"]) --> E(extract)
classDef s fill:#1E3A5F,stroke:#38BDF8,stroke-width:1px,color:#E0F2FE
classDef o fill:#3B2F63,stroke:#A78BFA,stroke-width:1px,color:#EDE9FE,stroke-dasharray:4 3
class A,B,C,E s
class D o
| Stage | What it produces | Science it uses |
|---|---|---|
| compose | charge-balanced compositions from your element set | SMACT |
| structure | candidate crystals per composition — 3D / 2D / 1D symmetry families | PyXtal |
| screen | ML relaxation + a convergence/sanity verdict | MACE |
| calculate (optional) | DFTB+ energies with self-healing convergence retries | your own AiiDA |
| extract | one OPTIMADE-shaped record.json per material |
— |
Every stage runs on your local CPU/GPU or on a machine you own over SSH (optionally through SLURM). State lives in SQLite, results in plain files — no server, no database to install, nothing on anyone else's infrastructure. Interrupt a run at any point; running it again picks up exactly where it stopped.
Install
pip install materials-cli
Or get a self-contained install (its own venv under ~/.local/share/materials-cli, a
launcher on your PATH, upgradeable later with materials-cli update):
curl -fsSL https://raw.githubusercontent.com/Quantum-ARISE-Acad/qa-materials-cli/main/install.sh | bash
The base install is deliberately light — it will never pull in torch or a science stack.
Quickstart
materials-cli init # scaffold materials-cli.yaml + check your environment
$EDITOR materials-cli.yaml # your elements, your machines
materials-cli doctor # backends reachable? deps present? fixes named
materials-cli run # seed and drain the funnel (Ctrl-C is safe)
materials-cli monitor # live dashboard while it runs
materials-cli results --export db.json # your records, one JSON array
Every command reads materials-cli.yaml from the current directory (or --config PATH)
and accepts --json for machine-readable output.
Exit codes: 0 success · 1 problems found · 2 config error.
Configure
The scaffold from init is a working config; this is its shape:
run:
work_dir: ./materials-work
elements: [Na, Cl, O] # what to explore
# combination_sizes: [2, 3] # binaries, ternaries, ... (omit = all sizes)
backends: # the WHERE — machines that run jobs
laptop:
kind: local
options: { max_parallel: 2 }
gpu_box:
kind: ssh_exec
options: { host: you@gpu-box.lan, max_parallel: 4 }
stages: # the WHAT — each stage picks a backend
compose: { backend: laptop }
structure: { backend: laptop }
screen: { backend: gpu_box }
extract: { backend: laptop }
Any string may be an environment reference (env:NAME) — secrets never live in the file.
Adding an optional calculate: stage runs each screened-in structure through DFTB+ using
your AiiDA installation; leave it out and the funnel is unchanged.
Commands
| Command | What it does |
|---|---|
init |
Scaffold a starter config and check your environment |
doctor |
Diagnose config, machine reachability, and per-stage readiness — naming the exact fix |
run |
Seed and drain the funnel; --only STAGE and --materials narrow it |
status |
Per-state counts, failures with reasons, jobs in flight |
monitor |
Live read-only dashboard: progress donut, stage pipeline, per-material CPU/GPU |
retry |
Put failed materials back in the queue (previews before it acts) |
results |
List finished materials; --export PATH writes the records array |
cif |
Export DFTB+ relaxed structures as CIF files |
update |
Upgrade an installed copy in place |
materials-cli <command> --help documents every flag.
The science stack is yours
materials-cli automates your calculations; it does not bundle SMACT, PyXtal,
MACE/torch, ASE, AiiDA, or any ML model. You install those in your own environment — the
tool checks what a run needs and tells you precisely what is missing, and where, before
any calculation starts. For screening, if you have no MACE model configured it can fetch
the foundation model for you — always with your consent, never silently.
Want the whole stack in one go? pip install materials-cli[compute] is a convenience
alias for smact + pyxtal + mace-torch. An alias, never a requirement.
Documentation
guide.md is the full user guide — every command, every flag, the complete
config reference, remote execution, material states, and worked recipes.
Contributing and release process: CONTRIBUTING.md.
Citation
If this tool contributes to work you publish, please cite it — see
CITATION.cff (GitHub renders a Cite this repository button from it).
License
MIT — see LICENSE.
Metadata
Release files for materials-cli 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| materials_cli-0.1.1.tar.gz | 296.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| materials_cli-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 485.3 kB
Release files / materials_cli-0.1.1.tar.gz
| Download URL | materials_cli-0.1.1.tar.gz |
|---|---|
| Size | 296.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3f7791e10f674fa288b1a7bd603c6701ea24e24c20d358d15ff9ea3c79f1fa1a
|
|
BLAKE2b-256 checksum How to use checksums |
d106fb41c6acc36f6865cf6d1d3bf7aaef26752987628b97ac7ae19459c00e4f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 31, 2026.
Transparency logRelease files / materials_cli-0.1.1-py3-none-any.whl
| Download URL | materials_cli-0.1.1-py3-none-any.whl |
|---|---|
| Size | 188.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
38fea038471217a82b5601899639b54e92d443a93777ea237ec5f72ed2316343
|
|
BLAKE2b-256 checksum How to use checksums |
433212b2d354a0c58de8c16fc5968fbb01744e5d46269a5b3c583469d4f8ec8c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 31, 2026.
Transparency log