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

superapi-tui

v0.1.1

Published

TUI for browsing and interacting with OpenAPI v3.0/v3.1 specs

Readme

Features

  • 3-panel layout — endpoint list, endpoint detail, and request/response panels
  • Multiple input sources — local files (YAML/JSON), direct spec URLs, or Swagger UI URLs (auto-detected)
  • Interactive launcher — run with no arguments for a guided server selection / URL entry
  • Vim-style navigationhjkl, collapsible tag groups, / filter mode, fullscreen toggle
  • Schema drill-down — recursive $ref resolution with interactive navigation
  • Built-in HTTP client — send requests directly from the TUI with server selection
  • Authentication — Bearer token, API key (header/query), and Basic Auth with config persistence
  • Config persistence — save server + auth credentials, auto-restore on next launch
  • OpenAPI v3.0 & v3.1 — validated with @scalar/openapi-parser

Quick Start

# Try it instantly — no install required
npx superapi-tui https://petstore3.swagger.io/api/v3/openapi.json

# Or with Bun
bunx superapi-tui ./petstore.yaml

# Swagger UI URLs are auto-detected
npx superapi-tui https://petstore.swagger.io/

Global Install

npm install -g superapi-tui

superapi-tui <file-or-url>

Usage

Input Sources

| Source | Example | |--------|---------| | Local file | superapi-tui ./openapi.yaml | | Direct URL | superapi-tui https://api.example.com/openapi.json | | Swagger UI | superapi-tui https://petstore.swagger.io/ |

YAML, JSON, and .yml files are all supported. Swagger UI pages are auto-detected — the spec URL is extracted automatically.

Interactive Launcher

Run with no arguments to get an interactive launcher:

superapi-tui

The launcher lets you pick from previously saved servers or enter a new URL manually.

Keybindings

Global

| Key | Action | |-----|--------| | Tab / Shift+Tab | Switch panel focus | | j / k or Up / Down | Navigate list items | | h / l or Left / Right | Collapse/expand, navigate schemas | | g / G | Jump to top / bottom | | Enter | Select / expand | | / | Filter endpoints | | f | Toggle fullscreen on focused panel | | ? | Show help overlay | | q / Ctrl+C | Quit |

Request Panel

| Key | Action | |-----|--------| | s | Send request | | e | Edit request body | | S | Switch server | | a | Toggle auth configuration | | W | Save server + auth to config | | 1 / 2 / 3 | Switch response tabs (Pretty / Raw / Headers) |

Authentication

Three methods, configurable per-session:

  • Bearer TokenAuthorization: Bearer <token>
  • API Key — header or query parameter (configurable name + value)
  • Basic AuthAuthorization: Basic <base64>

Press a in the request panel to cycle auth types and enter credentials. Auth is global across all endpoints.

Press W to save the current server + auth to your config file. On next launch, credentials auto-restore when the server URL matches.

Configuration

Config is stored at ~/.superapi-tui.toml (with JSON fallback at ~/.superapi-tui.json).

Saved servers and auth credentials are managed automatically via the W keybinding. The config file is created with 0600 permissions for credential safety.

Layout

+───────────────+──────────────────+──────────────────+
│ ENDPOINT LIST │ ENDPOINT DETAIL  │ REQUEST/RESPONSE  │
│ Tag groups    │ Params, schemas  │ Builder + viewer  │
│ Collapsible   │ $ref drill-down  │ Pretty/Raw/Headers│
│ Filterable    │ Request body     │ Auth & server sel │
+───────────────+──────────────────+──────────────────+

Prerequisites

Commands

| Command | Description | |---------|-------------| | bun install | Install dependencies | | bun run dev | Run in development mode | | bun run build | Build for distribution | | bun test | Run tests | | bun run typecheck | Type check with tsc --noEmit | | bun run lint | Lint source files | | bun run lint:fix | Lint and auto-fix | | bun run format | Format with Prettier | | bun run format:check | Check formatting |

Tech Stack

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feat/my-feature)
  3. Make your changes with tests
  4. Run bun test && bun run typecheck && bun run lint before committing
  5. Open a pull request against master

Acknowledgments

Inspired by openapi-tui by @zaghaghi.

License

MIT © StanMarek