Your spec is enough
You already wrote the schemas, examples, and status codes. Why are you writing them again in mock configs? Mimikos uses what you already have. One file, zero duplication.
Point Mimikos at an OpenAPI spec. It classifies every endpoint automatically:
Classified automatically from the spec alone. 96% accuracy across 344 real-world endpoints β no annotations, no configuration files.
mimikos start petshop.yamlπ mimikos v0.4.0Spec: PetShop Pro (OpenAPI 3.0.3)Operations: 27 endpoints classified
METHOD PATH BEHAVIOR CONFIDENCE GET /pets β list high POST /pets β create high GET /pets/{petId} β fetch high POST /pets/{petId} β update high PATCH /pets/{petId} β update high DELETE /pets/{petId} β delete high DELETE /pets/{petId}/avatar β delete high GET /pets/{petId}/vaccinations β list high POST /pets/{petId}/verify β generic high GET /owners β list high POST /owners β create high GET /owners/{ownerId} β fetch high GET /store/inventory β fetch high GET /store/orders β list high POST /store/orders β create high GET /store/orders/{orderId} β fetch high PUT /store/orders/{orderId} β update high DELETE /store/orders/{orderId} β delete high GET /clinics β list high POST /clinics β create high GET /clinics/{clinicId} β fetch high PUT /clinics/{clinicId} β update high DELETE /clinics/{clinicId} β delete high GET /clinics/{clinicId}/rooms β list high POST /clinics/{clinicId}/rooms β create high GET /clinics/{clinicId}/rooms/{roomId} β fetch high GET /me β fetch high
Listening on :8080 (deterministic mode, strict=false)curl http://localhost:8080/pets/42{ "id": "d1b2f3a4-5678-9abc-def0-1234567890ab", "name": "Fido", "status": "available", "age": 3, "tag": "domestic", "created_at": "2024-08-15T10:30:00Z"}The same request always returns the same response. Spec-authored examples ("Fido", "available") are used directly β the rest is generated from the schema.
Because Mimikos understands what each endpoint does, everything else follows:
Your OpenAPI spec is the only input. Mimikos validates every incoming request against it. Generates every response from it. Enforces every constraint in it.
example values you define in the spec are used directly β the data you authored is the data you get back. The rest is generated from schemas with realistic, field-aware values.
One file, one source of truth, zero configuration.
Download from GitHub Releases for Linux, macOS, and Windows.
# macOS / Linuxtar -xzf mimikos_<os>_<arch>.tar.gzsudo mv mimikos /usr/local/bin/mimikos --versionmacOS: if blocked on first run, see troubleshooting.
go install github.com/mimikos-io/mimikos/cmd/mimikos@latestRequires Go 1.25+.
Mimikos is an MCP server β Claude Code, Cursor, and VS Code Copilot can start, query, and manage mock servers through tool calls. Start a server, create test resources, and inspect responses β without leaving your editor.
claude mcp add mimikos -- mimikos mcpYour spec is enough
You already wrote the schemas, examples, and status codes. Why are you writing them again in mock configs? Mimikos uses what you already have. One file, zero duplication.
Stable snapshots
Your snapshot tests break every time a field changes. Mimikos uses per-field sub-seeding β add a field to the schema, existing values stay stable. Same request, same response, every time.
Realistic data
A field called email should return an email, not string_abc123. Mimikos maps 120+ field patterns to realistic generators β without annotations like x-faker.
Schema evolution safe
Update your spec, restart, done. No mock files to edit. No imports to re-run. Existing field values stay stable β only the new fields get new values.
Stateful CRUD
POST creates, GET retrieves, DELETE removes β automatically. Your mock server doesnβt need business logic, it needs to understand the API contract. --mode stateful and youβre done.
Useful errors
Send a malformed request, get a structured error telling you exactly which field failed and why. RFC 7807 Problem Details with field-level diagnostics β not a generic 500.
Switching from Prism or similar? No x-faker annotations. Stateful CRUD mode. Deterministic output with per-field sub-seeding. Get started β
No runtime dependencies. No containers. No services to manage. One binary that reads your spec and serves responses.
mimikos start your-api.yaml# That's it.