The natural scientist's harness for Claude. Everything-Claude-Code, but the operator is an ideal natural scientist instead of a software engineer.
Most "AI for science" turns the model into a single oracle you ask for an answer. Praxis instead configures Claude as a small lab that runs the scientific method explicitly: frame a falsifiable question, establish background from real literature, get the method right, compute on real data, interpret, try to break the result, connect it across fields, and map what to do next. The result is an investigation with provenance and uncertainty — not a confident paragraph.
praxis(core) is domain-agnostic: the method loop, the 8 scientist-roles, the integrity rules, and a typed cache engine (lib/pcache.pyquery ·lib/pbuild.pybuild ·lib/pvalidate.pythe 11 contract gates). It runs the scientific method on any field, with no pack installed.- Domain packs (
packs/<id>) make it a fluent expert co-scientist on one field — a domain-expert agent, a<id>-dataretrieval skill, a provenance-stamped cache, an oracle at a declared capability tier, and a domain eval suite. Shipped:lvk(ground-based gravitational waves — the "Siren" pack, tier LIVE) andpta(pulsar timing arrays, tier REDERIVE).
/init lvk # one-time: caches the plugin + pack into memory -> a fluent LVK co-scientist
/quick most massive black hole merger so far
/investigate "Is GW190814's secondary a neutron star or a black hole?"
Cache integrity is mechanically enforced: pvalidate.py gates certify each pack's cache is complete, DOI-resolvable, uncertainty-bearing, and scope-landable; pcache.py's serving filter refuses to emit a bare number or a value without provenance. The oracle tier is a hard capability, not a label: LIVE packs are diffable against an independent API; REDERIVE packs are byte-match re-derivable but carry no live oracle and, until a human audit, are flagged community-unverified; ASSERTED fields get the method + discipline but not the mechanical guarantee. Tier-1 deep-loop generation is eval-gated, not categorically guaranteed — the honest scope is stated in ARCHITECTURE.md.
principal-investigator orchestrates · literature-reader reads papers · domain-expert-<id> supplies field physics (from the active pack) · analyst-coder runs reproducible analysis · interpreter turns numbers into meaning · skeptic tries to break the result · cross-domain-bridge connects fields · teacher explains at any level · next-steps maps the forward agenda.
INSTALL.md— install,/init, usageARCHITECTURE.md— the full typed core/pack contract, oracle tiers, and the honest limitsdocs/index.html— the single-page documentation site (GitHub Pages)
/praxis-build <domain> runs the transactional two-phase bootstrap and stamps out a validated packs/<id>. The method loop and integrity rules are domain-agnostic — that's the point.
If you use Praxis, please cite it via the metadata in CITATION.cff (GitHub's "Cite this repository" button generates BibTeX/APA from it). Archived releases are on Zenodo under the concept DOI 10.5281/zenodo.23316452, which always resolves to the latest version.
Praxis was developed with the assistance of large language models: Anthropic's Claude and OpenAI's GPT models. All design decisions, content, and code were directed, reviewed, and are the responsibility of the human authors.
polygrav · Anthropic–ETH AI Sprint.