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

@safetnsr/broth

v0.4.0

Published

slurp your knowledge base. local knowledge engine for devs and agents.

Readme

broth

slurp your knowledge base.

local knowledge engine for devs and agents. throw your markdown folders in, get semantic search, wikilink graphs, task tracking, and vault health — all from the terminal. no cloud, no electron.

powered by qmd (bundled, no separate install needed).

npx @safetnsr/broth slurp ./my-notes
broth recall "what did we decide about auth?"

install

npm i -g @safetnsr/broth

that's it. qmd ships as a dependency — no extra setup.

commands

broth follows the same command patterns as Obsidian CLI — familiar if you use Obsidian, intuitive if you don't. all commands support --json for structured output and --copy to send output to clipboard.

vault setup

| command | what it does | |---|---| | broth slurp [path] | ingest a markdown folder — index, link, auto-embed | | broth simmer | rebuild everything — re-index, re-link, re-embed |

notes

| command | aliases | what it does | |---|---|---| | broth pour <name> | new | create a new note (--overwrite, --silent) | | broth taste <note> | cat, read | read a note (--raw for frontmatter) | | broth stir <note> | append | append to a note | | broth dump <note> | rm | remove a note | | broth move <src> <dest> | mv | move/rename (auto-updates wikilinks) |

search

| command | aliases | what it does | |---|---|---| | broth sip <query> | search | full-text search (BM25) | | broth deep-sip <query> | | semantic vector search | | broth recall <query> | query | hybrid search with reranking, agent-optimized | | broth find <pattern> | | find notes by name or title (--exact, --total) |

daily notes

| command | aliases | what it does | |---|---|---| | broth daily | journal | create or read today's daily note | | broth daily:taste | daily:read | read today's daily note | | broth daily:stir | daily:append | append to today's daily note |

all daily commands accept --date YYYY-MM-DD for a specific date.

properties (frontmatter)

| command | aliases | what it does | |---|---|---| | broth meta <note> | | view all frontmatter | | broth meta:get <note> | property:get | get a property value | | broth meta:set <note> | property:set | set a property value | | broth meta:rm <note> | property:rm | remove a property |

broth meta:set meeting-notes --name status --value done
broth meta:get meeting-notes --name status

vault navigation

| command | aliases | what it does | |---|---|---| | broth stock [path] | ls | list all notes (--total for count) | | broth tags | | all tags with counts (--sort name\|count, --total) | | broth tasks | | all tasks (--todo, --done, --daily, --total) |

graph & health

| command | aliases | what it does | |---|---|---| | broth bones <note> | | outgoing wikilinks | | broth backbones <note> | backlinks | incoming wikilinks | | broth spoil | | find orphans + broken links | | broth recipe | info | vault health score + stats |

why broth

your agent's memory is a cold folder of markdown files. broth makes it a warm, searchable knowledge base. you slurp it in, let it simmer, and sip back exactly what you need.

works with any markdown folder — openclaw memory/, obsidian vaults, roam exports, plain notes.

# index openclaw's memory
broth slurp ~/.openclaw/workspace/memory

# ask it something
broth recall "what tools have we shipped?"

# manage daily notes
broth daily:stir --content "- [x] shipped broth v0.4"
broth daily:taste

# find what's rotting
broth spoil

# manage notes
broth pour "meeting-notes" --content "# Standup" -t meeting
broth meta:set meeting-notes --name status --value active
broth move meeting-notes archive/2026-03-meeting

config

broth writes a .broth.json to your vault root and uses .broth.db for the link graph. both are local, no network calls.

license

MIT