ComparisonWireMock is the JVM-anchored elder of HTTP mocking — 15 years of stub DSL maturity. Gostly is a newer, lighter take built around recorded traffic instead of authored stubs. Both are good products; they optimise for different teams.
WireMock OSS has been mocking HTTP since 2011 and has earned its mindshare honestly. The stub-matching DSL is one of the most expressive in the field, the JUnit story (@WireMockTest) is genuinely best-in-class for Java teams, and WireMock Cloud layers collaboration, OpenAPI bidirectional sync, and a chaos UI on top. If your service is a Spring Boot app and your developers already think in builders, WireMock is the conservative choice and the right one.
Gostly is built around a different starting assumption: most teams do not want to author stubs at all. They want the mock to come from the traffic their service is already serving. So Gostly ships as a single Rust binary you put in front of your upstream, runs in LEARN mode for an hour or so, then flips to MOCK mode and replays. AI fills any gap — but grounded by the recordings, not by a free-text prompt.
There is no JVM in the loop, the install is a curl, and the wire protocol is language-agnostic. The trade-off is real: WireMock's stub DSL is deeper, its matchers are sharper, and its plugin ecosystem is mature in ways Gostly is not yet.
Point the Gostly CLI at your existing WireMock mappings/ directory or standalone zip. Each stub becomes a flat mock with the same method, URL, status, and body. Stateful scenarios and priority ordering are dropped (Gostly serves first-match in input order) and surfaced as warnings so you know what didn’t carry over.
$ gostly import --format wiremock \
--service-id svc-stripe ./mappings.zip
✓ Imported 124 mocks from ./mappings.zip
! mapping mappings/checkout.json#0: priority=5 dropped — Gostly uses flat first-match ordering
! mapping mappings/checkout.json#0: scenario state ('Cart') dropped — stateful chaos is on the drift v2 roadmap
The importer accepts a single mappings JSON, a JSON array, the {mappings: [...]} envelope wiremock --record-mappings emits, or a zip with mappings/*.json + __files/ resolved automatically.
Single binary, language-agnostic, recording-first. Run it against your staging upstream for an hour and see whether it produces a mock you trust.
Evaluating for a team of 3+? We’d love to talk before you commit.