one binary, five commands

the cli.

Everything the API does, from the place you already live. Quiet on success, loud on failure, exit codes you can trust in a script.

install

macos · linux
$ curl -fsSL https://site-shortner.link/install.sh | sh $ shortner auth ssk_live_your_key key saved to ~/.config/shortner/credentials

Single static binary, no runtime, no dependencies. Windows folks: it runs fine under WSL; a native build is on the list.

commands

commanddoes
shortner new <url>Create a link. --slug to choose the address, --expires and --fallback for lifecycle.
shortner lsList every link on your key, newest first.
shortner edit <slug>Repoint with --url, or change --status / --expires / --fallback.
shortner stats <slug>Totals and a 14-day sparkline, right in the terminal.
shortner rm <slug>Delete (30-day polite fallback applies, same as the API).

a normal day with it

session
$ shortner new https://example.com/launch-post --slug launch https://site-shortner.link/launch # …two weeks later, the post moved… $ shortner edit launch --url https://example.com/blog/launch-v2 updated — next hit goes to the new destination $ shortner stats launch launch 1,284 hits ▂▃▅▇▆▃▂▁▂▄▆▇▅▃ last hit 2m ago

in ci

The CLI reads SHORTNER_KEY from the environment, so minting a short link for every release is a one-liner in your pipeline:

release step
# point the stable "latest release notes" slug at this tag's notes $ shortner edit release-notes --url "https://example.com/releases/$TAG"

That's the pattern this tool was born for: the address in your app's "What's new" button never changes; what's behind it does, on every ship.

bulk import

csv in, links out
$ shortner import links.csv --out links+short.csv read 412 rows → created 412 links → wrote links+short.csv

The importer paces itself under the rate limit and resumes cleanly if interrupted — a 400-link migration shouldn't require babysitting.

No key yet? The CLI is useless without one, and keys go out by email while onboarding runs in batches. Ask for one — mention you're a terminal person and we'll like you more.