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

@9punk/9cli

v0.1.37

Published

9CLI — a local multi-session command center for Claude Code and other CLI agents. Finds your projects, spawns real sessions in them, and shows every one on a board in your browser.

Readme

9CLI

A local multi-session command center for Claude Code and other CLI agents.

You already run more than one agent at a time. 9CLI is the board that shows you all of them at once — which one is waiting on you, which one is working, which one finished — so you stop alt-tabbing between terminal windows to find out.

Before you run it: you need Node.js 22 or newer (node -v to check — nodejs.org if you have none; nothing below can install Node for you), and Claude Code for the sessions themselves. If Claude Code or git is missing, 9CLI still opens and shows you what to fix.

Linux: 9CLI's terminal component, node-pty, ships no prebuilt binary for Linux, so npm compiles it during the command below. Without a C toolchain that step fails with compiler errors before any of 9CLI's own code runs, so 9CLI cannot catch it or explain it. Install one first — on Debian/Ubuntu: sudo apt install build-essential python3.

npx @9punk/9cli

No global installation required. npm keeps a cached copy of the package, and 9CLI keeps your settings in ~/.multicli/. It starts a daemon on 127.0.0.1, prints a URL and opens the board in your browser. Point it at the folder your projects live in once; it looks in that folder and two levels below it for git repos and gives each one an Activate button. Pointing it at a single repo works too — that repo is then the project it shows.

The URL is always printed, so a headless box, a container or an SSH session works exactly as well — open it yourself. --no-open skips the browser. Run it again while one is already running and it opens the existing board rather than starting a second one. npx @9punk/9cli stop ends a running daemon and everything it started — via npx, because a bare 9cli only exists if you installed the package globally, and npx does not. If the port is taken by something that is not 9CLI, 9CLI takes the next free loopback port and says which; it never touches whatever is already there.

→ 9CLI.dev


What it does

  • Four lanes, not four windows. Every session sits in Needs you, Working, Idle or Finished. "Needs you" means a real permission or confirmation prompt is on screen and nothing is moving until you answer — the board tells you, rather than you finding out twenty minutes later.
  • Real sessions, real terminals. Each card is an actual pty running claude (or whatever you point it at) in that project's folder. You can type into it.
  • Per-project permission profiles. Read-only, Standard, Trusted or Full, chosen per project and never in bulk, applied through Claude Code's own --settings. Every card carries a badge saying what that project is allowed to do. Full asks you to confirm, once.
  • Copy output / Copy last response / History. Read from a transcript the daemon rebuilds from the session itself, not scraped off the screen — so the full-screen redraws that normally destroy your scrollback don't take the conversation with them.
  • Safely close all. Commit, push, back up and then stop — only the steps that actually apply to each project, and it verifies nothing was left running.
  • Sidekick. Keep the Claude web conversation for a project one click away. A bookmark, nothing more — 9CLI never reads or sends it.
  • Four themes, a keyboard-driven layout, and a Help panel (press ?) that is a genuine 60-second tour.

Requirements

| | | |---|---| | Node.js | 20 or newer (node -v) | | Claude Code | for the sessions to be worth watching — install guide | | git | the project scan reads branch and commit state | | A browser | the board is a web page served from your own machine |

9CLI runs a doctor check at startup and tells you which of these it could not find, so you don't have to guess. If one is missing, broken or not responding, the board still opens — in a recovery mode that says what is wrong, gives the next step for your platform, and has a Re-check button — and sessions stay off until it is fixed. The one thing it cannot help with from inside is Node itself: with no Node, or one too old to start 9CLI, there is nothing running to show you anything, which is why Node is listed above the install command.

Platforms.

| | | |---|---| | Windows | Tested. This is the platform 9CLI is developed and released on. | | macOS | Experimental, and not verified end to end on real hardware. The macOS paths exist and are unit-tested, but nobody has run the app through a full session on a Mac. Treat it as untested. | | Linux | Experimental and unverified. node-pty has no prebuilt binary, so installing needs a C toolchain (build-essential, python3). |

Reports from macOS and Linux are very welcome — they are the only thing that moves either row.

Free and Pro

Free — no account, no sign-up, no email. The whole command center: every feature, every theme, unlimited projects. Capped at 2 sessions running at the same time. You never have to sign in to use it.

Pro — unlimited concurrent sessions. Coming soon. It is not on sale yet, and the app will say so rather than showing you a checkout that does nothing. If you already hold Pro, sign in from the board and it applies to this machine.

What it sends

9CLI is local-first, and specifically:

  • The daemon binds 127.0.0.1 only. It is not reachable from your network.
  • 9CLI does not send your code, your prompts or your session output anywhere. The board, the daemon and everything they store are local; nothing is uploaded to 9punk, logged remotely, or used for anything.
  • Claude Code does send your prompts to its provider, and that is the point of it. 9CLI runs claude in a terminal in your project folder, exactly as you would yourself, and from that moment your prompts and whatever context Claude Code gathers go to whichever provider it is configured for — Anthropic, or Bedrock/Vertex if you have set those up. 9CLI does not see, change or record that traffic, and it cannot stop it either. "Local" describes the board, not the model. Worth knowing before the first prompt rather than after it.
  • The board fetches nothing from the internet to draw itself — fonts and terminal library are served from your own daemon.
  • Two network calls exist, and both are about your plan, not your work: an anonymous check for pricing and availability, which carries no account, no identifier and no version; and, only if you sign in, a check of what plan you are on. Signed out, the first is the only call 9CLI ever makes.

Where your settings live

~/.multicli/ — your chosen root, your session definitions and their permission profiles. Written atomically, so a crash or a reboot loses nothing. Delete the folder to start completely clean.

Nothing about what is running is persisted: a session that was live when the daemon stopped is not live now, and 9CLI will not pretend otherwise.

Nothing you type is written to disk. 0.1.10 and 0.1.11 staged a large prompt to ~/.multicli/prompts/ on the way to the session, because Windows could not hand a program that much text through a terminal in one piece. That is fixed a layer down as of 0.1.11 and the staging is gone as of 0.1.13 — a large prompt now travels straight into the session as a paste. If an older 9CLI left a prompt file behind, 9CLI removes it the next time it starts.

A note on trust

The daemon runs as you and spawns your shells. It is exactly as trusted as your terminal, and it is not a sandbox — the permission profiles configure Claude Code, they do not contain it. Point 9CLI at projects you would open a terminal in anyway.

Support

License

Proprietary. © 2026 9Punk LLC, all rights reserved. See LICENSE and the Terms of Service. 9CLI is licensed, not sold.