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

@open-matrix/daemon

v0.1.1

Published

Matrix daemon — local MQTT broker, actor hosting, federation, FlowPad UI, CLI. One install, batteries included.

Downloads

177

Readme

@matrix/daemon

Matrix daemon — local MQTT broker, actor hosting, federation, FlowPad UI, and CLI tools. One install, batteries included.

Install

npm install -g @matrix/daemon

Quick Start

# Start the daemon (runs in background)
matrixd start --background --federation --realm MY-REALM

# Open FlowPad UI in your browser
#   http://localhost:3100/apps/flowpad/

# Query actors from the terminal
matrix -r MY-REALM introspect daemon
matrix -r MY-REALM send daemon ping
matrix -r MY-REALM catalog

# Load a project directory
matrixd start --background --federation --realm MY-REALM --dir ./my-project

Two CLIs

matrixd — Daemon Lifecycle

| Command | Description | |---------|-------------| | matrixd start | Start the daemon (MQTT broker + HTTP server + actors) | | matrixd stop | Stop the daemon | | matrixd status | Show daemon status (running/stopped, PID, realm) | | matrixd config | Show configuration | | matrixd add <dir> | Register a project directory | | matrixd list | List registered projects | | matrixd remove <mount> | Unregister a project |

Start Options

matrixd start [options]
  -d, --dir <path>       Project directory to auto-load
  -p, --port <number>    MQTT broker port (default: 1883)
  -f, --federation       Enable federation bridge to HiveMQ
  -b, --background       Run daemon in background (detached)
  -v, --verbose          Enable verbose logging
  --realm <name>         Realm name (default: derived from directory)
  --max-depth <n>        Max directory scan depth (default: 3)
  --src-only             Only scan src/ folder

matrix — Actor Commands

| Command | Description | |---------|-------------| | matrix introspect <path> | Get actor type, status, accepts, emits | | matrix send <path> <cmd> [payload] | Send command, wait for reply | | matrix ls <path> | List children at path | | matrix subscribe <path> [event] | Stream events (Ctrl+C to stop) | | matrix catalog | List all actors in the daemon | | matrix project add <path> | Register project at runtime |

Global Options

matrix [options] <command>
  -r, --realm <name>     Realm name (default: "matrix-3")
  -h, --host <host>      Broker host (default: "127.0.0.1")
  -p, --port <port>      Broker port (default: 1883)
  -t, --timeout <ms>     Timeout (default: 5000)
  --json                 JSON output

Examples

Introspect an actor

$ matrix -r MY-REALM introspect daemon
{
  "type": "DaemonActor",
  "mount": "daemon",
  "realm": "MY-REALM",
  "status": "running",
  "accepts": ["$introspect", "$catalog", "$config", "ping", "status",
              "scan", "listDir", "readFile", "loadProject", ...],
  "emits": ["pong", "statusResponse"]
}

Send a command

$ matrix -r MY-REALM send daemon ping
{ "message": "pong -> pong from daemon", "mount": "daemon" }

$ matrix -r MY-REALM send daemon scan
{ "projects": [...], "realm": "MY-REALM" }

Read a file from a project

$ matrix -r MY-REALM send 05-daemon-watcher.index_html read
{ "content": "<!DOCTYPE html>...", "path": "index.html", "size": 1234 }

List all actors

$ matrix -r MY-REALM catalog
Realm: MY-REALM
Components: 15

daemon          DaemonActor       examples=0
tree-domain     _TreeDomain       examples=0
05-daemon-watcher  FolderProjection  examples=0
...

Subscribe to events

$ matrix -r MY-REALM subscribe daemon *
Subscribing to daemon/$events (all events)...
Press Ctrl+C to exit.

[pong] {"message":"pong from daemon"}
[statusResponse] {"status":"running","uptime":42}

FlowPad UI

When the daemon is running, FlowPad is available at:

http://localhost:3100/apps/flowpad/

FlowPad provides:

  • Interactive query editor (JavaScript flow DSL + LISP)
  • Rich result viewers (trees, tables, data)
  • Built-in project categories with examples
  • Real-time transport message log
  • Federation backbone status

Federation

With --federation, the daemon connects to a public MQTT backbone (HiveMQ) enabling cross-realm communication. Any FlowPad browser tab can query your daemon from anywhere.

# Start with federation
matrixd start --federation --realm ACME-PROD

# From another machine's FlowPad, query:
#   Target: ACME-PROD/daemon
#   Action: introspect

What's Included

| Component | Description | |-----------|-------------| | MQTT Broker | Local Aedes broker on port 1883 | | HTTP Server | Static file server on port 3100 | | DaemonActor | Root actor with introspect, catalog, scan, file I/O | | FolderProjection | Filesystem-to-actor mapping | | TreeDomain | Hierarchical state tree | | Federation | HiveMQ backbone bridge | | FlowPad | Pre-built web UI | | matrixd CLI | Daemon lifecycle management | | matrix CLI | Actor query and control |

Ports

| Port | Protocol | Purpose | |------|----------|---------| | 1883 | MQTT | Local broker (actors + CLI) | | 3100 | HTTP | FlowPad UI + health endpoint |

Requirements

  • Node.js >= 20

License

MIT