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

@emredogan/cli

v0.1.1

Published

Tiny terminal companion for emredogan.com — browse the portfolio, ask Lumina questions from the shell, list projects, open a /lab experiment.

Readme

@emredogan/cli

A tiny terminal companion for emredogan.com. Browse the portfolio, ask Lumina questions from the shell, list projects, open a /lab experiment.

npm license size

npx emredogan ask "How do you handle reduced motion?"

Four commands, zero dependencies, POSIX-only. The whole CLI ships as one tiny dist/cli.js with a shebang. Native Node fetch, native child_process — no commander, no axios, no chalk.


Install

Run on demand with npx:

npx emredogan <command>

Or install globally:

npm install -g @emredogan/cli
emredogan <command>

Requires Node.js 20+. macOS and Linux only; Windows support deferred to v0.2.


Commands

Core

emredogan browse

Opens https://emredogan.com in the platform default browser via open (macOS) or xdg-open (Linux).

emredogan browse

emredogan ask "<question>"

Streams a reply from Lumina to stdout. Same model + system prompt as the chat widget on the live site (Claude Haiku 4.5). Per-IP rate limited.

emredogan ask "What does the CWH cron actually do at 06:00 UTC?"
emredogan ask "How is /telemetry cached?"

emredogan project list

Prints a tight list of the live projects: title, role, blurb, GitHub and live URLs. Pulled from the public /api/projects JSON.

emredogan project list

emredogan demo <slug>

Opens /lab/<slug> in the default browser. Useful when chasing a link from a tweet or a notes page.

emredogan demo iam-translator
emredogan demo prompt-rescuer
emredogan demo commit-narrator

Known slugs are the active /lab experiments. Unknown slugs still open the URL — the lab index page handles 404s for retired experiments.

Read

emredogan changelog

Fetches the last 5 commits from the public engineering log and prints each with its WHY paragraph (wrapped at 76 columns, 4-space indent). Same KV-cached source as the /changelog web page.

emredogan changelog

emredogan telemetry

Prints a curated 6-metric snapshot of the platform as a 3-column ASCII table — Lumina p95 latency, auto-tweet successes, IAM translator runs, weekly npm downloads, notes audio plays.

emredogan telemetry

emredogan hire

Prints Emre's contact card as a bordered Unicode box: email, LinkedIn, site, GitHub, current operating tempo. No network call — renders identically offline.

emredogan hire

Build

emredogan lab <experiment> "<input>"

POSTs to a /lab experiment endpoint and streams the reply to stdout. Aliases let you skip the URL:

| Alias | Experiment | Input shape | |---|---|---| | iam or iam-translator | IAM Translator | IAM policy JSON | | prompt or prompt-rescuer | Prompt Rescuer | vague developer ask | | commit or commit-narrator | Commit Narrator | public github.com repo URL |

emredogan lab iam '{"Effect":"Allow","Action":"*","Resource":"*"}'
emredogan lab prompt "build a chat app with auth and payments"
emredogan lab commit "github.com/emredogan-cloud/my-portfolio"

The backend's per-IP rate limit and per-day cost cap apply transparently; the CLI maps each to a deterministic exit code.


Global flags

| Flag | What it does | |---|---| | --help, -h | Print help text and exit. Also runs when no command is given. | | --version, -V | Print the installed version and exit. |


Environment

| Variable | Default | Purpose | |---|---|---| | EMREDOGAN_API_URL | https://emredogan.com | Override the API base. Useful for staging deployments or local dev (http://localhost:3000). |


Engineering posture

  • Zero runtime dependencies. Hand-rolled argv parsing, Node 18+ native fetch, native child_process.spawn. The tarball is well under 100 KB.
  • Streaming chat. emredogan ask reads the response body chunk by chunk so the terminal renders the reply as it arrives.
  • Provenance. Published with sigstore provenance — every tarball is linked via OIDC attestation to the exact GitHub workflow run that built it.
  • POSIX-only for now. macOS and Linux. The package.json os field is set so npm install on Windows surfaces a clear platform mismatch instead of failing inside the CLI.

License

MIT © Emre Doğan