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

@beast01/tcurl

v1.0.2

Published

An interactive terminal UI (TUI) for building, sending, and saving HTTP requests — curl, but comfortable.

Readme

tcurl

An interactive terminal UI (TUI) for building, sending, and saving HTTP requests — curl, but comfortable. Create requests of any method (GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS), tweak headers, query params, body and auth, fire them off, and browse the response — all without leaving your terminal. Requests are saved to disk so you can reuse them later.

Styled with the Gruvbox and Ember color themes. Works on macOS, Linux, and Windows (any terminal with a TTY). Zero native dependencies.

┌ tcurl — interactive HTTP client ──────────────── gruvbox ┐
│ ┌ Saved requests (2) ──┐ ┌ GET  Get users ──────────────┐ │
│ │ ❯ GET    Get users   │ │ GET https://api.site/users   │ │
│ │   POST   Create user │ │ Auth       bearer            │ │
│ └──────────────────────┘ │ Headers    2                 │ │
│                          └──────────────────────────────┘ │
│  n new   ↵ edit   s send   d delete   y curl   ? help     │
└──────────────────────────────────────────────────────────┘

Install

npm install -g tcurl

Requires Node.js ≥ 18.

Usage

tcurl                          # launch the interactive TUI
tcurl https://api.example.com  # launch with a new request prefilled
tcurl -X POST https://api.example.com/items
tcurl --theme ember            # start with the Ember theme
tcurl --help

Keyboard — vim/nvim motions everywhere

List view

| Key | Action | | ------------ | ------------------------------- | | j / k | Move selection down / up | | gg / G | First / last request | | n | New request | | Enter / e| Edit request | | s | Send request | | d | Delete request | | y | Copy as curl (prints on exit) | | t | Cycle theme (gruvbox / ember) | | ? | Help | | q / Ctrl+C | Quit |

Editor — field navigation

| Key | Action | | ------------------ | -------------------------------------------- | | j / k / Tab | Move between fields | | gg / G | First / last field | | h / l | Change method, body type, toggles | | i / a / Enter| Edit the focused field | | Esc | Back to list (auto-saves) |

Field editor — modal (INSERT / NORMAL, like nvim)

Fields open in INSERT mode so you can type right away; press Esc for NORMAL mode and vim motions.

| Key | Action | | ------------------- | ---------------------------------------- | | Esc | INSERT → NORMAL | | i a I A o O | NORMAL → INSERT (at cursor, after, line start/end, open line) | | h j k l | Move by char / line | | w / b / e | Word forward / back / end | | 0 / $ | Line start / end | | gg / G | Buffer start / end | | x / dd | Delete char / line | | Enter / Ctrl+S | Save the field | | Esc (in NORMAL) | Cancel the edit |

Response

| Key | Action | | ----------------- | --------------------- | | j / k | Scroll down / up | | Ctrl+d / Ctrl+u | Half-page down / up | | Ctrl+f / Ctrl+b | Full-page down / up | | g / G | Top / bottom | | h / l / Tab | Body ↔ Headers | | q / Esc | Back |

Features

  • All HTTP methods — GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS.
  • Body modes — none, raw text, JSON (auto content-type), and URL-encoded form (key=value per line).
  • Headers & query params — edited as simple Key: Value / key=value lines.
  • Auth — Bearer token or HTTP Basic (username / password).
  • Redirects — follow (with method downgrade on 301/302/303) or manual.
  • TLS control — toggle certificate verification for self-signed hosts.
  • Timeouts & cancellation — per-request timeout in milliseconds (default 30 000; set 0 to disable). While a request is in flight, press Esc (or q) to abort it immediately — even with no timeout set — and Ctrl+C always quits, so a hung server can never lock you up.
  • Pretty responses — JSON is auto-formatted; scrollable body & headers with status, timing, and size.
  • Persistence — requests are stored as JSON and reused across sessions.
  • Export — copy any saved request as an equivalent curl command.
  • Vim/nvim motionsj/k, gg/G, h/l navigation throughout, plus a fully modal (INSERT / NORMAL) field editor with w/b/e, 0/$, x, dd, o/O, and Ctrl+d/Ctrl+u scrolling.

Where is my data?

Saved requests and your theme choice live in a single JSON file under your platform's config directory (via env-paths):

  • Linux: ~/.config/tcurl/store.json
  • macOS: ~/Library/Preferences/tcurl/store.json
  • Windows: %APPDATA%\tcurl\Config\store.json

Development

npm install
npm run build      # compile TypeScript to dist/
npm run dev        # watch-compile
node dist/cli.js   # run locally

License

MIT