S3ry is a modern, interactive terminal-based AWS S3 management tool written in Go. It provides both traditional prompt-based interface and modern Bubble Tea TUI for efficient S3 operations.
๐ ROADMAP | ๐ RELEASE NOTES
- Modern Bubble Tea TUI - Interactive terminal interface (default)
- Legacy promptui interface - Traditional prompt-based selection via
--legacy-ui
- Automatic fallback - Switches to legacy mode when TTY is unavailable
- Modern backend - Enhanced performance with worker pool (
--modern-backend
) - Legacy backend - Traditional AWS SDK operations (default)
- Concurrent operations - Configurable worker pool for bulk operations
- Progress tracking - Real-time feedback for long-running operations
- ๐ฅ Download - Single and bulk file downloads
- ๐ค Upload - File uploads with progress tracking
- ๐๏ธ Delete - Object deletion with confirmation
- ๐ List - Bucket and object browsing with search
- ๐ Export - Generate object lists for analysis
- English - Default interface language
- Japanese - Full Japanese localization (
--lang ja
) - i18n framework - Extensible internationalization system
# Linux
curl -LO https://github.com/seike460/s3ry/releases/latest/download/s3ry-linux-amd64
chmod +x s3ry-linux-amd64
sudo mv s3ry-linux-amd64 /usr/local/bin/s3ry
# macOS
curl -LO https://github.com/seike460/s3ry/releases/latest/download/s3ry-darwin-amd64
chmod +x s3ry-darwin-amd64
sudo mv s3ry-darwin-amd64 /usr/local/bin/s3ry
# Windows
# Download s3ry-windows-amd64.exe from releases and add to PATH
# Arch Linux (AUR)
yay -S s3ry
# Windows (Chocolatey)
choco install s3ry
# macOS (Homebrew)
brew install s3ry
git clone https://github.com/seike460/s3ry.git
cd s3ry
go build -o s3ry ./cmd/s3ry
- AWS credentials configured via:
- AWS CLI (
aws configure
) - Environment variables (
AWS_ACCESS_KEY_ID
,AWS_SECRET_ACCESS_KEY
) - IAM roles or instance profiles
- AWS CLI (
# Start interactive mode (modern TUI by default)
s3ry
# Use legacy promptui interface
s3ry --legacy-ui
# Enable modern backend for better performance
s3ry --modern-backend
# Specify AWS region and profile
s3ry --region us-west-2 --profile production
# Enable Japanese interface
s3ry --lang ja
# Debug mode with verbose logging
s3ry --verbose --log-level debug
s3ry [OPTIONS]
OPTIONS:
--legacy-ui Use legacy promptui interface instead of Bubble Tea TUI
--new-ui Force modern Bubble Tea interface (default)
--modern-backend Enable enhanced performance backend with worker pool
--region REGION AWS region (overrides AWS_REGION)
--profile PROFILE AWS profile (overrides AWS_PROFILE)
--lang LANGUAGE Interface language: en (default) or ja
--config FILE Configuration file path
--log-level LEVEL Log level: debug, info, warn, error
--verbose Enable verbose/debug output
--version Show version information
--help Show help message
# AWS Configuration
export AWS_REGION=us-west-2
export AWS_PROFILE=production
export AWS_ENDPOINT_URL=https://custom.s3.endpoint
# S3ry Configuration
export S3RY_UI_MODE=bubbles # or "legacy"
export S3RY_LANGUAGE=en # or "ja"
export S3RY_LOG_LEVEL=info # debug, info, warn, error
S3ry looks for configuration in these locations:
~/.s3ry.yml
~/.config/s3ry/config.yml
./s3ry.yml
Basic configuration example:
ui:
mode: "bubbles" # "bubbles" (modern) or "legacy"
language: "en" # "en" or "ja"
aws:
region: "us-west-2"
profile: "default"
performance:
workers: 5 # Worker pool size for modern backend
logging:
level: "info" # debug, info, warn, error
file: "" # Log file path (empty = console only)
When you run s3ry
, you'll see an interactive terminal interface with:
- Arrow keys - Navigate buckets and objects
- Enter - Select and perform actions
- Tab - Switch between panels
- ? - Show help and keyboard shortcuts
- q - Quit application
When using --legacy-ui
, you get a traditional prompt-based workflow:
- Select bucket from list
- Choose operation (download, upload, delete, list)
- Select specific objects or files
- Confirm actions
The project includes several applications:
s3ry/
โโโ cmd/
โ โโโ s3ry/ # Main CLI application
โ โโโ s3ry-desktop/ # Desktop application (Wails)
โ โโโ s3ry-web/ # Web server
โ โโโ s3ry-tui/ # Standalone TUI
โ โโโ s3ry-vscode/ # VSCode extension backend
โโโ internal/ # Core implementation
โ โโโ s3/ # S3 operations engine
โ โโโ ui/ # UI components
โ โโโ config/ # Configuration management
โ โโโ worker/ # Worker pool implementation
โ โโโ i18n/ # Internationalization
โโโ vscode-extension/ # VSCode extension
โโโ test/ # Test suites
- Go 1.23.0+
- Make (optional, for development tasks)
git clone https://github.com/seike460/s3ry.git
cd s3ry
# Build main CLI
go build -o s3ry ./cmd/s3ry
# Build all applications
make build-all
# Run tests
go test ./...
# Run with race detection
go test -race ./...
S3ry provides dual backend implementations:
- Legacy backend - Uses AWS SDK v1 with traditional operations
- Modern backend - Enhanced performance with worker pools and optimized operations
Both backends support the same operations but the modern backend provides:
- Concurrent processing via worker pools
- Progress tracking for long operations
- Enhanced error handling and recovery
- Resource pooling for better performance
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Make your changes
- Add tests for new functionality
- Ensure all tests pass (
go test ./...
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- Follow Go best practices and conventions
- Maintain backward compatibility
- Add tests for new features
- Update documentation as needed
- Use meaningful commit messages
This project is licensed under the MIT License - see the LICENSE file for details.
- Go Team - For the excellent programming language and ecosystem
- Bubble Tea - For the modern TUI framework
- AWS SDK - For robust S3 integration capabilities
- promptui - For the legacy interface implementation
- Community - For feedback, contributions, and support