# Native messaging manifests `install.sh` (Linux, macOS) and `install.ps1` (Windows) fill in the placeholders and register the manifests for the current user. Chrome allows two ids by default: the Chrome Web Store build (`pmhfoafjoogobhfadaicklhkldgnafmk`) and the unpacked development build, pinned to `kogapfibnnpeapfcjkkpgjddbhnjfein` by the manifest key in kestrove-browser. Firefox uses `browser@kestrove.app`. Pass `--chrome-id a,b` / `-ChromeId a,b` to allow other ids instead. ```bash native-messaging/install.sh # every browser with a profile dir, host from target/ native-messaging/install.sh --browsers chrome --nmh /opt/kestrove/kestrove-nmh native-messaging/install.sh --user-data-dir /tmp/profile # a Chromium started with --user-data-dir (tests) native-messaging/install.sh --uninstall ``` | Browser | macOS (dev only; the Apple app ships its own host) | |---|---| | Chrome | `~/Library/Application Support/Google/Chrome/NativeMessagingHosts/` | | Edge / Brave / Chromium | `~/Library/Application Support/{Microsoft Edge,BraveSoftware/Brave-Browser,Chromium}/NativeMessagingHosts/` | | Firefox | `~/Library/Application Support/Mozilla/NativeMessagingHosts/` | | Browser | Linux | Windows | |---|---|---| | Chrome | `~/.config/google-chrome/NativeMessagingHosts/app.kestrove.nmh.json` | `HKCU\Software\Google\Chrome\NativeMessagingHosts\app.kestrove.nmh` → path to json | | Edge | `~/.config/microsoft-edge/NativeMessagingHosts/` | `HKCU\Software\Microsoft\Edge\NativeMessagingHosts\app.kestrove.nmh` | | Firefox | `~/.mozilla/native-messaging-hosts/app.kestrove.nmh.json` | `HKCU\Software\Mozilla\NativeMessagingHosts\app.kestrove.nmh` | | Brave | `~/.config/BraveSoftware/Brave-Browser/NativeMessagingHosts/` | same key as Chrome | `allowed_origins` / `allowed_extensions` pin the host to **your** extension id. That is the first line of defense against other extensions (docs/04 A8).