A powerful command-line interface for UploadThing, enabling seamless file uploads and downloads directly from your terminal.
- Fast file uploads** to UploadThing with progress tracking
- Download files** with custom paths and progress indication
- Private file support with API key authentication
- List uploaded files with detailed metadata
- Easy configuration management
- Progress tracking for large file operations
- Flexible output options for downloads
- Force overwrite capabilities
- Go 1.24 or higher
- UploadThing account and API key
git clone https://github.com/username/ut.git
cd uploadthing-cli
go build -o ut .ut config# Single file
ut push document.pdf
# Multiple files
ut push image1.png image2.png document.pdfut listut fetch your-file-key.pdfConfigure your UploadThing secret key:
# Set your secret key
ut config set-secret sk_your_secret_key_here
# View current configuration
ut config show
Upload single or multiple files to UploadThing:
# Single file upload
ut push image.jpg
# Multiple file upload
ut push image1.png image2.png document.pdf
# Upload multiple files with wildcards
ut push *.jpg *.png
# Mixed file types
ut push photo.jpg data.csv report.pdfSupported file types: Images (JPG, PNG, GIF), Documents (PDF, TXT, JSON, XML, CSV), and more.
Download files from UploadThing:
# Download to current directory
ut fetch abc123-example.jpg
# Download with custom filename
ut fetch abc123-example.jpg -o myfile.jpg
# Download to specific directory
ut fetch abc123-example.jpg -o ./downloads/
# Download with progress bar
ut fetch abc123-example.jpg --progress
# Download private file (requires API key)
ut fetch abc123-example.jpg --private
# Force overwrite existing files
ut fetch abc123-example.jpg --forceView your uploaded files:
# List all files
ut list
# List with file details
ut list --verboseThe CLI stores configuration in ~/.ut-cli/config.yml by default. You can customize the location:
| Command | Description | Example |
|---|---|---|
ut config |
Set your UploadThing secret key | ut config |
ut push <file> [file2]... |
Upload one or more files to UploadThing | ut push document.pdf image.png |
ut fetch <filekey> |
Download a file by file key | ut fetch abc123-file.jpg |
ut list |
List all uploaded files | ut list |
-o, --output: Custom output path or directory-f, --force: Overwrite existing files without prompt-p, --progress: Show download progress--private: Download private file (requires API key)
-v, --verbose: Show detailed file information
We welcome contributions! Please see our Contributing Guidelines for details.
- Fork the repository
- Clone your fork:
git clone https://github.com/yourusername/ut.git - Create a feature branch:
git checkout -b feature/amazing-feature - Make your changes
- Commit your changes:
git commit -m 'Add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments - UploadThing for their excellent file upload service Cobra for the CLI framework
- All contributors who help improve this tool
- Bug Reports: GitHub Issues
- Feature Requests: GitHub Discussions
- Documentation: Wiki
Made with ❤️ for the UploadThing community