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

yungle-cli

v0.3.0

Published

Send, receive and sync large files from your terminal or CI: resumable uploads up to 100 GB, private and EU-hosted. A WeTransfer alternative for the command line.

Readme

yungle-cli

Send, receive and sync large files with Yungle from your terminal or CI. Resumable uploads up to 100 GB, private and EU-hosted.

npm install -g yungle-cli    # or: brew install heindewilde/yungle/yungle
yungle login                  # opens your browser, once
yungle send ~/Shoot           # uploads resumably, prints the link

Works on the free plan. Node 22 or newer.

Commands

Get started

| | | |---|---| | yungle login | Sign in with your browser. --key uses an API key instead (servers, CI) | | yungle whoami | Who you are signed in as, and what you may do | | yungle logout | Sign out and revoke the session |

Send and receive

| | | |---|---| | yungle send <paths…> | Send files or folders and print the link. --to, --message, --title, --password, --expires, --from-url <url> (Yungle fetches it) | | yungle get <link> | Download a transfer or collection shared with you, folders kept, checksum-verified. No account needed. --out, --zip, --password | | yungle put <file> --target <target> | Upload one file to a target an AI assistant prepared. No key needed | | yungle status [<id\|link>] | Who downloaded a transfer. Without an id, pick from your recent ones | | yungle transfers | Your recent transfers | | yungle revoke <id> | Stop a transfer's link for good (asks first) |

Collections (paid plans)

| | | |---|---| | yungle push <paths…> --collection <id> | Upload into a collection, optionally --folder <id>, --from-url <url> | | yungle pull --collection <id> | Download your collection, folders kept; run again to fetch only what is new. --transfer <id>, --out, --zip | | yungle requests | Upload links that feed your collections. new --collection <id> --title …, show, pause, resume, close | | yungle watch <dir> --collection <id> | Keep uploading new files as they appear | | yungle collections | Your collections | | yungle contacts | Your contacts |

Everything else

| | | |---|---| | yungle open [<id>\|plan\|keys\|webhooks] | Open the dashboard, or a transfer, in your browser | | yungle webhooks ls · listen | List endpoints, or print events live and --forward-to a local server | | yungle mcp install · status | Connect a local AI assistant (see below) | | yungle completion <zsh\|bash\|fish> | Tab completion |

Ids can be shortened: the last 6–8 characters of a transfer id, or its link, work everywhere an id does. yungle <command> --help shows examples. Old spellings (auth login, ls transfers, rm transfer) keep working.

For people, and for scripts

The same command behaves right in both places:

| | At a terminal | In a pipe or CI | With --json | |---|---|---|---| | Output | Colour, tables, a live progress bar | Plain text; send prints only the link | One JSON object on stdout | | Missing arguments | Asks, step by step | Fails with a usage hint | Fails with a usage hint | | Confirmations | Asks | Never asks | Never asks |

Progress always goes to stderr, so yungle send dist/ | pbcopy copies just the link and yungle send dist/ --json | jq -r .url works. --yes means "never ask", for scripts that run at a terminal. NO_COLOR and FORCE_COLOR are respected.

Every error says what happened and the command that fixes it:

✖ Your sign-in is no longer valid (revoked, expired or mistyped).
→ yungle login

Exit codes: 0 success, 1 failure, 2 usage error, 130 cancelled.

Resuming

Interrupt yungle send (Ctrl-C, a dropped connection, a closed lid) and run the same command again: it continues from the last committed part instead of starting over.

State lives in ~/.cache/yungle/, keyed by the local files' paths, sizes and modification times, since that is all the next run has to go on. Change a file and it starts over, because a resumed upload whose declared size no longer matches would fail at the very end. Sessions expire after two hours, matching the upload tokens they hold.

Watching a folder

yungle watch ~/Renders --collection 01J8Z3M9Q0W4

For a render box writing frames, a card reader, an export folder. It polls (every 10 seconds, --interval to change) rather than using file-system events, which are unreliable on network shares and external drives. A file is uploaded only once it has stopped changing, so a half-written frame never goes up. What was uploaded is remembered, so a restart never uploads twice. Files already there when it starts are left alone unless you pass --existing.

Signing in

yungle login opens your browser, you confirm a code, done. The session is stored in ~/.config/yungle/config.json (mode 0600) and renews itself.

A browser sign-in makes links but never emails anyone. Signing in by code can be phished ("enter this code" is the whole attack), so that session can't make Yungle mail strangers or register a webhook. yungle send --to notices before uploading and offers to send a link instead.

To email recipients, and on servers or in CI, use an API key: yungle login --key (asks for it) or set YUNGLE_API_KEY, which always wins over the config file. Create keys under Settings → API keys or with yungle open keys.

Connecting a local AI assistant

The easiest way to connect Claude or Cursor is the hosted server at https://yungle.co/mcp: add it in the client and sign in, no key involved.

To run the MCP server locally instead:

yungle login --key          # a read-only key is best
yungle mcp install          # or --client claude-code, --dry-run

This writes the Yungle MCP server into Claude Desktop, Claude Code, Cursor and Windsurf, whichever you have. Restart the client afterwards.

  • It wants a real API key, not a browser session, which expires within the hour. The key ends up in the client's config file in plain text, which is how local MCP servers receive credentials.
  • It refuses a key that can write unless you pass --allow-write, which lets the assistant create share links (every one still needs your confirmation).
  • A config file that does not parse is refused, never overwritten. It holds your other MCP servers too. The previous contents are copied to <config>.yungle-bak before any change.

What it cannot do

Your vault and end-to-end encrypted transfers are not reachable: their keys are derived in the browser and never sent to Yungle. yungle get on an end-to-end encrypted link says so and points you to the browser. See https://yungle.co/developers/unsupported.

Docs: https://yungle.co/developers/cli?ref=npm · Source: https://github.com/heindewilde/yungle-clients · MIT