Client-side encryption overlay for Instagram Web DMs.
GhostDM does not restore Instagram's native end-to-end encryption. Instead, it encrypts message text before Instagram receives it and decrypts GhostDM payloads locally in the browser.
- Chrome Manifest V3 extension
- Instagram Web content script
- Local ECDH key pair
- Public pairing-code exchange
- AES-GCM encryption through Web Crypto
- Manual "Encrypt" button
- Ctrl/Cmd + Shift + E shortcut while the DM composer is focused
- Auto-decrypt visible GhostDM messages
npm install
npm run buildChrome: open chrome://extensions, enable developer mode, choose "Load unpacked", and select dist.
Firefox: open about:debugging#/runtime/this-firefox, choose "Load Temporary Add-on", and select dist-firefox/manifest.json.
- Open the GhostDM extension popup.
- Copy your public pairing code and send it to the other person.
- Paste their pairing code into GhostDM and save it.
- Compare the displayed fingerprints over a second channel if you need to verify identity.
- On Instagram Web, type a DM and click "Encrypt" before sending.
- Send the encrypted
ghostdm:v2:text through Instagram.
- Both users need GhostDM installed.
- Pairing codes are public, but fingerprints should be compared to detect key swaps.
- Mobile Instagram will show encrypted payloads.
- Metadata is not hidden.
- Attachments are not encrypted yet.
- DOM selectors may break when Instagram changes its UI.
- This is not audited security software.
GhostDM does not operate a backend service and does not collect or transmit personal data outside the local browser/add-on. See PRIVACY.md.
npm install
npm run check
npm run build:chrome
npm run build:firefox
npm run packagenpm run package writes artifacts/ghostdm-chrome.zip and artifacts/ghostdm-firefox.zip.