Skip to content

docs: document native macOS and Windows support - #900

Merged
slayerjain merged 4 commits into
mainfrom
feat/native-macos-windows-support
Aug 24, 2026
Merged

docs: document native macOS and Windows support#900
slayerjain merged 4 commits into
mainfrom
feat/native-macos-windows-support

Conversation

@slayerjain

Copy link
Copy Markdown
Member

What this changes

Keploy now runs natively on macOS and Windows — the docs still said it does not, and sent every macOS/Windows user to Lima, WSL, or Docker.

  • macOS: native userspace interception (no eBPF, no sudo, nothing installed system-wide), covering Go, Node, Python, Java including their HTTPS traffic.
  • Windows: native via the WinDivert driver (x86‑64), same four runtimes.

Most users run the community edition, which is the Keploy binary — so this is the default experience now, not an enterprise-only path.

Pages updated (all in the live version-4.0.0)

  • installation/macos.md — new Option 1: Run Keploy natively with record/replay steps; Lima/Docker demoted to alternatives. Notes: no password prompt, run the real executable (not npm start — macOS drops the interception through a launcher), and Go HTTPS works without touching the keychain.
  • installation/windows.md — new native Option 1 (Administrator + WinDivert), WSL/Docker as alternatives, x86‑64 note.
  • concepts/platform-requirements.md — macOS and Windows marked natively supported in the "Without Docker" column; Windows/ARM and container routes still listed.
  • keploy-explained/dev-guide.md, server/installation_tabs.md — corrected the "does not natively support macOS" lines.

Notes for reviewers / timing

Keploy now runs natively on macOS (userspace interception, no eBPF, no
privileges) and on Windows/x86-64 (the WinDivert driver), covering Go, Node,
Python and Java apps. The docs still said "Keploy does not natively support
macOS/Windows" and routed everyone to Lima, WSL or Docker.

- installation/macos.md, installation/windows.md: add a native "Option 1" with
  record/replay steps, keeping Lima/WSL/Docker as alternatives. Note the macOS
  no-sudo behaviour, the launcher caveat (run the real executable, not
  `npm start`), and that Go HTTPS is handled without touching the keychain.
- concepts/platform-requirements.md: mark macOS and Windows as natively
  supported in the "Without Docker" column, with the Windows/ARM and container
  routes still listed.
- keploy-explained/dev-guide.md, server/installation_tabs.md: correct the
  "does not natively support macOS" statements.

Signed-off-by: Shubham Jain <shubhamkjain@outlook.com>
Native Windows interception used a kernel packet-filter driver, which could
only load from an elevated terminal. Keploy now instruments the application it
starts and intercepts its network calls in user space instead, so the driver —
and the Administrator requirement with it — is gone.

- installation/windows.md: drop the "open an Administrator terminal" step and
  the WinDivert explanation, and state the two limits that come with
  instrumenting the application rather than filtering packets: Keploy has to be
  the one that starts it, and UDP traffic is not recorded. Hostname resolution
  is covered, so a dependency that no longer exists is still answered from its
  Mock on a replay.
- concepts/platform-requirements.md: macOS and Windows are both userspace now,
  and neither needs sudo or Administrator.

The `wsl --install` steps keep their "as Administrator" note — that genuinely
needs elevation and is unrelated.

Blocked on keploy/keploy#4476, which removes the driver. Do not merge before it
ships, or the page will describe behaviour users do not have yet.

Signed-off-by: Shubham Jain <shubhamkjain@outlook.com>
The prettier lane fails on this PR because installation/macos.md carries two
consecutive blank lines. Prettier collapses them, and the check runs over every
file the PR touches, so the whole lane goes red on whitespace.

Content is untouched — this is the output of `prettier --write` on that one
file, and every file this PR changes now passes under both prettier 2.8.8 (the
version .github/workflows/prettify_code.yml asks for) and 3.9.6 (the version the
action actually installs).

Signed-off-by: Shubham Jain <shubhamkjain@outlook.com>
prettify_code.yml passes prettier_version: 2.8.8 to
creyD/prettier_action@v4.6, and the action ignores it — the run log reads "The
following package was not found and will be installed: prettier@3.9.6". So the
formatting contract CI enforced was not the one CONTRIBUTING and
.prettierrc.json describe, and the two could drift apart silently: a file
formatted to the documented version could fail the check, and a file the check
accepts could be wrong by the documented version.

Calling prettier directly removes the ambiguity — `npx prettier@2.8.8` runs
2.8.8 — and drops a third-party action from the path for a one-line command.

2.8.8 stays because it is what this repository is formatted with: across
versioned_docs/version-4.0.0, 23 files diverge from 2.8.8 and 29 from 3.9.6.
Moving to 3.x reflows markdown and is a deliberate migration, not something to
inherit from an action's default.

Signed-off-by: Shubham Jain <shubhamkjain@outlook.com>
@slayerjain
slayerjain force-pushed the feat/native-macos-windows-support branch from c60a5c7 to dcc4169 Compare August 23, 2026 07:58
@slayerjain
slayerjain merged commit 89ac5a5 into main Aug 24, 2026
7 checks passed
@slayerjain
slayerjain deleted the feat/native-macos-windows-support branch August 24, 2026 09:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant