Skip to content
Dark MatterDark Matter
Extension

Local Development

Running the DMTR extension in a local development environment.

Local development workflow

1. Start the DMTR API

From the monorepo root:

pnpm dev

Or from the API package directly:

cd packages/api && pnpm dev

The API starts at http://localhost:3100 with Patient Zero positions and Blackmoat intelligence data seeded automatically.

2. Build the extension

cd packages/extension && pnpm dev

This runs Vite in watch mode, rebuilding on file changes.

3. Load in Chrome

  1. Open chrome://extensions/
  2. Enable Developer mode
  3. Load unpacked → select packages/extension/dist/
  4. After each rebuild, click the reload icon on the extension card

4. Test entity extraction

Navigate to a PitchBook company page. The extension content script will run, extract the company name, and send it to the side panel. Click the DMTR icon to open the side panel and see the enrichment.

For testing without PitchBook access, you can call the intelligence API directly:

curl http://localhost:3100/v1/intelligence/enrich/saronic | jq .
curl -X POST http://localhost:3100/v1/intelligence/resolve \
  -H "Content-Type: application/json" \
  -d '{"name": "Anduril Industries"}'

5. Custom API URL

By default the extension connects to http://localhost:3100. To point at a different host (e.g. a staging server), set the DMTR_API_URL environment variable before building:

DMTR_API_URL=https://api.staging.dmtr.dev pnpm build

Vite injects this value at compile time via the __DMTR_API_URL__ define. At runtime, the value can still be overridden per-session via chrome.storage.local (key: dmtr_api_url).

6. Reset data

curl -X POST http://localhost:3100/v1/reset

This clears and re-seeds all Patient Zero and intelligence data.

Edit this page on GitHub

Last reviewed: March 23, 2026

Was this page helpful?