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

mailkite-runcloud

v0.1.0

Published

Wire MailKite into a RunCloud-managed web app — set the site's mail env (via the git deploy script, or copy-paste) and optionally create an inbound-email webhook route, in one command.

Readme

Read-only mirror. This repo is a generated, release-time mirror of the MailKite monorepo (the private source of truth) — development doesn't happen here. Install from npm and open issues against the MailKite docs.

⚠️ Read this first (RunCloud specifics)

RunCloud is different from Forge and Ploi in two ways this tool is built around:

  1. No .env API. RunCloud exposes no endpoint to set a web app's .env directly. So this CLI writes your mail env through the site's git deploy script (which runs on the server and can write .env) when you pass --git, or — with no --gitprints the exact env block for you to paste into the dashboard Env Editor. Both paths produce the same result.
  2. The RunCloud API is Business/Enterprise-only. On Free/Basic plans the API returns 401/403. The CLI checks this up front (/ping) and, if you're gated, tells you to use the printed env block + Env Editor instead — which needs no API key at all.

Install / run

No install needed — run it with npx:

npx mailkite-runcloud \
  --token <runcloud-api-key> \
  --server <serverId> --webapp <webAppId> --git <gitId> \
  --mailkite-key mk_live_… \
  --from [email protected]
  • --token — RunCloud API key (Settings → API Key), or set RUNCLOUD_API_KEY. Add --secret (or RUNCLOUD_API_SECRET) to use HTTP Basic (legacy v2); with just a key it uses Bearer (v3).
  • --server / --webapp — RunCloud ids (--site is an alias for --webapp).
  • --git — the web app's git deployment id. With it, the mail env is written into the deploy script (idempotently, inside a # --- mailkite --- marker block). Without it, the env is only printed for the Env Editor.
  • --mailkite-key — MailKite API key (or MAILKITE_API_KEY).
  • --fromMAIL_FROM_ADDRESS; its domain must be verified in MailKite.

No Business/Enterprise plan? Skip the token.

npx mailkite-runcloud --mailkite-key mk_live_… --from [email protected]

This makes no API calls — it just prints the KEY=value block. Paste it into your web app's Env Editor in the RunCloud dashboard and save.

Two mail paths

| | --mode smtp (default) | --mode api | | --- | --- | --- | | How | SMTP relay through smtp.mailkite.dev:587 | Native mailkite/laravel mailer | | Code change | none | composer require mailkite/laravel (added to the deploy script in --mode api) | | Env written | MAIL_MAILER=smtp, MAIL_HOST, MAIL_PORT, MAIL_USERNAME=apikey, MAIL_PASSWORD=<key>, MAIL_ENCRYPTION=tls, MAIL_FROM_* | MAIL_MAILER=mailkite, MAILKITE_API_KEY, MAIL_FROM_* |

Receive inbound email (--inbound)

npx mailkite-runcloud --token <key> --server 11 --webapp 22 --git 3 \
  --mailkite-key mk_live_… --from [email protected] \
  --inbound https://yoursite.com/api/inbound

Creates a MailKite route (*@yourdomain.com → your URL) and adds MAILKITE_WEBHOOK_SECRET to the env block so your app can verify the signature. Inbound requires the domain's MX to be verified — see the inbound guide.

--dry-run

Prints the env, the managed deploy-script block, and what it would do — without any write calls. Great for a review before you commit.

All MailKite libraries

Same contract, every language (full list: https://mailkite.dev/docs/libraries):

| Library | Repo | Distribution | | --- | --- | --- | | MailKite for RunCloud (this repo) | runcloud | npm | | MailKite for Laravel | laravel | Packagist | | MailKite for PHP | mailkite-php | Packagist | | MailKite for Node.js | mailkite-node | npm | | MailKite for Python | mailkite-python | PyPI | | MailKite for Ruby | mailkite-ruby | RubyGems | | MailKite for Java | mailkite-java | Maven Central | | MailKite for Go | mailkite-go | Go modules | | @mailkite/cli | mailkite-cli | npm |

Docs & links

  • 📚 Documentation: https://mailkite.dev/docs
  • 📦 This library's guide: https://mailkite.dev/docs/libraries
  • 🤖 AI agents (MCP + inbox agents): https://mailkite.dev/docs/ai-agents
  • 🌐 Website: https://mailkite.dev

MIT licensed. © MailKite.