cmdbin is an offline command-line snippet manager. It keeps that command findable, fills in the variable parts when you copy, and keeps everything you knew about it attached. One binary for Linux, macOS or Windows, no install, no account. It runs on your machine and makes no outbound requests, and the whole bin is a JSON file you own.
SHA-256: a9484f7d02e99921d29ed36998872769f20620663af3bad7940d3dc5780f3887
curl.exe -fLO https://0xpeerhold.com/builds/cmdbin/cmdbin-v1_1.zip
curl.exe -fLO https://0xpeerhold.com/builds/cmdbin/cmdbin-v1_1.zip.sha256
curl.exe -fLO https://0xpeerhold.com/builds/cmdbin/tour.json
$want = (Get-Content cmdbin-v1_1.zip.sha256).Split(' ')[0]
$got = (Get-FileHash cmdbin-v1_1.zip -Algorithm SHA256).Hash.ToLower()
if ($got -eq $want) { Expand-Archive cmdbin-v1_1.zip -DestinationPath . -Force; .\cmdbin-v1_1.exe -seed tour.json } else { Write-Error 'Checksum failed' }
SHA-256: f88ea180817697697aec25b8d7fe3f149c3d37ee491b5af54a2d0a1884c67126
SHA-256: 4029ab4ff08bcba9bf58a3e2212a7658caa172b19db7a002aab964fad57ce91e
Twenty-one sample entries running inside this page. Local filtering works instantly out of the box—no bin seeding or account required. Try dockr,
k8s, or --force-with-lease, then pick one and fill in
the blanks. Nothing you type is stored or sent anywhere — open the network
tab and watch.
The search here is a stand-in, and the usage numbers are invented. The real engine is a four-stage pipeline and reproducing it in a page script would misrepresent it. Everything else behaves the way the app does: the same placeholder grammar, the same seven types, secrets dropped after the copy, and a destructive marker that tells you what somebody wrote and then gets out of the way.
Typing a long command on a phone keyboard is where the typos come from: no tab completion, half the screen taken by the keyboard, one wrong character and you start again. Switch sharing on, open the address on your phone, fill the blanks in a form, and copy the finished command in one go.
Your engagement toolkit on a machine that originates no traffic. Values you type into a field marked secret are never written to the bin file. Export per client and hand the file over — or delete it — when the job ends.
One entry for a command instead of one per server. What you actually use rises to the top, because ranking decays with a fourteen-day half-life rather than counting forever.
Build a command set for a course, export it as one file, hand it to a class. No accounts and no license keys. Students keep it, add their own, and it is still theirs after the term ends.
If your reference is a text file you can't search, a browser tab you're afraid to close, or your own memory, this replaces all three. Shell history finds what you ran; this finds what you meant to run, with the reason attached.
kubectl logs -f {pod} -n {namespace} --tail={lines:number=200}
# Ignored by parser: ${PORT} (shell), {{.Names}} (Go template), {{port}} (literal)
Variables defined as blanks trigger interactive fill prompts upon copying across seven supported types (text, number, choice, path, url, boolean, secret). Reusing identifiers maps to a single prompt form. The parser strictly restricts fields to single-brace syntax, leaving shell variables and templates untouched.
PGPASSWORD={dbpass:secret} pg_restore -h {host} -d {database}
Fields marked :secret construct the command payload during copy actions and are immediately discarded from memory, excluding them from bin persistence, usage logs, and exports. (Note: clipboard caching and default fallback values remain subject to OS behaviors).
What it does Load a .dump into an existing database
Prerequisites Target database must exist and be empty
Example usage the real invocation, not a synopsis
Notes anything that bit you the first time
Every entry carries a description, prerequisites, a real example, notes, a shell, and a platform — all searchable alongside the command text. Description and example are weighted differently by the search, which is why they are separate fields rather than one long box.
Marked destructive Deletes named volumes too. Any database
running in Docker loses its data.
You tick a box in the editor and write a note in your own words. From then on the note sits above the command every time you open it. There is no detector, no pattern list, and no rescan on save, so there is exactly one source for that flag: you.
Which cuts both ways, and the app says so where the marker appears. An unmarked command has not been checked and found harmless. It has not been checked at all. Nothing in cmdbin reads command text and forms an opinion about it.
k8s → finds everything tagged kubernetes
docekr → finds docker, through the fuzzy fallback
--force-with-lease → matched whole, not split at the dashes
Clients / Northwind → nested projects, still in global search
Four stages: recall by weighted token match unioned with trigram
substring match, a structural filter, a fuzzy rescore, then a blended
score. Recall is OR rather than AND, so "see running containers" doesn't
require the word "see" to appear anywhere. When recall comes up empty the
search falls back to a bounded scan and lets the fuzzy cutoff do the
filtering, which is how a typo like docekr still lands.
The tokenizer keeps - _ .
: / @ inside tokens, so
docker-compose and node_modules survive whole.
Ranking decays on a fourteen-day half-life, and it decays when read as
well as when written — a score that only decays when you touch it
leaves stale entries sitting at the top.
~/.cmdbin/bin.json
Import: 14 added, 5 skipped — nothing modified, nothing replaced
Import only ever adds. It cannot modify, replace, or delete a command already in your bin, and there is no flag that makes it. An incoming entry is skipped if its UUID is already present, or if its command text hashes to something already in the same project. Re-import last week's export and you get nothing new; if you edited one of those commands since, your edit stands.
Import runs in two steps. The file is summarized first — projects, tags, counts, with nothing written — and that summary becomes the filter list, so you can take a colleague's whole bin and pull in only their Kubernetes commands. Export mirrors it: project and tag checkboxes, a live "N of M commands" count, and toggles for sub-projects, ALL-versus-ANY tag matching, favorites only, and whether usage statistics travel with it.
Share on this network → https://192.168.1.24:7718
Then enter this PIN → 418 302
Flip the switch in the header and a second listener starts on your local network over TLS, using a certificate the machine generates for itself. Your phone opens the address, accepts the certificate warning once, enters the six-digit PIN, and is looking at the same bin. Ten wrong guesses locks pairing until you reset it.
Off means no listener exists, not a listener refusing connections. Turning sharing off stops it and ends every paired session, so switching it back on doesn't silently re-admit a device you disconnected. The certificate is self-signed, which defeats passive listening on the network and does not defeat someone already positioned to intercept traffic between your two devices.
Run these commands to verify binary behavior directly from your terminal.
cmdbin is a single static binary of about 7.5 MB, built from the
Go standard library with nothing else linked in. Run it and it opens your
browser at a loopback address; the interface is served by the binary
itself. Your bin lands at ~/.cmdbin/bin.json.
No runtime, no libraries, no package to install. Drop it anywhere on your path.
Unsigned, so Gatekeeper will ask the first time. Right-click and choose Open, or clear the quarantine attribute yourself. Intel Macs aren't published; it builds for them, ask if you need one.
Built with the GUI flag, so there's no console window sitting behind your browser.
There is no separate mobile build, because there doesn't need to be one. Your phone talks to the machine already running the bin, over your own network. Nothing is installed on the phone.
-seed imports a starter file if the bin is empty. -port and -bin move things. -exit-on-idle quits after a stretch with no browser attached. Stop it from the Quit button, with Ctrl-C, or by letting it time out — all three flush the pending save first.
A tour file ships alongside: twelve commands covering all seven placeholder types, the parser guards, the destructive marker, nested projects, tag aliases, and four shells.
Each platform ships as one compressed archive with the binary inside it. Check it before you unpack it.
sha256sum -c reads the sums file, hashes the archive next to it and prints OK or FAILED. One line, because there is one file in it. If it fails, delete the download and fetch it again rather than unpacking it.
macOS ships shasum rather than sha256sum; -a 256 picks the same algorithm and -c checks the file the same way. The binary is unsigned, so Gatekeeper will ask the first time — right-click and choose Open, or run xattr -d com.apple.quarantine cmdbin-mac-v1_1.
curl.exe is built into Windows 10 and later, as is Get-FileHash, so there is nothing to install. The comparison prints OK or FAILED the same way sha256sum -c does. certutil -hashfile cmdbin-v1_1.zip SHA256 works too if you would rather read the hash yourself and compare it against the row above.
The archive hash covers the download. This one covers the file you will actually run, which is the one that matters if the archive was unpacked somewhere else or passed to you on a stick. Compare it with the Binary inside line in the table above; it should match character for character.
What a matching hash tells you is that the file arrived intact and is the same file we hashed. It does not tell you what the file does, and it cannot: a hash published on the same site as the download is only worth as much as the site. It catches a corrupted transfer or a tampered mirror. It is not an audit, and cmdbin is proprietary, so there is no source to audit against. The checks in the section above are the ones that test behavior.
cmdbin is proprietary software published by 0xPeerHold LLC under an end user license agreement, not under an open source license. In practice:
The License, Privacy, Safety notes, About, Licenses and Imprint panels are all inside the app, offline, with the version and effective date on each so a support conversation can establish which text you actually saw.
New cmdbin versions and any change to the published checksums go out here, along with the occasional note. If you verify a hash before you run a binary, this is how you find out there is a new one to verify.
No signup, no email address, no confirmation link, no per-reader link. We can count how many machines ask for the file. We cannot tell which one is you, and there is nothing to unsubscribe from — you remove it in your own reader and we never find out.
cmdbin is free to download and use, with no paid tier planned. Donations cover build machines, signing, and maintenance hours.
If something here saved you an afternoon, buy us a coffee. Bitcoin goes straight to a wallet we hold, with no processor in the middle taking a cut or a name. Or a clear bug report to support@0xPeerHold.com is worth more than most donations and costs you less.
Bitcoin, straight to a wallet we hold.

On-chain only. Check the address matches before sending.