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

thatsweird

v1.0.4

Published

Process anomaly detector for Linux - identifies suspicious processes by analyzing provenance, behavior, and trust levels

Readme

thatsweird

Process anomaly detector for Linux. It scans running processes, checks provenance, and scores suspicious behavior so you can focus on what actually looks risky.

Install

IGNORE NPM INSTALL INSTRUCTIONS $bash sudo npm install -g thatsweird

##Requires Python 3.8+ on the target system.

Quick start

$bash weird # Scan for suspicious processes

Make sure terminal window is big enough to see full table

##Options

weird -v # Verbose output (show all processes) weird --net # Show networked processes weird --json # JSON output for scripting weird inspect 1234 # Deep dive on a PID weird man # Manual page

What it does

  • Verifies process provenance (package manager ownership + signature evidence)
  • Detects suspicious behaviors (memfd execution, deleted binaries, odd paths, network exposure, etc.)
  • Computes a weirdness score so high‑risk items bubble up
  • Labels trust levels (OFFICIAL, UNKNOWN, USER_TRUSTED, etc.)
  • Tries to identify UNKNOWN processes via man pages and registry lookups

How descriptions are generated (flow + fallbacks)

When a process is UNKNOWN, weird tries to add a human‑readable description using this chain:

  1. Man page lookup (local, fast)
    If a man page exists for the process name, the tool extracts the NAME or DESCRIPTION section.

  2. Registry lookup (best effort, network)
    If there is no man page result, it infers the ecosystem from the process path/parent/cmdline:

    • Node → npm registry
    • Python → PyPI
    • Rust/Go/other → GitHub search
      This yields a package name, short description, and URL (when available).
  3. Final fallback
    If nothing can be identified, the table shows “Likely Malware” for UNKNOWN processes.

Network inspection (what it actually does)

weird does not sniff packet contents. It builds a process‑to‑socket view using:

  • ss (preferred) or /proc/net as a fallback
  • Outbound connections by default

Trust levels (provenance, not security)

  • OFFICIAL — Signed distro repository
  • THIRD_PARTY — APT package signed by a non‑distro key
  • UNTRACKED_KEY — Trusted key of unclear origin
  • USER_LOCAL — User‑installed binary (e.g., /usr/local or ~/.local)
  • APPIMAGE — Portable app without sandboxing
  • FLATPAK / SNAP / CONTAINER / KERNEL / USER_TRUSTED / UNKNOWN — Other provenance classes

Even OFFICIAL packages can be compromised. Treat trust as provenance only.

Weirdness labels (untrusted classes)

For UNKNOWN / UNTRACKED_KEY / USER_LOCAL / APPIMAGE:

  • 0 — UNKNOWN (green)
  • 1–19 — UNKNOWN (A little weird)
  • 20–39 — UNKNOWN (Weird)
  • 40–59 — UNKNOWN (Very weird)
  • 60+ — UNKNOWN (CRITICAL WEIRDNESS)

Trusted processes that trip suspicious signals (e.g., unusual network activity, deleted binaries, memfd execution) display “(Maybe Weird)”.

Example output

    PID    SCORE  TRUST LEVEL                                 NAME                DESCRIPTION
--------------------------------------------------------------------------------------------------------------
  12345   75/100  UNKNOWN (CRITICAL WEIRDNESS)                suspicious          Likely Malware
   5432   20/100  USER_LOCAL (Weird)                          mytool              (no description)
    847   10/100  OFFICIAL (Maybe Weird)                      avahi-daemon        avahi-daemon - The Avahi mDNS/DNS-SD daemon

Commands

weird [-v] [-a] [--net] [--net-outbound-only]
      [--include-listen] [--enrich-net]
      [--json | --ndjson]
      [--log-file FILE]
      [--raw-cmdline]
      [--debug-log FILE]
weird inspect PID
weird trust NAME_OR_PATH
weird rules [show | init [--force]]
weird cache [--rebuild]
weird baseline init | show | diff
weird watch
weird falco-rules
weird man

Files

  • ~/.config/weird/config.toml — Policy configuration
  • ~/.config/weird/rules.toml — User rules
  • ~/.config/weird/user_trusted.txt — User trusted list
  • ~/.config/weird/cache/file_package_map.json — File → package cache
  • ~/.config/weird/baseline.json — Baseline data

Help

weird --help
weird man

License

MIT