{"id":43209848,"url":"https://github.com/getmockd/mockd","last_synced_at":"2026-04-01T18:19:38.321Z","repository":{"id":337318466,"uuid":"1149453029","full_name":"getmockd/mockd","owner":"getmockd","description":"High-performance, multi-protocol mock server. HTTP, WebSocket, gRPC, MQTT, SSE, GraphQL, SOAP in one binary.","archived":false,"fork":false,"pushed_at":"2026-03-23T03:10:56.000Z","size":28271,"stargazers_count":31,"open_issues_count":0,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-23T23:36:20.343Z","etag":null,"topics":["api-mocking","chaos-engineering","cli","developer-tools","golang","graphql","grpc","mcp","mock-server","mqtt","service-virtualization","soap","sse","testing","websocket"],"latest_commit_sha":null,"homepage":"https://mockd.io","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/getmockd.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE","maintainers":"MAINTAINERS.md","copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-04T06:03:11.000Z","updated_at":"2026-03-23T22:09:01.000Z","dependencies_parsed_at":"2026-02-23T07:06:39.436Z","dependency_job_id":"0f5f08ca-a2d2-4916-bbd4-392f43d6c141","html_url":"https://github.com/getmockd/mockd","commit_stats":null,"previous_names":["getmockd/mockd"],"tags_count":30,"template":false,"template_full_name":null,"purl":"pkg:github/getmockd/mockd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getmockd%2Fmockd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getmockd%2Fmockd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getmockd%2Fmockd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getmockd%2Fmockd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/getmockd","download_url":"https://codeload.github.com/getmockd/mockd/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/getmockd%2Fmockd/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31290812,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-mocking","chaos-engineering","cli","developer-tools","golang","graphql","grpc","mcp","mock-server","mqtt","service-virtualization","soap","sse","testing","websocket"],"created_at":"2026-02-01T07:18:29.496Z","updated_at":"2026-04-01T18:19:38.309Z","avatar_url":"https://github.com/getmockd.png","language":"Go","readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://mockd.io\"\u003e\u003cimg src=\"https://mockd.io/getmockd.svg\" alt=\"mockd\" width=\"200\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003ch3 align=\"center\"\u003eOne binary. Seven protocols. Zero dependencies.\u003c/h3\u003e\n\n\u003cp align=\"center\"\u003e\n  Mock HTTP, gRPC, GraphQL, WebSocket, MQTT, SSE, and SOAP from a single CLI tool.\u003cbr\u003e\n  Import OpenAPI specs. Build digital twins. Let AI agents create mocks for you.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/getmockd/mockd/actions/workflows/ci.yaml\"\u003e\u003cimg src=\"https://github.com/getmockd/mockd/actions/workflows/ci.yaml/badge.svg\" alt=\"CI\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/getmockd/mockd/releases\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/getmockd/mockd?include_prereleases\" alt=\"Release\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/getmockd/mockd/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/getmockd/mockd?style=social\" alt=\"Stars\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://img.shields.io/badge/Go-1.25+-00ADD8?logo=go\"\u003e\u003cimg src=\"https://img.shields.io/badge/Go-1.25+-00ADD8?logo=go\" alt=\"Go\"\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-Apache%202.0-blue.svg\" alt=\"License\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://mockd.io\"\u003eWebsite\u003c/a\u003e \u0026middot;\n  \u003ca href=\"https://mockd.io/docs\"\u003eDocs\u003c/a\u003e \u0026middot;\n  \u003ca href=\"https://github.com/getmockd/mockd-samples\"\u003eSamples\u003c/a\u003e \u0026middot;\n  \u003ca href=\"https://github.com/getmockd/mockd/blob/main/CONTRIBUTING.md\"\u003eContributing\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\".github/assets/demo.gif\" alt=\"mockd demo\" width=\"800\"\u003e\n\u003c/p\u003e\n\n---\n\n## Quick Start\n\n```bash\n# Install\ncurl -sSL https://get.mockd.io | sh\n\n# Start + create a stateful CRUD API in one command\nmockd start\nmockd add http --path /api/users --stateful users\n\n# It works immediately\ncurl -X POST localhost:4280/api/users -d '{\"name\":\"Alice\",\"email\":\"alice@test.com\"}'\n# → {\"id\":\"a1b2c3\",\"name\":\"Alice\",\"email\":\"alice@test.com\"}\n\ncurl localhost:4280/api/users\n# → {\"data\":[{\"id\":\"a1b2c3\",\"name\":\"Alice\",\"email\":\"alice@test.com\"}],\"meta\":{\"total\":1}}\n```\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eMore install options\u003c/strong\u003e\u003c/summary\u003e\n\n```bash\nbrew install getmockd/tap/mockd                                          # Homebrew\ndocker run -p 4280:4280 -p 4290:4290 ghcr.io/getmockd/mockd:latest      # Docker\ngo install github.com/getmockd/mockd/cmd/mockd@latest                    # Go\n```\n\nPre-built binaries for Linux, macOS, and Windows on the [Releases](https://github.com/getmockd/mockd/releases) page.\n\u003c/details\u003e\n\n## Why mockd?\n\nEvery other mock tool makes you choose: pick one protocol, install a runtime, bolt on extensions. mockd doesn't.\n\n| | mockd | WireMock | Mockoon | json-server | Prism | MockServer |\n|---|:---:|:---:|:---:|:---:|:---:|:---:|\n| **Single binary, no runtime** | :white_check_mark: | :x: JVM | :x: Node | :x: Node | :x: Node | :x: JVM |\n| **HTTP + gRPC + GraphQL + WS** | :white_check_mark: | 🔌 Ext | :x: | :x: | :x: | Partial |\n| **MQTT + SSE + SOAP + OAuth** | :white_check_mark: | :x: | :x: | :x: | :x: | :x: |\n| **Stateful CRUD** | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: | :x: | :x: |\n| **Import OpenAPI/Postman/HAR** | :white_check_mark: | :white_check_mark: | :white_check_mark: | :x: | :white_check_mark: | :white_check_mark: |\n| **Chaos engineering** | :white_check_mark: | :white_check_mark: | :x: | :x: | :x: | :x: |\n| **MCP server (AI-native)** | :white_check_mark: | :x: | :x: | :x: | :x: | :x: |\n| **Cloud tunnel sharing** | :white_check_mark: | :x: | :white_check_mark: | :x: | :x: | :x: |\n| **Built-in web dashboard** | :white_check_mark: | :x: | :white_check_mark: | :x: | :x: | :x: |\n\n\u003e 🔌 **Ext** = available via separate extension, not bundled. mockd includes everything in a single binary.\n\n## Digital Twins\n\nImport a real API spec, bind it to stateful tables, and get a mock that passes the real SDK:\n\n```yaml\n# mockd.yaml — Stripe digital twin\nversion: \"1.0\"\nimports:\n  - path: stripe-openapi.yaml\n    as: stripe\ntables:\n  - name: customers\n    idStrategy: prefix\n    idPrefix: \"cus_\"\n    seedData:\n      - { id: \"cus_1\", name: \"Acme Corp\", email: \"billing@acme.com\" }\nextend:\n  - { mock: stripe.GetCustomers, table: customers, action: list }\n  - { mock: stripe.PostCustomers, table: customers, action: create }\n  - { mock: stripe.GetCustomersCustomer, table: customers, action: get }\n  - { mock: stripe.PostCustomersCustomer, table: customers, action: update }\n  - { mock: stripe.DeleteCustomersCustomer, table: customers, action: delete }\n```\n\n```bash\nmockd start -c mockd.yaml --no-auth\ncurl -X POST localhost:4280/v1/customers -d \"name=Test\u0026email=test@corp.com\"\n# → {\"id\":\"cus_a1b2c3\",\"object\":\"customer\",\"name\":\"Test\",\"email\":\"test@corp.com\"}\n```\n\n**Validated with real SDKs:**\n- Stripe: **49/49** `stripe-go` SDK tests pass\n- Twilio: **13/13** `twilio-go` SDK tests pass\n- OpenAI: `openai` Python SDK verified (models, assistants, chat completions)\n\nSee [mockd-samples](https://github.com/getmockd/mockd-samples) for complete digital twin configs.\n\n## AI-Native (MCP)\n\nmockd includes a built-in [Model Context Protocol](https://modelcontextprotocol.io/) server with **18 tools**. AI agents can create mocks, manage state, import specs, and verify contracts without touching the CLI:\n\n```json\n{\n  \"mcpServers\": {\n    \"mockd\": { \"command\": \"mockd\", \"args\": [\"mcp\"] }\n  }\n}\n```\n\nWorks in Claude Desktop, Cursor, Windsurf, and any MCP-compatible editor. Tools cover mock CRUD, stateful resources, chaos injection, request logs, verification, workspaces, and import/export.\n\n## Features\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eMulti-Protocol Mocking\u003c/strong\u003e — 7 protocols, unified CLI\u003c/summary\u003e\n\n| Protocol | Port | Example |\n|----------|------|---------|\n| HTTP/HTTPS | 4280 | `mockd add http --path /api/hello --body '{\"msg\":\"hi\"}'` |\n| gRPC | 50051 | `mockd add grpc --proto svc.proto --service Greeter --rpc-method Greet` |\n| GraphQL | 4280 | `mockd add graphql --path /graphql --operation hello` |\n| WebSocket | 4280 | `mockd add websocket --path /ws --echo` |\n| MQTT | 1883 | `mockd add mqtt --topic sensors/temp --payload '{\"temp\":72}'` |\n| SSE | 4280 | `mockd add http --path /events --sse --sse-event 'data: hello'` |\n| SOAP | 4280 | `mockd add soap --path /soap --operation GetWeather --response '\u003cOK/\u003e'` |\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eImport \u0026 Export\u003c/strong\u003e — OpenAPI, Postman, HAR, WireMock, cURL, WSDL\u003c/summary\u003e\n\n```bash\nmockd import openapi.yaml           # OpenAPI 3.x / Swagger 2.0\nmockd import collection.json        # Postman collections\nmockd import recording.har          # HAR files\nmockd import wiremock-mapping.json  # WireMock stubs\nmockd import service.wsdl           # WSDL → SOAP mocks\nmockd import \"curl -X GET https://api.example.com/users\"  # cURL commands\nmockd export --format yaml \u003e mocks.yaml\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eChaos Engineering\u003c/strong\u003e — latency, errors, circuit breakers\u003c/summary\u003e\n\n```bash\nmockd chaos apply flaky       # 30% error rate\nmockd chaos apply slow-api    # 200-800ms latency\nmockd chaos apply offline     # 100% 503 errors\nmockd chaos disable\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eCloud Tunnel\u003c/strong\u003e — share local mocks instantly\u003c/summary\u003e\n\n```bash\nmockd tunnel\n# → https://a1b2c3d4.tunnel.mockd.io → http://localhost:4280\n```\n\nAll 7 protocols multiplexed through a single secure connection on port 443. Works behind NAT and firewalls.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eWorkspaces\u003c/strong\u003e — isolated mock environments\u003c/summary\u003e\n\n```bash\nmockd workspace create -n \"Payment API\" --use\nmockd import stripe-openapi.yaml\nmockd workspace create -n \"Comms API\" --use\nmockd import twilio-openapi.yaml\n# Mocks, state, and logs are fully isolated per workspace\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eProxy Recording\u003c/strong\u003e — record real traffic, replay as mocks\u003c/summary\u003e\n\n```bash\nmockd proxy start --port 8888\n# Configure your app to use http://localhost:8888 as proxy\n# Traffic is recorded, then replay with:\nmockd import recordings/session.json\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eWeb Dashboard\u003c/strong\u003e — manage mocks visually\u003c/summary\u003e\n\nRelease builds serve a web UI from the admin port (`http://localhost:4290`). VS Code-style editor, command palette, mock tree with folders, request log viewer, and near-miss debugging.\n\u003c/details\u003e\n\n## Mockd Cloud\n\nmockd works fully offline with no account required. For teams that want shared environments:\n\n- **Persistent cloud mocks** — deploy mock environments your whole team can hit\n- **Team management** — shared workspaces with access controls\n- **Cloud tunnels** — authenticated tunnels with custom domains\n\nComing soon. [Join the waitlist](https://mockd.io/pricing#waitlist-form).\n\n## Documentation\n\nFull guides, API reference, and config docs at **[mockd.io](https://mockd.io)**.\n\n## Contributing\n\nContributions welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for setup.\n\n## License\n\n[Apache License 2.0](LICENSE) — free for commercial use.\n","funding_links":[],"categories":["Software","Tools","Testing \u0026 Debugging Tools"],"sub_categories":["Service Virtualization","Tools - Testing, Prototyping \u0026 Mocking","Talks"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetmockd%2Fmockd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgetmockd%2Fmockd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgetmockd%2Fmockd/lists"}