{"id":35812229,"url":"https://github.com/rgcsekaraa/brows3","last_synced_at":"2026-05-30T22:00:44.281Z","repository":{"id":332060870,"uuid":"1129690781","full_name":"rgcsekaraa/brows3","owner":"rgcsekaraa","description":"Fast open-source S3 browser, S3 explorer, and desktop client for Amazon S3, MinIO, Cloudflare R2, Wasabi, and other S3-compatible storage.","archived":false,"fork":false,"pushed_at":"2026-05-23T11:09:24.000Z","size":3634,"stargazers_count":52,"open_issues_count":7,"forks_count":4,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-23T11:26:56.587Z","etag":null,"topics":["amazon-s3","amazon-s3-bucket","amazon-s3-storage","aws-s3","cloudflare-r2","desktop-app","minio","nextjs","object-storage","rust","s3","s3-browser","s3-client","tauri","wasabi","wasabi-s3"],"latest_commit_sha":null,"homepage":"https://github.com/rgcsekaraa/brows3","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rgcsekaraa.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":"SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-07T12:54:12.000Z","updated_at":"2026-05-23T11:09:29.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/rgcsekaraa/brows3","commit_stats":null,"previous_names":["rgcsekaraa/brows3"],"tags_count":59,"template":false,"template_full_name":null,"purl":"pkg:github/rgcsekaraa/brows3","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rgcsekaraa%2Fbrows3","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rgcsekaraa%2Fbrows3/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rgcsekaraa%2Fbrows3/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rgcsekaraa%2Fbrows3/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rgcsekaraa","download_url":"https://codeload.github.com/rgcsekaraa/brows3/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rgcsekaraa%2Fbrows3/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33711018,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-30T02:00:06.278Z","response_time":92,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amazon-s3","amazon-s3-bucket","amazon-s3-storage","aws-s3","cloudflare-r2","desktop-app","minio","nextjs","object-storage","rust","s3","s3-browser","s3-client","tauri","wasabi","wasabi-s3"],"created_at":"2026-01-07T15:14:56.588Z","updated_at":"2026-05-30T22:00:44.276Z","avatar_url":"https://github.com/rgcsekaraa.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Brows3\n\n[![Release](https://img.shields.io/github/v/release/rgcsekaraa/brows3)](https://github.com/rgcsekaraa/brows3/releases)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![Build](https://github.com/rgcsekaraa/brows3/actions/workflows/release.yml/badge.svg?branch=main)](https://github.com/rgcsekaraa/brows3/actions/workflows/release.yml)\n[![Website](https://img.shields.io/badge/Website-brows3.app-blue)](https://www.brows3.app/)\n\n**Brows3** is a high-performance, open-source Amazon S3 browser, S3 explorer, and S3 desktop client designed for developers who demand speed. Built with a **Rust** core and a **Tauri**-powered frontend, Brows3 improves slow S3 navigation with prefix-aware folder views, local caching, and a virtualized object table.\n\nNavigating recently loaded buckets and prefixes feels close to browsing a local file system, while direct S3 path access keeps restricted buckets usable even without broad list permissions.\n\n**Website:** \u003ca href=\"https://www.brows3.app/\" target=\"_blank\"\u003ebrows3.app\u003c/a\u003e\n\nBrows3 is built for people searching for a fast **S3 browser**, **AWS S3 client**, **S3 bucket explorer**, **S3 file manager**, or **S3-compatible storage browser** for providers like **MinIO**, **Cloudflare R2**, **Wasabi**, and **DigitalOcean Spaces**.\n\n## Screenshots\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"public/screenshots/website/dark/07-browse-folder-actions.png\" alt=\"Brows3 dark mode object browser with folder search, upload, new folder, preview, edit, and object action controls\" width=\"900\"\u003e\n\u003c/p\u003e\n\n| Add S3-compatible storage | Settings and updates |\n| :---: | :---: |\n| \u003cimg src=\"public/screenshots/website/dark/03-add-custom-s3-profile.png\" alt=\"Brows3 custom S3 profile setup form with endpoint URL, access key, secret key, and region fields\" width=\"440\"\u003e | \u003cimg src=\"public/screenshots/website/dark/11-settings-and-updates.png\" alt=\"Brows3 settings page with theme, transfer concurrency, cache controls, updates, and system monitor\" width=\"440\"\u003e |\n\n## Who It Is For\n\nBrows3 is a strong fit if you need:\n\n- a desktop S3 browser for large buckets\n- a faster S3 explorer than generic cloud-storage tools\n- an open-source S3 client for AWS S3 or S3-compatible storage\n- a GUI for MinIO, Cloudflare R2, Wasabi, or DigitalOcean Spaces\n- a developer-focused S3 file manager with editing, search, and transfer visibility\n\n\n## Why Brows3?\n\nTraditional S3 tools often suffer from latency when navigating deep folder structures or listing large numbers of objects. If you are comparing tools like an S3 browser, S3 explorer, S3 GUI client, or desktop client for S3-compatible storage, Brows3 focuses the browsing experience around:\n\n- **Fast Cached Navigation**: Recently loaded folders and bucket views are cached so repeat navigation is quick.\n- **Deep Search**: Search recursively within a bucket or prefix, with practical limits to keep large object stores responsive.\n- **Prefix-Aware Object Cache**: Brows3 builds folder views from cached object keys, reducing repeated S3 listing calls.\n- **Virtualized Object Table**: The object table is tuned for large listings without rendering every row at once.\n\n## Feature Deep Dive\n\n### File Management\n- **Breadcrumb Navigation**: Path-based navigation for rapid traversal of complex hierarchies.\n- **Bulk Operations**: Upload, download, and delete multiple files or recursive folders at once.\n- **S3-Compatible Delete Fallback**: Folder deletion falls back to single-object deletes when a provider rejects multi-object delete requests.\n- **Mixed Content Support**: Seamlessly handle folders and files in a single drag-and-drop operation.\n- **Copy-to-Clipboard**: Quick copy of S3 Paths, Keys, and Object URLs.\n- **Presigned URL Sharing**: Generate temporary object links with configurable expiry directly from the bucket view.\n\n### Rich Previews \u0026 Editing\n- **Built-in Editor**: Powered by **Monaco (VS Code's Engine)**. Edit text, JSON, and code files directly in S3.\n- **Direct Edit Action**: Quick \"Edit\" button in the file list and context menu for instant code/text modifications.\n- **Media Previews**: Preview **images**, **videos**, and **PDFs** using presigned object URLs.\n- **Rendering Indicators**: Clear visual feedback for large image rendering states.\n\n### Performance\n\n#### **Speed \u0026 Performance**\n- **Rust-Powered Backend**: Core logic is written in Rust for near-instant operations.\n- **Smart In-Memory Caching**: \n  - Sub-millisecond navigation for recently visited folders.\n  - **Auto-Invalidation**: Cache automatically refreshes after you upload, delete, or modify files.\n  - **30-Minute TTL**: Stale data (from external sources) is automatically purged.\n- **Lazy Loading**: Paginates large object listings to keep browsing responsive.\n\n#### **Enterprise \u0026 Restricted Access**\n- **Direct Bucket Access**: Instantly navigate to specific buckets (e.g., `s3://my-secure-bucket`) even if you don't have `s3:ListBuckets` permission.\n- **Profile-Gated Access**: Create isolated profiles for different AWS accounts or environments.\n- **Persistent Secure Profiles**: Manual and S3-compatible profiles survive restarts while secrets stay in the OS keychain instead of plain JSON.\n- **Cost Awareness**: UI indicators for cached data help you manage S3 API costs.\n\n- **In-App PDF Preview**: View PDFs directly within the application through an embedded presigned preview.\n- **Automatic Region Discovery**: Profiles now automatically detect the correct AWS region from system configurations, enabling zero-config setup.\n- **Smart Tab Management**: Intelligent tab deduplication ensures you never have multiple tabs open for the same S3 path—automatically switching to existing tabs when searching.\n- **Deep Recursive Search**: Search recursively within specific folders with auto-region retry support and safety limits.\n- **System Monitor**: Real-time visibility into application performance. Track API request success/failure rates and view live logs for debugging.\n- **Profile-Gated Access**: Create isolated profiles for different AWS accounts or environments. Switch contexts instantly with zero friction.\n- **Enhanced Settings**:\n  - Manage application data, clear cache, and check for updates manually.\n  - One-click theme switching (Dark/Light/System).\n  - Configure default regions and concurrency limits.\n- **Auto-Updates**: Brows3 checks for updates and surfaces available signed releases from Settings/startup.\n- **Signed Release Pipeline**: Release automation validates updater signing and publishes updater metadata for desktop update flows.\n\n## Technical Architecture\n\nBrows3 leverages a tiered data strategy to achieve its performance:\n\n1. **Rust Core (The Muscle)**: Handles S3 networking, credential management, and local caching using high-speed concurrency.\n2. **Prefix-Indexed Tree**: An in-memory data structure that organizes S3's flat object list into a hierarchical tree, enabling instant directory lookup.\n3. **Paginated IPC Bridge**: Data is transferred between Rust and the React frontend over a high-speed, paginated IPC channel, preventing UI hangs during large data transfers.\n4. **SSG React (The UI)**: A Next.js-based frontend exported as a static site, providing the smallest possible memory footprint.\n\n## Search Keywords\n\nBrows3 is relevant if you are searching for:\n\n- Amazon S3 browser\n- S3 browser desktop app\n- S3 client for macOS, Windows, and Linux\n- S3 explorer\n- S3 bucket browser\n- AWS S3 desktop client\n- S3-compatible storage browser\n- MinIO browser\n- Cloudflare R2 desktop client\n- Wasabi browser\n- DigitalOcean Spaces client\n- object storage explorer\n\n## Alternatives And Comparisons\n\nPeople often discover Brows3 while searching for:\n\n- Cyberduck alternative for S3\n- S3 Browser alternative\n- open source S3 client\n- fast S3 desktop client\n- GUI client for Amazon S3\n- MinIO desktop client\n- R2 browser\n\nBrows3 is focused on fast bucket navigation, deep search, and large-list performance rather than generic cloud-storage support across many unrelated providers.\n\n| If you are searching for... | Brows3 positioning |\n| :--- | :--- |\n| `Cyberduck alternative for S3` | More focused on S3/object-storage workflows and large bucket navigation |\n| `S3 Browser alternative` | Cross-platform open-source desktop option with Rust/Tauri backend |\n| `MinIO client` | Works for S3-compatible endpoints through Custom S3 mode |\n| `Cloudflare R2 browser` | Relevant when using R2 through S3-compatible credentials |\n| `fast S3 desktop client` | Core product focus is speed, caching, and deep recursive search |\n\n## GitHub Setup\n\nTo improve discoverability inside GitHub itself, set the repository description and topics in the repo settings.\n\nSuggested repository description:\n\n`Fast open-source S3 browser, S3 explorer, and desktop client for Amazon S3, MinIO, Cloudflare R2, Wasabi, and other S3-compatible storage.`\n\nSuggested topics:\n\n`s3`, `amazon-s3`, `s3-browser`, `s3-client`, `s3-explorer`, `object-storage`, `minio`, `cloudflare-r2`, `wasabi`, `digitalocean-spaces`, `tauri`, `rust`\n\n## Installation\n\nBrows3 is available for all major desktop platforms. Download the latest version from the [Releases](https://github.com/rgcsekaraa/brows3/releases) page.\n\n| Platform | Installer Type |\n| :--- | :--- |\n| **macOS** | `.dmg` (Apple Silicon/Intel), `.app.tar.gz` updater archives |\n| **Windows** | `.msi`, `.exe`, portable `.zip` |\n| **Linux** | `.deb`, `.AppImage` for x64 and ARM64 |\n\nWindows releases are configured to bundle the WebView2 runtime with the installer so fresh machines do not depend on a separate runtime download during installation.\n\n### Manual Build\n\nIf you prefer building from source, follow the instructions for your platform:\n\n#### Prerequisites (All Platforms)\n- **Node.js** v22+ and **pnpm** (install via `npm install -g pnpm`)\n- **Rust** (see platform-specific instructions below)\n\n#### Windows Setup\n\n1. **Install Rust**:\n   - Download and run the installer from [rustup.rs](https://rustup.rs)\n   - Or run in PowerShell: `winget install Rustlang.Rustup`\n   \n2. **Restart your terminal** to refresh the PATH\n\n3. **Verify installation**:\n   ```powershell\n   cargo --version\n   rustc --version\n   ```\n\n4. **Clone and run**:\n   ```powershell\n   git clone https://github.com/rgcsekaraa/brows3.git\n   cd brows3\n   pnpm install\n   pnpm tauri dev\n   ```\n\n#### macOS Setup\n\n1. **Install Rust**:\n   ```bash\n   curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n   source ~/.cargo/env\n   ```\n\n2. **Install Xcode Command Line Tools** (if not already installed):\n   ```bash\n   xcode-select --install\n   ```\n\n3. **Clone and run**:\n   ```bash\n   git clone https://github.com/rgcsekaraa/brows3.git\n   cd brows3\n   pnpm install\n   pnpm tauri dev\n   ```\n\n#### Linux Setup\n\n1. **Install Rust**:\n   ```bash\n   curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\n   source ~/.cargo/env\n   ```\n\n2. **Install system dependencies** (Debian/Ubuntu):\n   ```bash\n   sudo apt update\n   sudo apt install -y libgtk-3-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev patchelf\n   ```\n\n3. **Clone and run**:\n   ```bash\n   git clone https://github.com/rgcsekaraa/brows3.git\n   cd brows3\n   pnpm install\n   pnpm tauri dev\n   ```\n\n#### Release Build (All Platforms)\n\n```bash\npnpm tauri build\n```\n\n## Troubleshooting (macOS)\n\nIf you see the error **\"Brows3.app is damaged and can't be opened\"** after downloading:\n\nThis usually means the build was downloaded through a browser and Gatekeeper has quarantined it. First, drag `Brows3.app` into `/Applications`, launch it from `/Applications`, and eject the mounted DMG before deleting the installer. If Gatekeeper still blocks the app, run:\n\n```bash\nsudo xattr -rd com.apple.quarantine /Applications/Brows3.app\n```\n\nCurrent community builds may still need the quarantine-removal step above. For more details, see our [macOS Troubleshooting Guide](docs/MACOS_TROUBLESHOOTING.md) and [release signing setup guide](docs/RELEASE_SIGNING.md).\n\n## Release Keys\n\nFor auto-updates to install correctly, the GitHub Actions secrets must include `TAURI_SIGNING_PRIVATE_KEY` and `TAURI_SIGNING_PRIVATE_KEY_PASSWORD`, and the matching public key must be present in `src-tauri/tauri.conf.json`. The exact GitHub path is:\n\n`Repository Settings -\u003e Secrets and variables -\u003e Actions`\n\nIf you already added the secrets for Tauri, double-check that the secret names are exact and that the committed updater `pubkey` still matches the private key currently stored in GitHub.\n\n## Contributors\n\nWe welcome contributions from the community! Whether you are a Rustacean, a React developer, or as a technical writer, your help is appreciated.\n\n- **Founder \u0026 Maintainer**: [rgcsekaraa](https://www.linkedin.com/in/rgcsekaraa/)\n- **Core Engineering**: Brows3 Open Source Team\n\nWant to become a contributor? Check out our [Contributing Guide](https://github.com/rgcsekaraa/brows3/blob/main/CONTRIBUTING.md) and join us in building the world's fastest S3 browser!\n\n## How to Contribute\n\n1. **Check the Issues**: Look for \"good first issue\" labels.\n2. **Standard Workflow**: Fork -\u003e Branch -\u003e Commit -\u003e Pull Request.\n3. **Code Quality**: Ensure Rust code is formatted with `cargo fmt` and TS code with `pnpm lint`.\n\n## License\n\nDistributed under the MIT License. See `LICENSE` for more information.\n\n---\nCreated by [rgcsekaraa](https://www.linkedin.com/in/rgcsekaraa/). Built for the community.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frgcsekaraa%2Fbrows3","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frgcsekaraa%2Fbrows3","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frgcsekaraa%2Fbrows3/lists"}