Create a peer-reputation manager with optional graph, storage, and license configuration.
When a license key is supplied the constructor optimistically uses the paid-tier edge-history depth until init validates the key. If validation fails, the instance falls back to the free-tier limits.
Optional runtime configuration.
OptionalconfidenceBoostWeight?: numberWeight applied when adjusting DeviceManager confidence. Range 0–1.
Default: 0.2.
OptionalenabledEdgeTypes?: PeerEdgeType[]Edge types to include. Defaults to all five types when not specified.
Free-tier callers always have shared_tls_ja4, shared_canvas, and
shared_webgl silently filtered out regardless of this setting.
OptionallicenseKey?: stringPolar license key that unlocks Pro or Enterprise tier features.
| Tier | Price | Device limit | Servers | Edge types |
|---|---|---|---|---|
| Free | $0/mo | 10,000 | — | user + subnet |
| Pro | $49/mo | Unlimited | 1 server | all 5 types |
| Enterprise | $299/mo | Unlimited | Unlimited | all + custom |
Obtain a key at https://polar.sh.
OptionalmaxPeersPerDevice?: numberMaximum peer edges stored per device. Default: 50 (10 on the free tier).
Optimistic provisioning when a key is provided — downgraded to
FREE_TIER_MAX_HISTORY if Polar rejects the key.
Optionalstorage?: PeerStorage | AsyncPeerStorageCustom storage backend. Defaults to the built-in in-memory store.
Use createSqliteAdapter, createPostgresAdapter, or
createRedisAdapter to supply a persistent backend.
Async adapters (AsyncPeerStorage) must be initialised separately
via their own init() before being passed here.
The active license tier. Resolves to 'free' until init completes.
Assess the peer reputation of a device based on signals from the current request and cached reputation data from previously seen peers.
Raw fingerprint payload (FPDataSet or compatible object).
Peer identity context (ip, userId, tlsProfile).
Resolved device identifier from DeviceManager.
result.enrichmentInfo.details from DeviceManager,
used to cache ip/tls signals for this device.
Clear stored edges — all devices when deviceId is omitted.
OptionaldeviceId: stringReturn the cached reputation signals for a device, or null if not found.
Return the stored peer edges for a device.
Device identifier.
Optionallimit: numberMaximum edges to return.
Validate the Polar license key if one was supplied.
Call once at application startup before processing requests. Safe to await multiple times — subsequent calls return the cached promise.
Remove edges older than olderThanMs milliseconds. Returns the count
of pruned edges.
Patch deviceManager.identify() to automatically assess peer reputation
on every call and attach peerReputation and peerConfidenceBoost to
the result.
Register this after IpManager and TlsManager so that their
enrichmentInfo.details entries are available when peer-devicer runs.
Failures inside the peer analysis are non-fatal — the original result is returned unchanged when an error occurs.
PeerManager — passive peer reputation networking for the FP-Devicer Suite.
Builds and maintains a peer graph linking device identifiers that share common signals (IP subnet, user account, JA4 fingerprint, canvas/WebGL hash). After each
identify()call the reputation signals produced byip-devicerandtls-devicerare cached against the device node so that taint can propagate through the graph to connected peers.Integration with DeviceManager