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

portless-studio

v0.2.2

Published

A local web dashboard for portless: see every dev server, name its port and open it.

Readme

portless studio

npm CI

A local web dashboard for portless: see every dev server on your machine, give each one a name like web.myapp.localhost, and open it from one page.

portless replaces port numbers with names: portless api pnpm dev serves your app at http://api.localhost:1355 instead of http://localhost:3000. It has no interface of its own, so with ten dev servers across several projects you have to remember which names exist and which ports have none. Studio shows both, live, and names a port in one click.

Naming port 8000, searching routes with Ctrl+K, filtering with the Filter popover and opening a route's terminal in the right-hand pane

The screenshots use the built-in sample data (?demo), not a real machine.

Install

Requirements: Node 22 or later on Linux, macOS or Windows. portless is installed for you if it is missing.

To try it, run it straight from npm:

npx portless-studio init

For everyday use, and always for "start at login", install it globally:

npm i -g portless-studio
portless-studio init

The login service starts Studio from the files npm installed. Run through npx, those files sit in npm's cache, which npm can clear at any time, and then Studio stops starting at login.

To update, install the latest version and restart Studio with npm i -g portless-studio@latest. To remove it, run portless-studio uninstall, then npm rm -g portless-studio.

Quick start

init asks a few questions and leaves everything working:

  • Checks that portless is installed and offers to install it with npm install -g portless.
  • Asks for the basic settings (auto mode, start at login, port, open the browser) and saves them.
  • Finds the dev servers already running, suggests a name for each and names them in portless.
  • Starts the portless proxy on port 1355 over HTTP, which needs no password, certificate or extra tool on macOS, Windows or Linux, and can set Studio to start when you log in.

Then portless-studio starts Studio at http://127.0.0.1:4949, registers it in portless as studio and opens your browser. Your apps open at names like http://web.myapp.localhost:1355: Chrome, Edge and Firefox send every *.localhost name to your own machine, with no hosts file and no DNS setup. Turn on Short URLs in Settings to drop the :1355 (http://web.myapp.localhost) where your system lets you listen on port 80; see troubleshooting.

Getting started walks through the first five minutes: naming a dev server, naming a port by hand, running a command in a Studio terminal and turning on auto mode. To try the page without portless, open http://127.0.0.1:4949/?demo for sample data.

What it does

  • Live list of portless routes: name, URL, port, app or alias, uptime and any Tailscale, ngrok or Cloudflare tunnel. It updates as soon as a route appears or goes away.
  • Detected ports: listening ports that answer HTTP but have no name yet, with the process, the project folder and a suggested name. Name one, name them all, or ignore one. Ports a running Docker container publishes show here too.
  • Auto mode (off by default): every new dev server gets its suggested name by itself. Names auto mode gave are removed 10 minutes after their port closes.
  • Name a port that portless did not start, such as a database in Docker (db gives db.localhost). Rename or remove those names later.
  • Where each server runs: every row shows the git branch, the linked worktree and the project folder.
  • Views: group by project, worktree, kind or status, or into your own groups; filter, sort and save the combination as a named view.
  • Terminals: run a command per project inside Studio and watch its output in a panel. You, the CLI and your AI agents drive the same terminals.
  • Agents: an MCP server lets Claude Code, Cursor and other agents list, name and stop dev servers and run commands in Studio terminals.
  • Health: each route's dot says whether its port answers, and portless-studio doctor finds a proxy left running as root, two proxies at once, an untrusted certificate or a taken port, and gives the fix.
  • Keyboard first: every action has a key, ? lists them and Ctrl+K (Cmd+K) runs any of them by name.

Also: start, stop or restart the proxy and Studio from the page, stop a dev server from its row, open a project in your editor, project icons, and notifications in the page or from the operating system.

Naming

A suggested name says what the work is, then the app, then the repository. The package @acme/web in the acme-monorepo folder on the branch feat/ED-1234-add-x gets ed-1234.web.acme, so two worktrees of one repository get different names. Change the pattern with nameTemplate; docs/naming.md lists every token.

Anything that names a route through the portless CLI also shows up in Studio:

portless web.myapp pnpm dev       # a dev server, at web.myapp.localhost
portless alias db.myapp 5432      # a port something else opened, at db.myapp.localhost

Agents and terminals

claude mcp add --scope user portless-studio -- npx -y portless-studio mcp
portless-studio run -- pnpm dev

The first line connects Claude Code to Studio's MCP server. The second runs a dev server in a Studio terminal, prints its output in your shell and names the port it opens. docs/agents.md shows how to keep agents in sync with Studio, including instructions to paste and Claude Code hooks; docs/mcp.md has the setup for other clients and docs/terminals.md covers the terminal panel.

Documentation

How it relates to portless

Studio is an independent project, not part of portless and not made by its authors. It reads the state portless keeps in ~/.portless and names routes through the portless command, so anything you or an agent do with portless shows up in Studio, and Studio never changes how portless works.

Security

Studio only listens on 127.0.0.1 and rejects requests whose Host or Origin is not local, so other websites open in your browser cannot read your routes or call the API. Every change also needs a token that changes on every run and that only Studio's own page can read. A dev server can be stopped only when it belongs to your user, and Studio never runs a command that needs sudo. See SECURITY.md to report a problem.

Development

git clone https://github.com/keven-bardales/portless-studio
cd portless-studio
pnpm install
pnpm dev          # API on :4949 and the web app with hot reload on :5173
pnpm test         # unit and component tests

CONTRIBUTING.md covers the checks to run and pull requests, docs/architecture.md the layers and docs/conventions.md the code conventions.

License

MIT, see LICENSE.