@jaredwray/mockhttp 2.0.0 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -28,7 +28,7 @@ A simple HTTP server for mocking responses in tests. Inspired by [httpbin](https
28
28
  - [Bins](/docs/bins/) — capture and inspect incoming HTTP requests (great for webhook debugging)
29
29
  - `@fastify/helmet` built in by default
30
30
  - Built with Node.js, TypeScript, and Fastify
31
- - Deploy via Docker or Node.js
31
+ - Run it in Node.js, or deploy with [Docker](/docs/how-to-deploy/docker/), [Cloudflare Workers](/docs/how-to-deploy/cloudflare/), or [Wasmer Edge](/docs/how-to-deploy/wasmer/)
32
32
  - Free hosted service at [mockhttp.org](https://mockhttp.org), running on Cloudflare
33
33
  - Documentation site and interactive [OpenAPI reference](/api/)
34
34
  - Auto-detect the next port that is not in use
@@ -78,6 +78,8 @@ console.log(response);
78
78
  await mock.close(); // stop the server
79
79
  ```
80
80
 
81
+ Step-by-step deploy guides: [Docker](/docs/how-to-deploy/docker/), [Cloudflare](/docs/how-to-deploy/cloudflare/), and [Wasmer](/docs/how-to-deploy/wasmer/).
82
+
81
83
  ### HTTPS and HTTP/2
82
84
  URL: https://mockhttp.org/docs/https/
83
85
 
@@ -1241,15 +1243,217 @@ A getter that returns whether there are any active injections.
1241
1243
 
1242
1244
  **Returns:** boolean - `true` if there are active injections, `false` otherwise
1243
1245
 
1244
- ### Hosted Service
1246
+ ### MockHttp.org Live
1245
1247
  URL: https://mockhttp.org/docs/hosted/
1246
1248
 
1247
1249
  # About mockhttp.org
1248
1250
 
1249
- [mockhttp.org](https://mockhttp.org) is a free hosted instance of this codebase for testing. It runs on a [Cloudflare Worker](https://developers.cloudflare.com/workers/) (no containers): documentation is served from Workers Assets, and mock APIs such as `/get` and `/post` run in the Worker. The service is globally available and rate-limited (1000 requests per minute per IP) to prevent abuse.
1251
+ [mockhttp.org](https://mockhttp.org) is a free hosted instance of this codebase for testing. It runs on a [Cloudflare Worker](/docs/how-to-deploy/cloudflare/) (no containers): documentation is served from Workers Assets, and mock APIs such as `/get` and `/post` run in the Worker. The service is globally available and rate-limited (1000 requests per minute per IP) to prevent abuse.
1252
+
1253
+ All [mockhttp.org](https://mockhttp.org) traffic stays on Cloudflare. A separate test app runs the Node server on [Wasmer Edge](/docs/how-to-deploy/wasmer/) at [mockhttp.wasmer.app](https://mockhttp.wasmer.app).
1250
1254
 
1251
1255
  Getting Started is served at `/` and `/docs`, other guides at `/docs/...`, and the interactive HTTP API reference at `/api`. Mock endpoints such as `/get` and `/post` are unchanged.
1252
1256
 
1257
+ ### Cloudflare
1258
+ URL: https://mockhttp.org/docs/how-to-deploy/cloudflare/
1259
+ Description: Deploy MockHTTP as a Cloudflare Worker. Workers Assets serve the docs site, and the Worker handles mock API routes.
1260
+
1261
+ # Deploy on Cloudflare
1262
+
1263
+ MockHTTP runs on Cloudflare as a Worker, not a container. [mockhttp.org](https://mockhttp.org) is this deployment: [Workers Assets](https://developers.cloudflare.com/workers/static-assets/) serve the documentation site, and the Worker handles mock APIs such as `/get` and `/post`.
1264
+
1265
+ The Worker entry is [`worker/index.ts`](https://github.com/jaredwray/mockhttp/blob/main/worker/index.ts). It listens with the Node.js compatibility layer and forwards each request into the Fastify app. Configuration lives in [`wrangler.jsonc`](https://github.com/jaredwray/mockhttp/blob/main/wrangler.jsonc).
1266
+
1267
+ ## What the Worker does differently
1268
+
1269
+ The Worker starts the same MockHTTP app as Node.js, with a few options set for the Workers runtime:
1270
+
1271
+ | Option | Worker value | Why |
1272
+ | --- | --- | --- |
1273
+ | `rateLimit` | `false` | [`@fastify/rate-limit`](https://github.com/fastify/fastify-rate-limit) is off. A Cloudflare rate limiting binding allows 1000 requests per 60 seconds per IP. |
1274
+ | `siteDistPath` | unused path | Fastify does not serve the docs. Workers Assets serve `site/dist`. |
1275
+ | `staticFiles` | `false` | Logos and other `public/` files are copied into `site/dist` and read through the `ASSETS` binding. |
1276
+ | `startBins` | `false` | The bin cleanup timer uses `setInterval`, which can hang a Worker isolate during startup. Bin routes still register. Expired bins are removed when that bin is read, not by a sweep of every bin. |
1277
+ | `pluginTimeout` | `0` | Disables Fastify's plugin boot timeout. Those timers are unreliable on Workers. |
1278
+ | `logging` | `false` | Request logging is off. |
1279
+ | `autoDetectPort` | `false` | The app always listens on port 3000 inside the isolate. |
1280
+
1281
+ The rate limiter key is the `cf-connecting-ip` header, then the first address in `x-forwarded-for`, then `unknown`. A limited request returns `429` with `retry-after: 60`. That limiter is shared across isolates. Bins are not. The default store is in memory inside the isolate that handled the request, so a bin created on one request can be missing when another isolate or location handles the next one.
1282
+
1283
+ Taps are a library API (`mock.taps.inject`). They have no HTTP routes, so a deployed Worker has no way to inject one.
1284
+
1285
+ Assets are checked before the Worker. A file under `site/dist` (the docs site, favicon, logos) is served as a static asset. A path that is not a file, such as `/get` or `/post`, is handled by the Worker.
1286
+
1287
+ ## Deploy your own Worker
1288
+
1289
+ You need a Cloudflare account and permission to deploy Workers. This repository pins Wrangler to `4.127.0`.
1290
+
1291
+ Change `name` and `routes` in `wrangler.jsonc` before you deploy a fork. The route in this repo attaches the custom domain `mockhttp.org`. `workers_dev` is enabled, so a `*.workers.dev` hostname is available as well. Adjust the `RATE_LIMITER` binding if you want a different limit than 1000 requests per 60 seconds.
1292
+
1293
+ Also change `siteUrl` in `site/docula.config.ts`. The sitemap is a static file, and this repo sets it to `https://mockhttp.org`. The `migrations` block records a container class that this Worker no longer uses. A brand-new Worker can omit that block.
1294
+
1295
+ Wrangler bundles `worker/index.ts` from source, so you do not need `pnpm build` for this deploy. `pnpm website:build` produces `site/dist`.
1296
+
1297
+ ```bash
1298
+ pnpm install
1299
+ pnpm website:build
1300
+ pnpm prepare:worker-assets
1301
+ npx wrangler@4.127.0 deploy
1302
+ ```
1303
+
1304
+ `pnpm prepare:worker-assets` copies `public/` into `site/dist` so favicon and logo files ship with the docs site. Wrangler reads `CLOUDFLARE_API_TOKEN` and `CLOUDFLARE_ACCOUNT_ID` from the environment when you are not logged in locally.
1305
+
1306
+ After deploy, open the workers.dev hostname or your custom domain and request `/get`. The docs are at `/docs`, and the OpenAPI reference is at `/api`.
1307
+
1308
+ ## Deploy from GitHub Actions
1309
+
1310
+ [`.github/workflows/deploy-site.yaml`](https://github.com/jaredwray/mockhttp/blob/main/.github/workflows/deploy-site.yaml) deploys this Worker on the `released` event (a published release, not a prerelease) and when the workflow is started by hand. The `production` environment provides `CLOUDFLARE_API_TOKEN` and `CLOUDFLARE_ACCOUNT_ID`. The deploy job installs production dependencies, downloads the built site, copies `public/` into `site/dist`, installs Wrangler `4.127.0`, and runs `wrangler deploy`.
1311
+
1312
+ That workflow does not deploy the [Wasmer](/docs/how-to-deploy/wasmer/) app. Docker image publishing is a separate workflow, documented in [Docker](/docs/how-to-deploy/docker/).
1313
+
1314
+ ### Docker
1315
+ URL: https://mockhttp.org/docs/how-to-deploy/docker/
1316
+ Description: Run MockHTTP from the jaredwray/mockhttp image, with Docker Compose, or by building the image from this repository.
1317
+
1318
+ # Deploy with Docker
1319
+
1320
+ The published image is [`jaredwray/mockhttp`](https://hub.docker.com/r/jaredwray/mockhttp) on Docker Hub. It runs the Node.js server and the documentation site in one container. The `latest` tag is `linux/amd64` only. Apple Silicon runs it under emulation. On arm64 Linux, build the image from this repository instead.
1321
+
1322
+ ## Run the image
1323
+
1324
+ ```bash
1325
+ docker run -d -p 3000:3000 jaredwray/mockhttp
1326
+ ```
1327
+
1328
+ The server listens on port 3000. Open `http://localhost:3000/get` for a mock response, `http://localhost:3000/docs` for these guides, and `http://localhost:3000/api` for the OpenAPI reference.
1329
+
1330
+ `pnpm docker:run` is `docker run -p 3000:3000 jaredwray/mockhttp`. It stays in the foreground. Docker pulls the Hub image when it is not already local.
1331
+
1332
+ Rate limiting is on: 1000 requests per minute. The allow list is only `127.0.0.1` and `::1`. A published port delivers traffic from the Docker bridge address, not from loopback inside the container, so those requests count against the limit. None of the environment variables below turn it off. Change or disable it with the library [`rateLimit` option](/docs/configuration/). A test suite that sends more than 1000 requests a minute to the published port will get `429` responses.
1333
+
1334
+ ## Docker Compose
1335
+
1336
+ ```yaml
1337
+ services:
1338
+ mockhttp:
1339
+ image: jaredwray/mockhttp:latest
1340
+ ports:
1341
+ - "3000:3000"
1342
+ ```
1343
+
1344
+ The Compose file in this repository publishes port 3001 and sets `PORT` so the process listens on that same port:
1345
+
1346
+ ```yaml
1347
+ services:
1348
+ mockhttp:
1349
+ image: jaredwray/mockhttp:latest
1350
+ ports:
1351
+ - "3001:3001"
1352
+ environment:
1353
+ - PORT=3001
1354
+ ```
1355
+
1356
+ `pnpm docker:compose:up` and `pnpm docker:compose:down` call the `docker-compose` binary. Current Docker installs often provide `docker compose` instead, which you can run against the same file.
1357
+
1358
+ ## Environment variables
1359
+
1360
+ The container starts `node dist/index.mjs`. That process reads these variables:
1361
+
1362
+ | Variable | Default | Effect |
1363
+ | --- | --- | --- |
1364
+ | `PORT` | `3000` | Port the server listens on. Match it to the published container port. |
1365
+ | `HOST` | `0.0.0.0` | Bind address. |
1366
+ | `LOGGING` | enabled | Set to `false` to turn logging off. |
1367
+ | `HTTP2` | off | Set to `true` to enable HTTP/2 cleartext (h2c). The image does not load a TLS certificate. |
1368
+ | `AUTO_DETECT_PORT` | `true` | Set to `false` to keep `PORT` even when that port is already in use. |
1369
+
1370
+ HTTPS certificates are configured in the [library](/docs/https/), not through container environment variables. Put a TLS proxy in front of the container when you need HTTPS.
1371
+
1372
+ ## Build the image
1373
+
1374
+ The [`Dockerfile`](https://github.com/jaredwray/mockhttp/blob/main/Dockerfile) copies `node_modules`, `package.json`, `public/`, `dist/`, and `site/dist/` from the build context. Build the package and the docs site before `docker build`.
1375
+
1376
+ ```bash
1377
+ pnpm install
1378
+ pnpm build
1379
+ pnpm website:build
1380
+ docker build -t jaredwray/mockhttp .
1381
+ docker run -d -p 3000:3000 jaredwray/mockhttp
1382
+ ```
1383
+
1384
+ `pnpm docker:build` is the `docker build` step. The image is based on Node.js 24 Alpine, runs as the `node` user, exposes port 3000, and starts `node dist/index.mjs`.
1385
+
1386
+ ## Publish to Docker Hub
1387
+
1388
+ [`.github/workflows/docker-publish.yaml`](https://github.com/jaredwray/mockhttp/blob/main/.github/workflows/docker-publish.yaml) runs on the `released` event (a published release, not a prerelease) and when the workflow is started by hand. It builds `jaredwray/mockhttp:<version>` and `jaredwray/mockhttp:latest` with `docker build` on `ubuntu-latest`, pushes both tags, and updates the Docker Hub description from `DOCKER.md`. That build is `linux/amd64`.
1389
+
1390
+ The same Node server can run on [Wasmer Edge](/docs/how-to-deploy/wasmer/). The public site at [mockhttp.org](https://mockhttp.org) is the [Cloudflare Worker](/docs/how-to-deploy/cloudflare/), not this image.
1391
+
1392
+ ### Wasmer
1393
+ URL: https://mockhttp.org/docs/how-to-deploy/wasmer/
1394
+ Description: Deploy the MockHTTP Node.js server to Wasmer Edge with app.yaml, Anybuild, and wasmer deploy.
1395
+
1396
+ # Deploy on Wasmer
1397
+
1398
+ Wasmer Edge runs the same Node.js server as [Docker](/docs/how-to-deploy/docker/). The test app for this repository is [mockhttp.wasmer.app](https://mockhttp.wasmer.app).
1399
+
1400
+ This deploy does not publish the [Cloudflare Worker](/docs/how-to-deploy/cloudflare/). [mockhttp.org](https://mockhttp.org) stays on Cloudflare.
1401
+
1402
+ ## App configuration
1403
+
1404
+ [`app.yaml`](https://github.com/jaredwray/mockhttp/blob/main/app.yaml) describes the Edge app:
1405
+
1406
+ ```yaml
1407
+ kind: wasmer.io/App.v0
1408
+ name: mockhttp
1409
+ owner: jaredwray
1410
+ package: .
1411
+ env:
1412
+ HOST: "0.0.0.0"
1413
+ LOGGING: "false"
1414
+ AUTO_DETECT_PORT: "false"
1415
+ ```
1416
+
1417
+ `package: .` deploys the repository directory. `HOST` binds the server on all interfaces. Logging is off. Wasmer injects `PORT`. `AUTO_DETECT_PORT=false` keeps that port instead of scanning for another one.
1418
+
1419
+ Change `name` and `owner` before you deploy your own app. The environment variables are the same ones the Docker image reads (`PORT`, `HOST`, `LOGGING`, `HTTP2`, and `AUTO_DETECT_PORT`). See [Docker](/docs/how-to-deploy/docker/) for what each one does.
1420
+
1421
+ ## Build with Anybuild
1422
+
1423
+ [`Anybuild`](https://github.com/jaredwray/mockhttp/blob/main/Anybuild) tells Wasmer how to build the package on a remote builder:
1424
+
1425
+ - Node.js 24 and pnpm `12.4.1`
1426
+ - Build command: `pnpm run build && pnpm website:build`
1427
+ - Start command: `node dist/index.mjs`
1428
+
1429
+ The build command produces `dist/` and `site/dist/` while Docula is still installed. Wasmer then prunes dev dependencies. The docs site has to exist before that prune, because Docula is a dev dependency.
1430
+
1431
+ ## Deploy from the CLI
1432
+
1433
+ Install the [Wasmer CLI](https://docs.wasmer.io/install) and log in, then from the repository root:
1434
+
1435
+ ```bash
1436
+ wasmer deploy --build-remote
1437
+ ```
1438
+
1439
+ `--build-remote` uploads the source and runs the Anybuild file on Wasmer's builders. When the deploy finishes, the CLI prints the app URL.
1440
+
1441
+ ## Deploy from GitHub Actions
1442
+
1443
+ [`.github/workflows/deploy-wasmer.yaml`](https://github.com/jaredwray/mockhttp/blob/main/.github/workflows/deploy-wasmer.yaml) runs on the `released` event (a published release, not a prerelease) and when the workflow is started by hand. The `wasmer` environment provides `WASMER_TOKEN`. The deploy step runs:
1444
+
1445
+ ```bash
1446
+ wasmer deploy --non-interactive --build-remote
1447
+ ```
1448
+
1449
+ ## Runtime behavior
1450
+
1451
+ Bins use the default in-memory store, so a bin exists only on the instance that created it. Taps are a library API (`mock.taps.inject`) and have no HTTP routes, so a deployed app cannot inject one.
1452
+
1453
+ `@fastify/rate-limit` is on at 1000 requests per minute. It keys on the address that connects to the process. The server does not trust proxy headers, and the allow list is only `127.0.0.1` and `::1`. On the test app, `/ip` reports `127.0.0.100`, which is the edge proxy rather than the caller, and the response includes `x-ratelimit-limit: 1000`. Clients that share that proxy address share one limit on that instance. This is not the Cloudflare limiter used by [mockhttp.org](https://mockhttp.org).
1454
+
1455
+ The process listens with HTTP. Wasmer terminates TLS for the `*.wasmer.app` hostname.
1456
+
1253
1457
  ## API Reference
1254
1458
  URL: https://mockhttp.org/api
1255
1459
 
@@ -1260,7 +1464,7 @@ OpenAPI Spec Source: /home/runner/work/mockhttp/mockhttp/site/api/swagger.json
1260
1464
  "info": {
1261
1465
  "title": "Mock HTTP API",
1262
1466
  "description": "\nA simple HTTP server that can be used to mock HTTP responses for testing purposes. Inspired by [httpbin](https://httpbin.org/) and built using `nodejs` and `fastify` with the idea of running it via https://mockhttp.org, via docker `jaredwray/mockhttp`, or nodejs `npm install @jaredwray/mockhttp`.\n\n* [GitHub Repository](https://github.com/jaredwray/mockhttp)\n* [Docker Image](https://hub.docker.com/r/jaredwray/mockhttp)\n* [NPM Package](https://www.npmjs.com/package/@jaredwray/mockhttp)\n\n# About mockhttp.org\n\n[mockhttp.org](https://mockhttp.org) is a free hosted instance of this codebase for testing. It runs on a Cloudflare Worker (no containers): documentation is served from Workers Assets, and mock APIs such as `/get` and `/post` run in the Worker. The service is globally available and rate-limited (1000 requests per minute per IP) to prevent abuse.\n",
1263
- "version": "2.0.0"
1467
+ "version": "2.1.0"
1264
1468
  },
1265
1469
  "components": {
1266
1470
  "schemas": {}
@@ -6746,6 +6950,52 @@ OpenAPI Spec Source: /home/runner/work/mockhttp/mockhttp/site/api/swagger.json
6746
6950
  ## Changelog
6747
6951
  URL: https://mockhttp.org/changelog
6748
6952
 
6953
+ ### v2.1.0
6954
+ URL: https://mockhttp.org/changelog/v2-1-0
6955
+ Date: October 3, 2026
6956
+ Tag: Release
6957
+
6958
+ ## @jaredwray/mockhttp@2.1.0 — 2026-10-03
6959
+
6960
+ Add AUTO_DETECT_PORT=false so the process keeps PORT, and include the docs site in the npm package.
6961
+
6962
+ ### Features
6963
+ - Deploy the Node server to Wasmer Edge (#225)
6964
+
6965
+ ```bash
6966
+ PORT=3000 AUTO_DETECT_PORT=false node dist/index.mjs
6967
+ ```
6968
+
6969
+ ### Bug Fixes
6970
+ - include Docula site in the npm tarball (#222)
6971
+ - deploy Wasmer with a remote build (#226)
6972
+ - deploy Wasmer through the Anybuild file (#228)
6973
+
6974
+ ### Documentation
6975
+ - add Drydock review badge to README (#224)
6976
+ - rename Hosted Service page to MockHttp.org Live (#230)
6977
+ - add How to Deploy guides for Cloudflare, Docker, and Wasmer (#229)
6978
+
6979
+ ### Internal
6980
+ - root - defense - close catalog gaps from current skill (#221)
6981
+ - Publish the GitHub Actions build to Wasmer (#227)
6982
+
6983
+ ### Contributors
6984
+ - @jaredwray (owner)
6985
+
6986
+ ### Full List of Changes
6987
+ - root - chore: defense - close catalog gaps from current skill by @jaredwray in #221
6988
+ - fix: include Docula site in the npm tarball by @jaredwray in #222
6989
+ - docs: add Drydock review badge to README by @jaredwray in #224
6990
+ - Deploy the Node server to Wasmer Edge by @jaredwray in #225
6991
+ - Fix the Wasmer deploy by using a remote build by @jaredwray in #226
6992
+ - Publish the GitHub Actions build to Wasmer by @jaredwray in #227
6993
+ - Deploy Wasmer with the Anybuild file by @jaredwray in #228
6994
+ - docs: rename Hosted Service to MockHttp.org Live by @jaredwray in #230
6995
+ - docs: add How to Deploy guides for Cloudflare, Docker, and Wasmer by @jaredwray in #229
6996
+
6997
+ **Full diff:** [https://github.com/jaredwray/mockhttp/compare/v2.0.0...v2.1.0](https://github.com/jaredwray/mockhttp/compare/v2.0.0...v2.1.0)
6998
+
6749
6999
  ### v2.0.0
6750
7000
  URL: https://mockhttp.org/changelog/v2-0-0
6751
7001
  Date: September 18, 2026
@@ -7388,28 +7638,3 @@ Tag: Release
7388
7638
 
7389
7639
 
7390
7640
  **Full Changelog**: [https://github.com/jaredwray/mockhttp/compare/v0.1.0...v0.2.0](https://github.com/jaredwray/mockhttp/compare/v0.1.0...v0.2.0)
7391
-
7392
- ### v0.1.0
7393
- URL: https://mockhttp.org/changelog/v0-1-0
7394
- Date: December 12, 2024
7395
- Tag: Release
7396
-
7397
- ## What's Changed
7398
- * adding in contributing and code of conduct by @jaredwray in [https://github.com/jaredwray/mockhttp/pull/1](https://github.com/jaredwray/mockhttp/pull/1)
7399
- * migrating to correct folder format by @jaredwray in [https://github.com/jaredwray/mockhttp/pull/2](https://github.com/jaredwray/mockhttp/pull/2)
7400
- * adding in logo and favicon by @jaredwray in [https://github.com/jaredwray/mockhttp/pull/3](https://github.com/jaredwray/mockhttp/pull/3)
7401
- * adding in headers and user-agent endpoints by @jaredwray in [https://github.com/jaredwray/mockhttp/pull/4](https://github.com/jaredwray/mockhttp/pull/4)
7402
- * moving to scalar by @jaredwray in [https://github.com/jaredwray/mockhttp/pull/5](https://github.com/jaredwray/mockhttp/pull/5)
7403
- * adding in status codes by @jaredwray in [https://github.com/jaredwray/mockhttp/pull/6](https://github.com/jaredwray/mockhttp/pull/6)
7404
- * adding in unit tests and workflows by @jaredwray in [https://github.com/jaredwray/mockhttp/pull/7](https://github.com/jaredwray/mockhttp/pull/7)
7405
- * fixing the title that had an extra space by @jaredwray in [https://github.com/jaredwray/mockhttp/pull/8](https://github.com/jaredwray/mockhttp/pull/8)
7406
- * moving to scalar locally instead of via CDN by @jaredwray in [https://github.com/jaredwray/mockhttp/pull/9](https://github.com/jaredwray/mockhttp/pull/9)
7407
- * adding in dynamic version from package.json by @jaredwray in [https://github.com/jaredwray/mockhttp/pull/10](https://github.com/jaredwray/mockhttp/pull/10)
7408
- * adding in fastify helmet by @jaredwray in [https://github.com/jaredwray/mockhttp/pull/11](https://github.com/jaredwray/mockhttp/pull/11)
7409
- * upgrading xo to 0.60.0 by @jaredwray in [https://github.com/jaredwray/mockhttp/pull/12](https://github.com/jaredwray/mockhttp/pull/12)
7410
- * updating build to tsup and upgrading vitest by @jaredwray in [https://github.com/jaredwray/mockhttp/pull/13](https://github.com/jaredwray/mockhttp/pull/13)
7411
-
7412
- ## New Contributors
7413
- * @jaredwray made their first contribution in [https://github.com/jaredwray/mockhttp/pull/1](https://github.com/jaredwray/mockhttp/pull/1)
7414
-
7415
- **Full Changelog**: [https://github.com/jaredwray/mockhttp/commits/v0.1.0](https://github.com/jaredwray/mockhttp/commits/v0.1.0)
@@ -11,13 +11,17 @@ HTTP mock server and httpbin replacement for API testing. Run it at mockhttp.org
11
11
  - [Bins](https://mockhttp.org/docs/bins/)
12
12
  - [Configuration](https://mockhttp.org/docs/configuration/)
13
13
  - [Library API](https://mockhttp.org/docs/library/)
14
- - [Hosted Service](https://mockhttp.org/docs/hosted/)
14
+ - [MockHttp.org Live](https://mockhttp.org/docs/hosted/)
15
+ - [Cloudflare](https://mockhttp.org/docs/how-to-deploy/cloudflare/) - Deploy MockHTTP as a Cloudflare Worker. Workers Assets serve the docs site, and the Worker handles mock API routes.
16
+ - [Docker](https://mockhttp.org/docs/how-to-deploy/docker/) - Run MockHTTP from the jaredwray/mockhttp image, with Docker Compose, or by building the image from this repository.
17
+ - [Wasmer](https://mockhttp.org/docs/how-to-deploy/wasmer/) - Deploy the MockHTTP Node.js server to Wasmer Edge with app.yaml, Anybuild, and wasmer deploy.
15
18
 
16
19
  ## API Reference
17
20
  - [API Documentation](https://mockhttp.org/api)
18
21
 
19
22
  ## Changelog
20
23
  - [Changelog](https://mockhttp.org/changelog)
24
+ - [v2.1.0](https://mockhttp.org/changelog/v2-1-0) (October 3, 2026)
21
25
  - [v2.0.0](https://mockhttp.org/changelog/v2-0-0) (September 18, 2026)
22
26
  - [v1.9.0](https://mockhttp.org/changelog/v1-9-0) (August 19, 2026)
23
27
  - [v1.8.1](https://mockhttp.org/changelog/v1-8-1) (July 19, 2026)
@@ -37,4 +41,3 @@ HTTP mock server and httpbin replacement for API testing. Run it at mockhttp.org
37
41
  - [v0.7.0](https://mockhttp.org/changelog/v0-7-0) (August 23, 2025)
38
42
  - [v0.6.1](https://mockhttp.org/changelog/v0-6-1) (July 19, 2025)
39
43
  - [v0.6.0](https://mockhttp.org/changelog/v0-6-0) (June 14, 2025)
40
- - [v0.5.0](https://mockhttp.org/changelog/v0-5-0) (May 10, 2025)