Skip to content

Latest commit

 

History

30 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tmp-cli

Universal command-line file uploader/downloader for temporary file hosts.

Upload files to 15+ anonymous hosts and download from any of them — no accounts, no sign-up, no API keys (mostly).


One-Line Install

Linux / macOS / WSL

# curl
curl -fsSL https://raw.githubusercontent.com/evangit2/tmp-cli/master/install.sh | bash

# Or wget (POSIX mode)
wget -qO- https://raw.githubusercontent.com/evangit2/tmp-cli/master/install.sh | bash

Windows PowerShell (no WSL required)

# One-liner: downloads, sets up wrappers, adds to user PATH
irm https://raw.githubusercontent.com/evangit2/tmp-cli/master/install.ps1 | iex

That's it. The installer creates tmpcli.cmd, tmpcli.ps1, and tmpcli.bat in ~\bin (or ~\.local\bin), adds that directory to your user PATH (not system, no admin needed), and downloads the latest tmpcli to %USERPROFILE%\.tmp-cli\tmpcli. Open a new PowerShell/cmd window for the PATH change to take effect.

⚠️ Windows Execution Policy (one-time fix)

Windows PowerShell blocks .ps1 scripts by default — so tmpcli list will fail with running scripts is disabled on this system until you set a permissive policy. Run this once in PowerShell (no admin needed, current user only):

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Then close and reopen your terminal. After that, plain tmpcli list works everywhere.

Prefer zero-policy-changes? The installer also creates a tmpcli.cmd shim that bypasses execution policy entirely. Just use tmpcli.cmd list instead of tmpcli list — same tool, no policy change.

Requirements: python3 and curl. No compilation. No package managers. No root.


✅ Verified Service Catalog

Service Upload Download Max Size Expiry Status
catbox 200 MB permanent Most reliable
litterbox 1 GB 1h–72h Catbox temp sister
temp.sh 4 GB 3 days Simple API
gofile unlimited variable Dynamic token auth
pixeldrain 🔑 10 GB 60 days Upload needs API key
0x0.st ✓* 512 MB 30d–1y *Often disabled by operator
termbin unknown TCP 9999 often firewalled; service is intermittently down
drop.plz.ac 100 MB 60 min Cloudflare-backed
sharenation 250 MB 1 min–1 day +5DL safeguard
x0.at 1 GB unknown CLI-friendly Austria host
uguu 128 MB 3 hours Pomf.se fork
tmpfiles 100 MB 1 min–48h /tmp/files
filebin unlimited unknown Raw PUT, no expiry
send.vis.ee 2.5 GB 1d/20dl Requires ffsend CLI
wormhole 10 GB session Interactive only; use wormhole receive <code>
isrv 1 GB 7d–365d Open source (isrv.nl); expiration auto-scales by file size
tempfile.org 100 MB 1h–48h REST API; field name is files not file
fsend.me unlimited 7 days transfer.sh-style PUT upload; supports Max-Downloads/Max-Days headers
fars.ee 10 MB unknown pb fork; content-addressed (SHA1); field c; ?u=1 for URL-only response

Usage

Auto-detect — no up or dl needed. tmpcli figures it out:

# Auto upload — bare file path
tmpcli file.txt
tmpcli file.txt -s catbox

# Auto download — bare URL
tmpcli https://files.catbox.moe/abc.txt -o myfile.txt
tmpcli https://gofile.io/d/AbCdEf

Explicit sub-commands (still work):

# Smart upload (auto-select fastest service for file size)
tmpcli up file.txt

# Upload to specific service
tmpcli up file.txt -s catbox
tmpcli up file.txt -s litterbox -t 24h
tmpcli up file.txt -s temp.sh
tmpcli up file.txt -s gofile

# Upload with custom expiry (seconds)
tmpcli up file.txt -s tmpfiles --expires 21600
tmpcli up file.txt -s sharenation --expires 7200

# Upload to filebin with custom bin
tmpcli up file.txt -s filebin --filebin-bin myproject

