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

@vibebrowser/mkt-alerts

v1.0.0

Published

CLI to manage price alerts on a self-hosted mkt daemon

Readme

mkt-alerts

Price and indicator alert daemon — self-hosted on a free GCP e2-micro VM, delivered via ntfy push to your phone.

Deploys mkt as a headless engine behind a Cloudflare Tunnel (no open firewall ports).

# Subscribe — get your ntfy push URL (open in ntfy app on phone)
npx -y @vibebrowser/mkt-alerts subscribe

# Add a price alert
npx -y @vibebrowser/mkt-alerts add \
  --symbol BTC-USD \
  --condition below --value 90000 \
  --reason "Support break — invalidates bull thesis" \
  --link "https://notion.so/my-analysis"

# Add a compound alert (RSI + price)
npx -y @vibebrowser/mkt-alerts add \
  --symbol AAPL \
  --condition rsi_below --value 30 \
  --condition below --value 200 \
  --reason "Oversold at key support" \
  --desk stocks

# List active alerts
npx -y @vibebrowser/mkt-alerts list

# Remove an alert
npx -y @vibebrowser/mkt-alerts remove --id <id>

Install as a Claude Code skill

Agents (stocks-advisor, crypto-advisor, multi-lens-quorum) can set alerts automatically after analysis:

npx skills add github.com/dzianisv/mkt-alerts/ -s mkt-alerts -y

Or manually copy .claude/skills/mkt-alerts/SKILL.md into ~/.claude/skills/mkt-alerts/.


Deploy your own instance

Prerequisites (local):

  • gcloud CLI with a named config authenticated to your GCP account
  • Bitwarden CLI (bw) unlocked — source ~/.env.d/bitwarden.env
  • curl, python3

Deploy:

git clone https://github.com/dzianisv/mkt-alerts
cd mkt-alerts
bash deploy.sh

That's it. The script:

  1. Creates the GCP VM (or starts it if stopped)
  2. Upserts the Cloudflare DNS CNAME
  3. Installs Go, Bun, mkt binary, systemd services on the VM
  4. Verifies https://mkt.agentlabs.cc/metrics responds

Re-run any time to redeploy — idempotent.


Setting alerts

Use the included CLI — no SSH needed after deploy.sh runs.

Get your subscribe URL:

bun mkt-alerts.ts subscribe
# → https://ntfy.sh/mkt-a3f9c1e72d4b8e3f
# Open ntfy app on your phone and subscribe to that URL

Add an alert:

bun mkt-alerts.ts add \
  --symbol BTC-USD \
  --condition below \
  --value 90000 \
  --reason "Support break — exit signal" \
  --link "https://your-analysis-url"
# channel defaults to your ntfy topic — no --channel needed

List active alerts:

bun mkt-alerts.ts list

Remove an alert:

bun mkt-alerts.ts remove --id <id>

Alerts are checked every 15 minutes. When a condition fires you get a push notification with the reasoning and analysis link.


Alert conditions

| Condition | Meaning | |---|---| | above / below | price crosses threshold | | pct_up / pct_down | price moves X% from current | | rsi_above / rsi_below | RSI crosses value | | sma_cross_above / sma_cross_below | price crosses SMA | | macd_cross | MACD line crosses signal |

Supports stocks (AAPL, CRM) and crypto (BTC-USD, ETH-USD, AAVE-USD).


Delivery channels

Telegram

The bot (@OpenClawBotSupport_Bot, token in Bitwarden as mkt-daemon/telegram-bot-token) posts to the @CryptoAiInvestor channel using the Bot API.

How delivery works:

  1. check.ts calls api.telegram.org/bot{TOKEN}/sendMessage with chat_id=@CryptoAiInvestor
  2. Telegram delivers the message to the channel

Requirement: the bot must be an admin of the channel. Without admin rights the API returns Unauthorized and the alert is silently dropped.

To add the bot as admin:

  1. Open @CryptoAiInvestor in Telegram
  2. Channel Info → Administrators → Add Admin → search @OpenClawBotSupport_Bot
  3. Grant "Post Messages" permission → Save
--channel telegram-bot:@CryptoAiInvestor

To post to a private chat instead (no admin needed — just start the bot):

--channel telegram-bot:@yourusername        # username
--channel telegram-bot:-1001234567890       # numeric chat ID

Message format:

🔔 BTC-USD crossed below 90000
Support break — exit signal
📊 https://your-analysis-url

To use a different bot: create one via @BotFather, add the token to Bitwarden as mkt-daemon/telegram-bot-token, redeploy.

Email

Not yet wired. To add: set RESEND_API_KEY in Bitwarden as mkt-daemon/resend-api-key, then use:

--channel email:[email protected]

Requires a free Resend account (3,000 emails/month free).

ntfy (no account needed)

--channel ntfy:your-topic-name
# subscribe on phone: https://ntfy.sh/your-topic-name

API

| Endpoint | Description | |---|---| | GET /metrics | Uptime, symbol count, alert count | | GET /quotes | All cached prices | | GET /quotes/BTC-USD | Single symbol | | GET /alerts | Active mkt-native alert rules |

curl https://mkt.agentlabs.cc/quotes/BTC-USD

Logs

gcloud --configuration=bisonte compute ssh mkt-daemon \
  --zone=us-central1-a --project=mkt-daemon-alerts \
  --command="sudo journalctl -u mkt-daemon -f"