A simple, cross-platform desktop client for browsing and managing files on S3-compatible storage. Built with Tauri v2 and Rust.
- Open Source and unencombered -- Fully Open Source and unencumbered
- Dual-pane file browser — local filesystem on the left, S3 on the right
- Multiple S3 endpoints — connect to AWS S3, MinIO, Backblaze B2, Cloudflare R2, or any S3-compatible service; switch between them instantly
- Secure credentials — access keys are stored in your OS keychain (macOS Keychain, Windows Credential Manager, Linux Secret Service)
- Transfer queue — upload and download files with pause, resume, and cancel support
- Multipart transfers — large files (>100 MB) are transferred in parts automatically
- Dark mode — follows your system theme or can be set manually
- Keyboard shortcuts — F5 to refresh, Delete to delete, Ctrl+U to upload, Ctrl+D to download
- Offline detection — active transfers are paused automatically when network connectivity drops and resumed when it returns
Run directly without installing:
nix run github:owner/simples3Or add it to your NixOS / Home Manager configuration:
# flake.nix
{
inputs.simples3.url = "github:owner/simples3";
# ... then in your outputs:
}# configuration.nix (NixOS) or home.nix (Home Manager)
{ inputs, system, ... }:
{
environment.systemPackages = [ # NixOS
inputs.simples3.packages.${system}.default
];
# — or —
home.packages = [ # Home Manager
inputs.simples3.packages.${system}.default
];
}A .desktop entry and icons are included, so SimpleS3 will appear in your application menu.
Download the latest release for your platform from the Releases page:
| Platform | Format |
|---|---|
| Linux | .deb, .AppImage |
| Windows | .msi, .exe (NSIS) |
| macOS | .dmg |
On macOS, you may need to remove the quarantine attribute after installing the application:
xattr -c /Applications/SimpleS3.appThis is required because the app is not currently signed with an Apple Developer certificate. After running this command, you should be able to launch SimpleS3 normally.
The recommended way to set up the development environment is with devenv. This handles all system dependencies automatically.
# Enter the dev shell (installs Rust, Bun, Tauri CLI, GTK, WebKitGTK, etc.)
devenv shell
# Install frontend dependencies
bun install
# Start the app in development mode
dev
# — or equivalently —
bun run tauri devdevenv also provides these helper scripts:
| Command | Description |
|---|---|
dev |
Install deps and launch the app |
build |
Production build |
test |
Run Rust and frontend tests |
lint |
Run clippy and eslint |
format |
Auto-format Rust and TypeScript |
check |
Format check + lint + test |
clean |
Remove build artifacts |
If you have Nix with flakes enabled but not devenv, you can use the flake directly:
nix develop # enter dev shell with all dependencies
bun install
bun run tauri devIf you are not using Nix, install the following prerequisites:
- Rust 1.75+ — https://rustup.rs/
- Bun — https://bun.sh/
- Linux system libraries (Linux only):
sudo apt-get install -y \ libgtk-3-dev libwebkit2gtk-4.1-dev libappindicator3-dev \ librsvg2-dev patchelf libsoup-3.0-dev \ libjavascriptcoregtk-4.1-dev libssl-dev
Then:
bun install
bun run tauri devbun run tauri buildBuild artifacts are written to src-tauri/target/release/bundle/.
simples3/
├── src/ # Frontend (React + TypeScript)
│ ├── components/ # UI components
│ ├── contexts/ # React contexts (clipboard)
│ ├── hooks/ # React hooks (theme, network)
│ ├── styles/ # CSS / Tailwind
│ ├── types/ # TypeScript type definitions
│ ├── App.tsx # Main application component
│ └── main.tsx # Entry point
├── src-tauri/ # Backend (Rust + Tauri)
│ ├── src/
│ │ ├── commands/ # Tauri IPC commands
│ │ ├── models/ # Data models
│ │ ├── services/ # S3, config, transfer logic
│ │ └── lib.rs # Library root
│ ├── Cargo.toml # Rust dependencies
│ └── tauri.conf.json # Tauri configuration
├── flake.nix # Nix flake (package + dev shell)
├── devenv.nix # Nix dev environment (devenv)
└── README.md
# Rust tests
cd src-tauri && cargo test
# Frontend tests
bun test
# Linting
cd src-tauri && cargo clippy
bun run lintMinIO provides an S3-compatible server you can run locally:
mkdir -p ~/minio-data
minio server ~/minio-data --console-address ":9001"Default credentials: minioadmin / minioadmin. Add a new endpoint in SimpleS3 pointing to http://localhost:9000.
Contributions are welcome! Please open an issue or pull request.
- Fork the repository
- Create a feature branch (
git checkout -b my-feature) - Commit your changes
- Push to your fork and open a pull request
SimpleS3 is licensed under the GNU General Public License v3.0.