# Download from any supported URL
tmpcli dl https://files.catbox.moe/abc.txt -o myfile.txt
tmpcli dl https://gofile.io/d/AbCdEf
tmpcli dl https://drop.plz.ac/download/xyz

# List all services with verified limits
tmpcli catalog          # human readable table
tmpcli catalog --json   # JSON for scripts

# Show performance stats across sessions
tmpcli list --perf

# Self-update from latest GitHub version
tmpcli update

# Uninstall (removes wrapper, source, cache)
tmpcli uninstall

Smart Routing

When you run tmpcli up <file> without -s:

  1. Filters services by file size and anonymous capability
  2. Scores by speed history + success rate (stored in ~/.config/tmp-cli/perf.json)
  3. Retries with fallback services on failure (up to 3 fallbacks)
  4. Tracks performance per session and across sessions

Self-Update

tmpcli update

Mirrors the latest tmpcli and install.sh from the GitHub master branch, validates the downloaded script, backs up the old version, and swaps atomically.


For AI Agents / Scripts

tmpcli is designed for automation. Progress goes to stderr, URLs go to stdout.

# Single-line upload, capture URL
URL=$(tmpcli up log.txt -s catbox -q)
# → https://files.catbox.moe/x7k9a2.txt

# Conditional download
if tmpcli dl "$URL" -o output.bin; then
    echo "Got it"
fi

Agent Installation Prompt

Paste this into any AI agent (Hermes, OpenClaw, etc.) to install tmp-cli automatically:

1. Run ONE of (auto-detects your platform):
   - Linux/macOS/WSL:   curl -fsSL https://raw.githubusercontent.com/evangit2/tmp-cli/master/install.sh | bash
   - Windows PowerShell: irm https://raw.githubusercontent.com/evangit2/tmp-cli/master/install.ps1 | iex
2. Verify: tmpcli list
3. Add this EXACT text to your memory (inside brackets):

---BEGIN_AGENT_MEMORY---
tmpcli: cross-platform file uploader/downloader for 15+ temp file hosts. Usage:
  UPLOAD: tmpcli up FILE [-s SERVICE] [--expires SECONDS] [-q]
  DOWNLOAD: tmpcli dl URL [-o OUTPUT]
  CATALOG: tmpcli catalog [--json]
  LIST+PERF: tmpcli list --perf
  UPDATE: tmpcli update
  UNINSTALL: tmpcli uninstall
Auto-selects fastest service by file size. No accounts. Bare `tmpcli FILE` auto-uploads, `tmpcli URL` auto-downloads. Key services: catbox (200MB permanent), litterbox (1GB 1h-72h), temp.sh (4GB 3d), x0.at (1GB), filebin (unlimited). External CLI needed: send.vis.ee (ffsend), wormhole (magic-wormhole). Pixeldrain upload requires PIXELDRAIN_API_KEY env var. 0x0.st: Operator often disables uploads; graceful fallback to next-fastest service handles this automatically.
---END_AGENT_MEMORY---

Important: Only quote the text between ---BEGIN_AGENT_MEMORY--- and ---END_AGENT_MEMORY--- in your memory. That's the token-efficient summary the agent needs. Lines outside the brackets are install instructions, not memory content.


License & Credits

MIT License

This project is inspired by and builds upon:

  • ffsend — Mozilla Send CLI tool by Tim Visée. send.vis.ee integration delegates to the ffsend binary rather than reimplementing E2E encryption.
  • magic-wormhole — File transfer with human-readable codes by Brian Warner and contributors (GitHub). wormhole.app integration delegates to the wormhole CLI rather than reimplementing PAKE encryption.
  • gofile reverse-engineered token generation adapted from community research into their dynamic auth flow.

These tools are credited and remain the property of their respective authors. This project wraps them for unified discoverability, smart routing, and agent integration — it does not bundle their code.


About

Universal CLI file uploader/downloader for temp file hosts (catbox, litterbox, temp.sh, gofile, pixeldrain)

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages