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

@ctrlai/cli

v0.1.4

Published

ctrlai — your Context Key, in one command. `npx @ctrlai/cli init` writes CLAUDE.md / .cursorrules / AGENTS.md from one source (no account, nothing leaves your machine); also emit, fetch ready-to-inject context, and seed your self from a repo. A thin clien

Readme

@ctrlai/cli — your Context Key, in one command

The 60-second try, no account needed: run one command in any repo and the files your AI tools read — CLAUDE.md, .cursorrules, AGENTS.md — appear, written from one source. Nothing leaves your machine.

npx @ctrlai/cli init        # scan THIS repo → write CLAUDE.md · .cursorrules · AGENTS.md from one source

That's it — no key, no signup, no network. It reads your rules files + stack locally and writes the unified rules files your tools already load. Re-run any time; your own lines outside the managed block are always kept.

When you want your context live in every tool (always fresh, scoped per tool, revocable), get a free Context Key and the same CLI serves it:

export CTRL_KEY=ck_live_…                # from <web>/control-panel → Keys → Issue
export CTRL_API=http://localhost:3000    # dev (default: https://api.ctrlai.com)

npx @ctrlai/cli emit                     # writes the files from your bound face, live
npx @ctrlai/cli context --task "write a SQL migration"   # the task-shaped, ready-to-inject block
npx @ctrlai/cli seed .                   # scan THIS repo locally → propose atoms to ratify in the web

Installed globally (npm i -g @ctrlai/cli), the command is ctrlai.

Commands

| Command | What | Account? | |---|---|---| | ctrlai init [dir] [--dry] | scan the repo locally → write CLAUDE.md · .cursorrules · AGENTS.md from one source. --dry previews. Preserves your lines outside the managed block. | no | | ctrlai emit [--dir .] [--targets …] [--local] | write the rules files. --local = render from a local repo scan (no key). Default = the live served slice of your bound face via GET /api/v1/context?format=<t>. | --local: no | | ctrlai context [--task "…"] [--json] | no task → static (the whole bound face); --task → dynamic (task-shaped, select-and-drop). Prints the systemBlock (or --json). | yes | | ctrlai seed <path> [--dry] | scan the repo locallyPOST /api/v1/seed to propose atoms to ratify. --dry previews, posts nothing. | --dry: no | | ctrlai config [set key\|api <value>] | show config, or save to ~/.ctrl/config.json (env CTRL_KEY/CTRL_API win). The key is never logged. | — | | ctrlai --help · ctrlai --version | | |

init, seed --dry, and emit --local run fully local — no account, nothing leaves your machine.

The wall (what crosses, and what never does)

  • Local commands are local. init / seed --dry / emit --local read only the §5 allowlist — rules/convention files, package.json (deps + scripts), the lockfile name, and tsconfig/eslint/prettier presence. They never read .env*, source code, or lockfile contents, and they make no network call. The files they write are a local draft (clearly labeled), not a released Face.
  • The key is the boundary. emit (live) / context only ever return your key's bound face ∩ ceiling (pseudonymous unless the key is identified) — the server enforces it. A revoked/expired key gives a clean "invalid/expired/revoked" error.
  • seed proposes; it never releases. The only thing that leaves your machine is the candidate list you're about to ratify — and a proposal is not an atom: nothing becomes part of you until you ratify it in the web.

Build (local / pre-publish)

pnpm install
pnpm --filter @ctrlai/cli build    # tsc → dist/
node packages/cli/dist/ctrl.js --help

Published as @ctrlai/clinpx @ctrlai/cli …. A thin OSS client (MIT); the paid intelligence stays server-side.