Skip to main content

materials-cli

A config-driven funnel for high-throughput materials discovery — on your own machines.

CI Python License Code style Typed


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)

Source distribution for materials-cli 0.1.1
File Size Uploaded
materials_cli-0.1.1.tar.gz 296.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for materials-cli 0.1.1
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

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