The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Anvil listing page.
Anvil — a full workbench for your agent.
No cloud. No Bridge. No API key. No LLM inside — the tools are pure computation; your agent host brings the thinking.
Plain words in — your agent forges the design, tests it against proof metrics, iterates until it passes, and hands you the file. You never touch a tool.
Requires Node ≥ 20. No build step needed for use:
Or clone and run:
Add to your claude_desktop_config.json:
| Tool | Input | Output |
|---|---|---|
anvil.domains | {} | The 12 domains and what each simulates |
anvil.forge | { intent, domain? } | Blueprint JSON + rationale (offline — no LLM in the tool itself) |
anvil.solve | { blueprint, steps? } | SimSnapshot + ProofMetric[] with real numbers |
anvil.export | { blueprint, format } | STL (ASCII) or OBJ text for 3D printing / CAD |
silicon (nets, delay, heat, electromigration) · cellular (membranes, ions, morphogens) · quantum (wells, tunneling, decoherence) · neural (spikes, region flows) · mechanical (stress, modes, yield) · chemistry (mass-action kinetics, ΔH, equilibrium) · architecture (plans, interiors, circulation) · metallurgy (alloys, CE, melt, print window) · robotics (arms, torque, reach, payload) · machines (engines, gears, printable parts) · optics (geometry, gnomon, shadows, sundials) · sky (sun position / ephemeris)
anvil.forge — readIntent scores your words against per-domain keyword
sets, picks a domain, and forgeOffline builds a schematic graph (nodes,
edges, physical params) from templates plus your numbers (e.g. "7nm",
"5-stage", "0.75 V"). Pure local compute.anvil.solve — createSolver dispatches to the domain solver
(Kirchhoff MNA for silicon, Euler–Bernoulli for mechanical, mass-action for
chemistry, …), steps it, and returns a snapshot plus proof metrics — checks
with real tolerances and statuses.anvil.export — blueprint geometry meshed to ASCII STL or OBJ text.Everything runs in-process. There is no network call anywhere in the default path.
Optional — nothing is required to run:
anvil.solve returns a deterministic snapshot after N steps of the solver's
recommended dt — no wall-clock randomness.