{"id":49068380,"url":"https://github.com/coreyrdean/yoink-n-yeet","last_synced_at":"2026-06-13T10:01:33.309Z","repository":{"id":352550402,"uuid":"1215516597","full_name":"CoreyRDean/yoink-n-yeet","owner":"CoreyRDean","description":"A clipboard-stack CLI. yoink pushes, yeet pops. Cmd-V still works.","archived":false,"fork":false,"pushed_at":"2026-04-20T04:53:54.000Z","size":72,"stargazers_count":0,"open_issues_count":5,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-20T06:23:01.506Z","etag":null,"topics":["cli","clipboard","developer-tools","go","linux","macos","stack","windows"],"latest_commit_sha":null,"homepage":"https://github.com/CoreyRDean/yoink-n-yeet","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CoreyRDean.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-20T01:57:07.000Z","updated_at":"2026-04-20T04:53:57.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/CoreyRDean/yoink-n-yeet","commit_stats":null,"previous_names":["coreyrdean/yoink-n-yeet"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/CoreyRDean/yoink-n-yeet","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoreyRDean%2Fyoink-n-yeet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoreyRDean%2Fyoink-n-yeet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoreyRDean%2Fyoink-n-yeet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoreyRDean%2Fyoink-n-yeet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CoreyRDean","download_url":"https://codeload.github.com/CoreyRDean/yoink-n-yeet/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CoreyRDean%2Fyoink-n-yeet/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32492594,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"online","status_checked_at":"2026-05-01T02:00:05.856Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","clipboard","developer-tools","go","linux","macos","stack","windows"],"created_at":"2026-04-20T06:11:32.031Z","updated_at":"2026-05-01T10:00:37.524Z","avatar_url":"https://github.com/CoreyRDean.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# yoink-n-yeet\n\n**The clipboard, as a stack. For your terminal. `yoink` pushes, `yeet` pops.**\n\nA tiny, cross-platform CLI clipboard manager that keeps a history of everything you copy, and actually *composes with pipes*. Built in Go, one static binary, zero runtime dependencies. macOS, Linux (X11 + Wayland), Windows, WSL.\n\n[![CI](https://github.com/CoreyRDean/yoink-n-yeet/actions/workflows/ci.yml/badge.svg)](https://github.com/CoreyRDean/yoink-n-yeet/actions/workflows/ci.yml)\n[![Release](https://img.shields.io/github/v/release/CoreyRDean/yoink-n-yeet?display_name=tag\u0026sort=semver)](https://github.com/CoreyRDean/yoink-n-yeet/releases)\n[![Downloads](https://img.shields.io/github/downloads/CoreyRDean/yoink-n-yeet/total)](https://github.com/CoreyRDean/yoink-n-yeet/releases)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)\n[![Go Report](https://goreportcard.com/badge/github.com/CoreyRDean/yoink-n-yeet)](https://goreportcard.com/report/github.com/CoreyRDean/yoink-n-yeet)\n\n```sh\nbrew install CoreyRDean/tap/yoink-n-yeet\n```\n\n\u003c/div\u003e\n\n\u003e **For AI agents / automation:** structured docs live in [CLAUDE.md](./CLAUDE.md).\n\n## Why does this exist?\n\nThe system clipboard is a single cell of state. Copy something new, lose the thing you had before. For mouse-driven apps, GUI clipboard managers (Raycast, Paste, Maccy, Win+V, GNOME Clipboard Indicator) solve this fine. **For the terminal, they don't help at all** — they can't pipe into `grep`, they can't be scripted, they can't be composed with `ssh`, `kubectl`, `aws`, or your build tools.\n\n`yoink-n-yeet` is the CLI counterpart. It turns the system clipboard into the top of a persistent stack you actually own, and gives you two verbs that work the way shell verbs should:\n\n- **`yoink`** (short: `yk`) — push command output or stdin onto the stack\n- **`yeet`** (short: `yt`) — pop the top of the stack to stdout\n\nEvery flag works on either name, so `yk --list` and `yt --list` are the same thing. Your OS clipboard (`Cmd-V`, `Ctrl-V`, `pbpaste`, `xclip -o`) always mirrors the top of the stack, so pasting into GUI apps keeps working exactly as it does today.\n\n## Install\n\n**Homebrew** (macOS + Linux, recommended):\n\n```sh\nbrew install CoreyRDean/tap/yoink-n-yeet\n```\n\n**One-line install** (macOS + Linux, no Homebrew required):\n\n```sh\ncurl -fsSL https://raw.githubusercontent.com/CoreyRDean/yoink-n-yeet/main/install.sh | bash\n```\n\n**From source** (any platform with Go 1.22+):\n\n```sh\ngit clone https://github.com/CoreyRDean/yoink-n-yeet\ncd yoink-n-yeet\n./install.sh --local\n```\n\n**Windows**: grab the prebuilt zip for your arch from the [latest release](https://github.com/CoreyRDean/yoink-n-yeet/releases/latest) and drop `yoink-n-yeet.exe` on your PATH. Native Windows clipboard via `clip.exe` / `Get-Clipboard`; WSL works too.\n\nUninstall any time with `yt --uninstall` (or `brew uninstall yoink-n-yeet`).\n\n## 30-second tour\n\n```sh\n# Push the output of any command onto the stack\nyk cat ~/.ssh/config\nyk kubectl get pods -A\nyk aws sts get-caller-identity\n\n# Pipe into it\ngit log --oneline | yk\n\n# Import whatever's on the OS clipboard (from any app)\nyk -c\n\n# See the stack (previews are secret-redacted)\nyk --list\n\n# Pop the top entry to stdout\nyt\n\n# Or peek without consuming\nyt --peek\n\n# Pipe popped content into something else\nyt | pbcopy\nyt | base64 | curl -X POST --data-binary @- https://paste.example/\n\n# Arrow-key picker to promote any entry to the top\nyk --pick\n\n# Age-based cleanup\nyk --drain --days 7\n\n# File an issue without leaving the terminal\nyk --report \"macOS Sequoia: --pick cursor bleeds\" \"…repro steps…\"\n```\n\nThat's the whole idea. It's boring. It's the right primitive.\n\n## Features\n\n- **Stack semantics that feel right.** LIFO, binary-safe, timestamped. The OS clipboard always mirrors the top.\n- **Pipe-native, script-friendly.** Update banners and prompts go to stderr; only the requested payload hits stdout.\n- **One binary, four names.** `yoink`, `yeet`, `yk`, `yt` — install once, invoke however your muscle memory wants.\n- **Cross-platform clipboard.** macOS (`pbcopy`/`pbpaste`), Linux Wayland (`wl-copy`/`wl-paste`), Linux X11 (`xclip` / `xsel`), Windows (`clip.exe` + PowerShell), and WSL — auto-detected.\n- **Secrets-aware by default.** `--list` previews redact GitHub tokens, AWS keys, Slack tokens, JWTs, PEM private keys, OpenAI keys, common `password:=…` patterns.\n- **Interactive picker.** `yk --pick` launches a zero-dep arrow-key TUI. Vim-style `j/k` also works.\n- **Offline-first.** No telemetry. Update checks are opt-in, non-blocking, and checksum-verified.\n- **Three release channels.** `stable`, `nightly`, and `local` (installed from your working tree — `--version` tells you exactly which commit, and whether your tree is dirty).\n- **Supply-chain hardening.** Every release is cosign-keyless signed via GitHub OIDC, ships an SBOM per artifact, and has SHA256 checksums the installer verifies.\n\n## Commands\n\nDefault action is decided by which name you invoked: `yoink`/`yk` push, `yeet`/`yt` pop. Every flag is valid on either name.\n\n| Flag | What it does |\n|------|--------------|\n| *(no flags + args)* | `yoink cmd [args]` runs `cmd` and pushes its stdout |\n| *(no flags + pipe)* | `... \\| yoink` pushes stdin |\n| *(no flags, no stdin)* | `yeet` pops the top of the stack to stdout |\n| `-c`, `--cb` | On yoink: import the OS clipboard. On yeet: stream the OS clipboard to stdout without touching the stack. |\n| `--list [--json]` | Render the stack (0 = top) with timestamps, sizes, redacted previews |\n| `--show [N\\|first\\|last]` | Print entry N (default: top) to stdout, non-consuming |\n| `--peek` | Alias for `--show first` |\n| `--pick [N\\|first\\|last]` | Move an entry to the top. No arg on a TTY launches the arrow-key picker. |\n| `--dry` | Preview + prompt before pushing or popping |\n| `--drain`, `--clear` | Wipe the stack (confirms; best-effort secure overwrite on both payload and metadata) |\n| `--drain --days N` | Drop entries older than N days (N \u003e 0) |\n| `--drain --hours N` | Drop entries older than N hours (N \u003e 0) |\n| `--stats [--json]` | Usage summary: push/pop counts, avg age at pop, top source commands, per-day histogram |\n| `--doctor` | Platform + clipboard-backend diagnostics |\n| `--report [title] [body]` | File an issue on the upstream repo (uses `gh` CLI if available, otherwise opens the browser issue form with fields prefilled) |\n| `--version` | Version, channel, commit, build date (plus repo path + dirty state for local builds) |\n| `--update [stable\\|nightly]` | Self-update. `--stable` is a shortcut for `--update stable`. |\n| `--auto-update on\\|off\\|status` | Toggle the opt-in background auto-update (default off) |\n| `--no-update-check` | Skip the async update check for this invocation |\n| `--uninstall` | Remove the binary, symlinks, completions, optionally data |\n\n## Compared to other clipboard tools\n\n| Tool | History / stack | CLI-native | Pipe-friendly | Cross-platform |\n|------|-----------------|------------|---------------|----------------|\n| `pbcopy` / `pbpaste`, `xclip`, `clip.exe` | ❌ | ✅ | ✅ | platform-specific |\n| Raycast / Paste / Maccy / Alfred | ✅ | ❌ | ❌ | macOS |\n| Win+V | ✅ | ❌ | ❌ | Windows |\n| CopyQ / GPaste / clipmenu | ✅ | partial | ❌ | Linux |\n| **yoink-n-yeet** | ✅ | ✅ | ✅ | macOS + Linux + Windows + WSL |\n\nIf you already use a GUI clipboard manager, keep using it — `yoink-n-yeet` is additive, not a replacement. What it's for is the gap those tools don't fill: **scripted, shell-composable clipboard state on the terminal**.\n\n## FAQ\n\n### How do I save clipboard history in the terminal?\n\nInstall `yoink-n-yeet`, then pipe into `yk` or run `yk \u003ccommand\u003e`. Each push adds an entry; `yk --list` shows the history; `yk --stats` shows usage. History persists across terminal sessions at `~/Library/Application Support/yoink-n-yeet/stack` on macOS and `$XDG_DATA_HOME/yoink-n-yeet/stack` on Linux.\n\n### How do I pipe to the clipboard from a shell script?\n\n```sh\nsome-command | yk          # push into the stack + sync OS clipboard\nsome-command | pbcopy      # direct to OS clipboard, no history\nsome-command | yk -c       # direct to OS clipboard via yoink (no-op on stack)\n```\n\n### How do I paste the OS clipboard in a script?\n\n```sh\nyt                  # pop top of stack to stdout (consuming)\nyt --peek           # print top without popping\nyt -c               # print current OS clipboard (bypasses stack entirely)\npbpaste | ...       # direct OS clipboard read, no stack interaction\n```\n\n### Does `Cmd-V` / `Ctrl-V` still work?\n\nYes. The OS clipboard always mirrors the top of the stack, so pasting in GUI apps works exactly as before. If another app clobbers the clipboard (e.g. a Slack notification copied a link), run `yt --peek | pbcopy` to re-sync.\n\n### Is it safe for sensitive data?\n\nFor a single-user workstation, yes — entries are stored with `0o600` permissions (user-only). `--list` previews redact common token/secret patterns. `--drain` does a best-effort secure overwrite of both payload and metadata. But entries are **not** encrypted at rest; don't use this on shared or multi-user systems for payloads whose cleartext exposure would be a problem. See [SECURITY.md](./SECURITY.md) for the full rundown.\n\n### Does this replace `pbcopy` / `pbpaste` / `xclip`?\n\nNo, it's a wrapper on top of them. `yoink-n-yeet` shells out to the native clipboard tool on each platform. If those aren't installed (e.g. a fresh Linux box with neither `wl-clipboard` nor `xclip`), `yt --doctor` tells you what's missing.\n\n### Does it phone home?\n\nNo telemetry. The only network I/O is the opt-in update check, which fetches `/releases/latest` from the GitHub API once every 24 hours per machine. You can disable it with `yt --no-update-check` per invocation or by editing `config.json`.\n\n### How do I uninstall?\n\n```sh\nyt --uninstall              # interactive, prompts before removing data\nbrew uninstall yoink-n-yeet # if installed via Homebrew\n```\n\n## Documentation\n\n- **[INTENT.md](./INTENT.md)** — durable record of what this project is and isn't. Read this before filing a feature request.\n- **[CLAUDE.md](./CLAUDE.md)** — structured reference for AI agents working on this repo.\n- **[CONTRIBUTING.md](./CONTRIBUTING.md)** — issue/PR workflow.\n- **[SECURITY.md](./SECURITY.md)** — responsible disclosure, threat model.\n- **[CHANGELOG.md](./CHANGELOG.md)** — release history.\n\n## Roadmap\n\nOut of scope forever: GUI / tray icon, cross-device sync, cloud, telemetry.\n\nPlanned for v0.2+:\n\n- `yt --sync` — re-mirror the top of the stack back to the OS clipboard after another app clobbered it\n- `--tag \u003cname\u003e` — named entries with tag-based filtering (`yk --drain --tag throwaway`)\n- `--swap` / `--dup` / `--rotate` — stack ergonomics\n- Scoop + winget manifests for first-class Windows install\n- SLSA provenance + reproducible builds\n- Optional `--tui` interactive browser\n\nOpen an issue if you want to push something up the list.\n\n## Contributing\n\nIssues and PRs are welcome from anyone. Merges require one approving review. See [CONTRIBUTING.md](./CONTRIBUTING.md) for the full workflow.\n\nIf you're filing a bug, `yt --report` is the fastest path — it prefills the issue form with your version and environment.\n\n## License\n\n[MIT](./LICENSE) © Corey R. Dean\n\n---\n\n\u003csub\u003e**Keywords:** clipboard stack, clipboard manager CLI, clipboard history terminal, command line clipboard, pbcopy alternative, xclip alternative, bash zsh clipboard, developer clipboard tool, pipe-friendly clipboard, cross-platform clipboard, Go CLI, macOS Linux Windows WSL clipboard.\u003c/sub\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoreyrdean%2Fyoink-n-yeet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoreyrdean%2Fyoink-n-yeet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoreyrdean%2Fyoink-n-yeet/lists"}