ymmv-cli
v0.9.0
Published
Publish and diff terminal-native developer tool-stack profiles at ymmv.fyi.
Downloads
53
Maintainers
Readme
ymmv-cli
The tools you actually use. Publish from the CLI, diff against anyone's.
Editor, OS, shell, terminal, theme (and more), published to a
clean page at ymmv.fyi/<handle> in about 10 seconds. See a live one:
ymmv.fyi/bardisty.

npx ymmv-cli@latest # detect your stack, confirm, go live at ymmv.fyi/<you>
npx ymmv-cli@latest bardisty # view someone's stack in the terminal(@latest makes npx look for the newest release; without a version spec, npx can pin you
to whatever it downloaded first.)
Viewing someone while you're logged in diffs their stack against yours:
how bardisty differs from you
BARDISTY YOU
~ Editor Zed VS Code
= Shell bash bash
~ Theme Gruvbox Catppuccin
~ Font Lilex JetBrains Mono
3 differ 1 sharedInstall once for the short ymmv command:
npm i -g ymmv-cliWhen a newer release exists, the CLI mentions it after a command (interactive terminals only)
and ymmv update upgrades a global install in place.
First run includes a one-time GitHub sign-in. Works on macOS, Linux, Windows,
and WSL. Nothing is published until you confirm (detection only pre-fills), and
ymmv delete removes everything. Releases are published from GitHub Actions
via npm Trusted Publishing, with provenance.
Commands
ymmvdetects, confirms, and publishes (re-run any time to update;ymmv publishis the same command)ymmv <handle>views a profile, or diffs it against yours when you're logged inymmv set editor Neovimchanges one valueymmv set --extra "Keyboard=HHKB"adds a free-form line of your own (-eworks too)ymmv unset editorremoves one value (ymmv set editor -works too);ymmv unset --extra "Keyboard"removes an extraymmv deleteremoves your profile (ymmv delete -yskips the confirm, for scripts)ymmv login/ymmv logoutsign in / outymmv updateupdates the CLI to the latest release (runs the matching upgrade for npm, pnpm, and bun global installs; via npx it prints the invocation to use instead; anything else gets the commands to run by hand)ymmv versionprints the CLI version (and notes a newer release when one is known)
Values are capped at 256 characters and extra labels at 64; a profile holds up to 32 extras.
Every profile is open JSON too: GET https://ymmv.fyi/api/v1/u/<handle>. Full contract
(shape, statuses, caching, CORS):
https://github.com/ymmv-fyi/ymmv/blob/main/docs/api.md.
Environment variables
NO_COLORdisables color output (andFORCE_COLOR=0/falseforce-disables it).YMMV_APIpoints the CLI at a different Worker (development/staging). Bare origin only.YMMV_TOKENauthenticates without a browser (CI and scripts, below). Takes precedence over the stored login and is read-only: the CLI never writes, revokes, or deletes it, andymmv login/ymmv logoutkeep acting on the stored login. Viewing (ymmv <handle>) also keeps using the stored login for the you-side of a diff. The token is sent to the serverYMMV_APIselects, so set the two together.YMMV_HANDLEnames the GitHub usernameYMMV_TOKENbelongs to. Required forymmv -yandymmv set/unsetunder an env token (there is no server lookup for it); ignored withoutYMMV_TOKEN.YMMV_NO_UPDATE_CHECKdisables the startup check for newer releases (the ecosystem-standardNO_UPDATE_NOTIFIERworks too). The check is also off automatically underCI, in pipes, and in dev builds; it never blocks or fails a command.
Publishing from CI
ymmv login needs a browser, so mint the token on your machine and hand it to CI:
- Run
ymmv loginlocally. - Copy the
tokenvalue from the token file:~/.config/ymmv/token.json(Linux),~/Library/Preferences/ymmv/token.json(macOS),%APPDATA%\ymmv\Config\token.json(Windows). - Set it as a CI secret named
YMMV_TOKEN, and setYMMV_HANDLEto your GitHub username. - Run
npx ymmv-cli@latest -yin the job.
Two things to know:
ymmv -ypublishes the merge of your existing profile with what it detects on the machine it runs on. Values you already published always win, but curated keys you have never set get the CI runner's detected values (its OS, shell, and so on). For targeted updates from CI, preferymmv set <key> <value>.- A rejected or revoked
YMMV_TOKENfails with an error naming the variable; nothing falls back to an interactive login, and the stored login file on the runner (if any) is left untouched.ymmv deleteacts on the account the token is bound to, regardless ofYMMV_HANDLE.
License
MIT. Source + issues: https://github.com/ymmv-fyi/ymmv.
