Counterfact lets frontend developers work independently of the backend. People and agents can build and test against an API contract instead of a live API, simulating new functionality, error responses, and edge cases. Selectively proxy requests to real services when they are useful.
Frontend work shouldn’t have to wait for the backend. When an API is unavailable or a feature hasn’t been built yet, developers still need a way to build and test the clients that depend on it.
Give Counterfact an OpenAPI contract, and it provides a working API for your web and mobile clients. Develop against that contract, simulate new functionality, and test errors and edge cases without waiting for the live backend.
The OpenAPI document describes the interface. Counterfact handles requests and returns simulated responses or forwards selected requests to a real service.
With Node.js 22 or newer, run this example in a new directory:
npx counterfact@latest https://petstore3.swagger.io/api/v3/openapi.json apiCounterfact creates editable routes and generated types in api/, then starts
a local API at http://localhost:3100. Try http://localhost:3100/pet/1 or open
Swagger UI. Generated sample
responses are a starting point; customize the behavior your frontend needs.
Use your own OpenAPI document in place of the example URL. For a repeatable project or CI workflow, install a pinned version and commit the lockfile.
- Documentation · guides by task · CLI and API reference
- Custom responses · errors and edge cases · selective proxying
- Contributing · issues · security
- Website · npm package · changelog · architecture decisions
This is a Yarn workspace monorepo. The published application and canonical user
docs live in packages/counterfact.
Focused packages: client,
generator, OpenAPI,
REPL, runtime, and
types.
MIT license · Copyright Patrick McElhaney.