npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@paramira/device-scanner

v0.1.0

Published

Heuristic threat classification from a stream of BLE/wifi device observations — flags passive sniffers, anomalously strong signals, followers, and sybil clusters.

Readme

@paramira/device-scanner

Home: this package lives in proto (packages/device-scanner), the public home of the hardened relay layer (proto ADR-0013). It moved here from the Rubanda apps monorepo on 2026-10-17, as its current code without that repo's history.

Heuristic threat classification from a stream of BLE/wifi device observations. Feed it { address, rssi, timestamp, advertises } as you see devices; it flags four patterns:

  • passive sniffer — present constantly, never advertises a service
  • strong signal — anomalously close (RSSI above -30 dBm)
  • follower — the same device, seen again across separate time windows, not just once
  • sybil cluster — many brand-new devices appearing together in a short window
import { createDeviceScanner } from '@paramira/device-scanner'

const scanner = createDeviceScanner()
scanner.observe({ address: 'AA:BB:CC:DD:EE:FF', rssi: -55, timestamp: Date.now(), advertises: true })

scanner.classify('AA:BB:CC:DD:EE:FF') // 'normal' | 'suspicious' | 'hostile'
scanner.getAlerts()                   // every ThreatAlert raised so far
scanner.getDevices()                  // every observed device + its classification

Not @paramira/device-link — that's linking a browser as a full paramira device (WhatsApp-Web style trust). This is nearby-radio monitoring, an unrelated concept that happens to share the word "device."

Where this came from, and an honest note on where it'd go

Ported from a censorship-resistant DIDComm messaging spike (/home/pat/dev/proto) — a factory-function port of a class with zero DIDComm/Credo coupling already.

Unlike this session's other extractions, there's no existing paramira app gap to point at here: no abantu/iwacu/isoko feature scans nearby BLE/wifi devices today. demo/mesh-monitor.mjs is honest about that — it's the shape this would take if one of those apps grew an offline/local-mesh discovery feature (the same domain proto's own DIDComm-over-BLE/LoRa work explores), not a fix for a gap that exists today.

node demo/mesh-monitor.mjs

What this doesn't address

Pure heuristics over observation counts/timing/signal strength — no actual radio-layer verification (MAC randomization defeats the address-based tracking entirely, the same way it's designed to defeat real-world BLE tracking). Good enough to flag "something about this pattern is off," not a security boundary on its own.