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

xpssh-cli

v0.1.0

Published

SSH key manager for git providers — generate, configure, test, and manage SSH keys for GitHub, GitLab, Bitbucket, and Azure DevOps with a rich terminal UI

Readme

xpssh

SSH keys for git providers, done right. One command takes you from nothing to a working git clone over SSH — key generated, ~/.ssh/config wired, agent loaded, public key delivered, connection tested.

Supports GitHub, GitLab, Bitbucket, and Azure DevOps, with first-class multi-account support (work + personal on the same machine without the wrong-key headaches).

npm i -g @vancityayush/xpssh   # then the `xpssh` command is available everywhere
xpssh                          # interactive TUI
xpssh setup github -e [email protected]      # or go straight to it

Or run it without installing: npx @vancityayush/xpssh / bunx @vancityayush/xpssh.

Requires Node ≥ 22 (or Bun). Works on macOS and Linux; Windows is best-effort.

What it does

$ xpssh setup github -n work -e [email protected]
· Generate SSH key                ✓ ed25519 key written to ~/.ssh/xpssh_github_work
· Add host entry to ~/.ssh/config ✓ Host github.com-work added
· Load key into ssh-agent         ✓ Key in agent (persisted to Keychain)
· Deliver public key to provider  ✓ copied to clipboard, settings page opened
· Test SSH connection             ✓ Hi you! You've successfully authenticated
✓ Profile github-work ready — clone with [email protected]:<owner>/<repo>.git

Launching xpssh with no arguments opens the TUI: a dashboard of your profiles with status badges, a setup wizard, connection tester, agent manager — plus a Claude-Code-style command bar (/) that accepts every CLI command from anywhere.

Commands

| Command | What it does | |---|---| | xpssh setup <provider> | End-to-end key setup (-n name, -e email, --token API upload, --dir bind a folder, -y non-interactive) | | xpssh list [--json] | All profiles with key/test status and clone prefixes | | xpssh test [<profile>] [--all] | Verify SSH auth actually works | | xpssh copy <profile> [--open] | Public key → clipboard (+ provider settings page) | | xpssh upload <profile> | Push the public key via provider API (token from flag, env, or prompt) | | xpssh agent [list\|add\|remove\|start] | ssh-agent management (macOS Keychain aware) | | xpssh remove <profile> | Clean removal: config block, key files, manifest | | xpssh doctor [--fix] | Detect & repair drift between manifest, ssh config, keys, and perms |

Providers accept aliases: gh, gl, bb, ado.

Multi-account, solved properly

Each key is a named profile (github-work, github-personal). xpssh writes fenced, marker-tracked blocks to ~/.ssh/config — your own content is never touched, and removal restores the file byte-for-byte:

# >>> xpssh:github-work >>>
Host github.com-work
    HostName github.com
    User git
    IdentityFile ~/.ssh/xpssh_github_work
    IdentitiesOnly yes        # ← the line that prevents wrong-account auth
    AddKeysToAgent yes
    UseKeychain yes           # macOS only
# <<< xpssh:github-work <<<
  • Your first profile per provider claims the bare host ([email protected]:… just works); later ones get aliases ([email protected]:…).
  • --dir ~/work binds a directory to a profile via git includeIf: repos under it automatically commit with the right email and the right key, even when cloned with the bare URL.

API token upload

Skip the copy-paste: xpssh setup github --token <PAT> (or xpssh upload github-work) pushes the key via the provider's REST API. Tokens are read from flags, XPSSH_TOKEN_GITHUB / XPSSH_TOKEN_GITLAB / XPSSH_TOKEN_BITBUCKET, or a masked prompt — and are never persisted or logged. Azure DevOps has no key API; xpssh opens the settings page instead.

Safety

  • ~/.ssh/config edits are fenced, round-trip byte-exact, backed up to config.xpssh.bak first, and hard-error (never guess) on tampered fences
  • Key files and config written with 600, ~/.ssh with 700
  • xpssh doctor --fix reconciles everything: missing/orphaned/stale config blocks, loose permissions, shadowed Host entries, missing key files

Development

bun install
bun run dev          # run from source
bun test             # 90+ tests
bun run typecheck
bun run build        # dist/ for npm (runs on plain Node)

License

MIT