CLI
Ship pastes from your terminal against the production API at https://voidpaste.com. Auth uses API keys (Bearer), not session cookies.
Install
Install with Homebrew on macOS or Linux:
brew install fleames/tap/voidpaste voidpaste version
Install with Scoop on Windows:
scoop bucket add fleames https://github.com/fleames/scoop-bucket scoop install fleames/voidpaste voidpaste version
Or download a signed, checksummed archive from GitHub Releases. Choose Windows, macOS, or Linux and amd64 or arm64. Every release includes SHA256SUMS, an SPDX SBOM, and GitHub build provenance.
# Linux amd64 example
version=v0.4.1
curl -fLO "https://github.com/fleames/voidpaste-cli/releases/download/$version/voidpaste_${version}_linux_amd64.tar.gz"
curl -fLO "https://github.com/fleames/voidpaste-cli/releases/download/$version/SHA256SUMS"
grep "voidpaste_${version}_linux_amd64.tar.gz" SHA256SUMS | sha256sum -c -
tar -xzf "voidpaste_${version}_linux_amd64.tar.gz"
# Optional signed-provenance verification (GitHub CLI)
gh attestation verify "voidpaste_v0.4.1_linux_amd64.tar.gz" --repo fleames/voidpaste-cliWith Go 1.23+, go install remains supported from the public module (github.com/fleames/voidpaste-cli):
go install github.com/fleames/voidpaste-cli/cmd/[email protected]
The WinGet manifest is under review. We will document winget install only after it is accepted into the community repository.
The installed command is voidpaste. Optional short alias vp (same binary — create a symlink after install):
# Linux / macOS ln -sf "$(which voidpaste)" "$(dirname "$(which voidpaste)")/vp" # Windows (Developer PowerShell / admin): junction or copy Copy-Item (Get-Command voidpaste).Source vp.exe
Or build from a clone (names the binary voidpaste):
git clone https://github.com/fleames/voidpaste-cli.git cd voidpaste-cli go build -o voidpaste ./cmd/voidpaste # optional: ln -s voidpaste vp
Authenticate
- Sign in and create a key under Dashboard → API Keys (scopes
pastes:read+pastes:write). - Store it locally:
voidpaste auth login --key vp_live_…
Config file: ~/.config/voidpaste/config.json (Windows: %AppData%\voidpaste\config.json). Env overrides: VP_API_KEY (or VP_TOKEN), VP_API for a custom origin.
voidpaste whoami voidpaste status
Create a paste
# from a file
voidpaste create ./notes.md --title "Notes" --language markdown --expiration 1d
# from stdin
echo 'fmt.Println("hi")' | voidpaste create --lang go --visibility unlisted
# URL only (scripts / CI)
kubectl logs deploy/api --tail=200 | voidpaste create --stdin --expiration 1h -q
# Idempotent create (retries replay for 24h)
voidpaste create ./build.log --idempotency-key "ci-$RUN_ID" --expiration 1d
# burn-after-reading + password
voidpaste create secret.txt --visibility password --password '…' --burn
# Machine-readable envelope ({ paste, warnings })
voidpaste create ./notes.md --jsonDefault output is paste id + share URL. --quiet / -q prints only the URL. --json prints the full API envelope (including warnings). Anonymous create works without a key; private / password visibility need a key.
More CI/shell recipes: Integrations.
Fetch
voidpaste get PASTE_ID voidpaste raw PASTE_ID voidpaste download PASTE_ID -o out.txt voidpaste raw PASTE_ID --password '…'
List, claim, and delete
voidpaste list printf '%s' "$MANAGEMENT_TOKEN" | voidpaste claim PASTE_ID --management-token-stdin voidpaste delete PASTE_ID --yes
Claim requires an API key with pastes:write. The management token is stdin-only so it does not appear in shell history or process arguments.
Self-hosted API
Default origin is https://voidpaste.com. Override per command or at login:
voidpaste status --api https://paste.example.com voidpaste auth login --api https://paste.example.com --key vp_live_…
curl fallback
The CLI is a thin client over the same REST API. Equivalent curl:
export VP_API=https://voidpaste.com
export VP_API_KEY=vp_live_…
jq -n --rawfile c ./file.txt \
'{content:$c, visibility:"unlisted", expiration:"1d"}' \
| curl -sS -X POST "$VP_API/api/v1/pastes" \
-H "Authorization: Bearer $VP_API_KEY" \
-H "Content-Type: application/json" \
-d @-Notes
- Auth header:
Authorization: Bearer vp_live_…. Password pastes:X-Paste-Password. - The CLI sends only the bounded channel marker
X-VoidPaste-Client: cliplus its version in User-Agent. It sends no device ID, installation ID, username, repository or workflow identifier, tracking cookie, or stored IP attribution. - Respect rate-limit response headers.
- Client-encrypted pastes still need browser (or your own) decryption — the CLI stores/fetches ciphertext only.
- Collections and versions are available via
voidpaste collection …andvoidpaste versions …. Moderation stays dashboard/API-only. - Source: github.com/fleames/voidpaste-cli.