Put something on the shelf

There are two kinds of repo. A chemistry holds a generator: a catalog entry plus the Python that builds its reaction network, so people can run it with their own parameters. A network holds one reaction network as plain data, with no code.

Share a chemistry

uv add chemart          # or: pip install chemart
chemart new my-chem     # a working skeleton
# edit my-chem/chemart.yaml and generator.py
chemart check my-chem   # the same checks the registry runs
chemart push my-chem    # opens a pull request

Share a network

import chemart

net = chemart.generate_network("chemart/brusselator", seed=1)
net.push_to_hub("you/brusselator-snapshot",
                title="A Brusselator snapshot",
                tags=["oscillator"])

How sharing works here

This hub is built from a GitHub repository. chemart push and push_to_hub open a pull request that adds your folder under repos/<your GitHub name>/<name>/; they need the GitHub CLI (gh auth login once). Without it, they write the folder for you and print the steps to open the pull request by hand.

A check runs on every pull request: the files must form a valid repo, a chemistry must pass chemart check, and you may only change your own namespace. Once a maintainer merges it, the site rebuilds and your chemistry is on the shelf.

Open the registry on GitHub Contributing guide

Every pull request is checked against the same rules as Chemart's own catalog: the entry validates, the defaults run in seconds, the network is plain JSON, and the same seed gives the same network. The site never runs uploaded code. Whoever loads a chemistry runs it on their own machine, and only after passing trust_remote_code=True.