lemmafit
Make agents prove that their code is correct.
Read our launch post: Introducing lemmafit: A Verifier in the AI Loop.
Lemmafit integrates Dafny formal verification into your development workflow via Claude Code. Business logic, state machines, and other logic are written in Dafny, mathematically verified, then auto-compiled to TypeScript for use in your React app.
Quick Start
npm install -g lemmafit
lemmafit init PROJECT_NAME
cd PROJECT_NAME
npm install
npm run daemon
npm run dev
claude
Use Cases / Considerations
-
lemmafit works with greenfield projects. You typically begin a project with lemmafit init though lemmafit add provides rudimentary support for existing codebases.
-
lemmafit compiles Dafny to Javascript/Typescript which then hooks into a runtime like a React app. In the future, we will support other languages.
-
lemmafit is optimized to work with Claude Code. In the future, lemmafit will be agent-agnostic.
How It Works
- Prompt Claude Code as you normally would. You may use a simple starting prompt or a structured prompting system.
Example: "Create a pomodoro app I can use personally and locally."
- The agent will write a
SPEC.yaml and write verified logic in lemmafit/dafny/Domain.dfy
- The daemon watches
.dfy files, runs dafny verify, and on success compiles to src/dafny/Domain.cjs + src/dafny/app.ts
- The agent will hook the generated TypeScript API into a React app — the logic is proven correct
- After proofs complete, run the
/guarantees skill to activate claimcheck and generate a guarantees report
Project Structure
my-app/
├── SPEC.yaml # Your requirements
├── lemmafit/
│ ├── dafny/
│ │ └── Domain.dfy # Your verified Dafny logic
│ │ └── Replay.dfy # Generic Replay kernel
│ ├── .vibe/
│ │ ├── config.json # Project config
│ │ ├── modules.json # Module registry (for multi-module projects)
│ │ ├── status.json # Verification status (generated)
│ │ └── claims.json # Proof obligations (generated)
│ └── reports/
│ └── guarantees.md # Guarantee report (generated)
├── src/
│ ├── dafny/
│ │ ├── Domain.cjs # Compiled JS (generated)
│ │ └── app.ts # TypeScript API (generated - DO NOT EDIT)
│ ├── App.tsx # Your React app
│ └── main.tsx
├── .claude/ # Hooks & settings (managed by lemmafit)
└── package.json
CLI
lemmafit init [dir]
lemmafit add [Name]
lemmafit sync [dir]
lemmafit daemon [dir]
lemmafit logs [dir]
lemmafit logs --clear [dir]
Updating
System files sync automatically on install:
npm update lemmafit
Requirements
Dafny and dafny2js are downloaded automatically during npm install to ~/.lemmafit/.