Skip to content

Free, open-source desktop S3 bucket manager. Supports AWS S3, Cloudflare R2, DigitalOcean Spaces, MinIO, Backblaze B2, and any S3-compatible endpoint. Built with Bun, Electrobun, React, and Tailwind CSS.

License

Notifications You must be signed in to change notification settings

sayedhfatimi/object0

Repository files navigation

object0

object0 logo

A free and open-source desktop S3 bucket manager built with Bun, Electrobun, React, Tailwind CSS, daisyUI, and Zustand.

Features

Storage & Profiles

  • Multi-Provider Support — AWS S3, Cloudflare R2, DigitalOcean Spaces, MinIO, GCS, Backblaze B2, or any S3-compatible endpoint
  • Profile Management — Add, edit, delete, and test connection for each storage profile
  • Default Bucket — Optional default bucket per profile for bucket-scoped API tokens (e.g. R2 Object tokens that can't list buckets)
  • Provider-Aware Defaults — Auto-sets region and endpoint templates when switching providers (e.g. auto for R2, nyc3 for Spaces)
  • Encrypted Vault — AES-256-GCM encrypted local vault with PBKDF2 key derivation; API keys never leave the main process
  • OS Keychain Integration — Optional passphrase caching via keytar for auto-unlock

Object Browser

  • Table & Grid Views — Switch between detailed table and visual grid layouts
  • Breadcrumb Navigation — Drill into folders with a clickable breadcrumb trail
  • Multi-Select — Select multiple objects for bulk operations
  • Object Pagination — Handles large buckets with paginated listing
  • File Type Icons — ~40+ extension-mapped icons for quick visual identification
  • Object Stats — View metadata for individual objects
  • Tabs — Open multiple buckets in tabs; tabs persist across sessions and auto-switch profiles when activated
  • Favorite Buckets — Pin buckets across any profile; favorites appear in a dedicated sidebar section and auto-switch profiles on click

Transfers & Sync

  • Upload — Upload files or entire folders with native file picker; supports streaming multipart uploads (5 MB+ files)
  • Download — Download objects or entire folders to local disk with folder picker
  • Download as Archive — Download multiple objects or folders as a single gzipped tarball
  • Copy & Move — Copy or move objects across buckets and profiles with streaming multipart support
  • Cross-Bucket Transfer — Copy or move individual files and folders to any bucket on any profile via a destination picker dialog; supports batch selection from the toolbar or single-item transfers from the context menu
  • Rename — Rename objects in place
  • Delete — Bulk delete with confirmation dialog
  • Sync Engine — Additive, overwrite, or mirror sync modes with diff preview before execution
  • Share Links — Generate presigned URLs with customizable expiration (presets or custom duration up to 7 days), auto-copy to clipboard, QR code generation, and share history

Job Queue

  • Concurrent Execution — Configurable concurrency (default 3 parallel jobs)
  • Live Progress — Real-time progress bars, transfer speed, and ETA for each job
  • Job Details — Expand any job to see ID, timestamps, duration, total size, average speed, and errors
  • Persistent History — Last 100 completed jobs saved to disk and restored across sessions
  • Clear History — One-click clear of completed/failed/cancelled jobs
  • Cancellation — Cancel running or queued jobs at any time

Interface

  • Status Bar — Shows active profile, bucket, selection summary, object count, and aggregate job progress with speed
  • Theming — Dark and light themes with one-click toggle
  • Toast Notifications — Non-blocking alerts for success, error, info, and warning events
  • Cross-Platform — macOS, Linux, and Windows (via Electrobun + CEF)

Table of Contents

Architecture

┌─────────────────────────────────────────┐
│              Electrobun Shell           │
│ ┌─────────────┐    ┌─────────────────┐  │
│ │  Bun Process │◄──►│    Webview      │  │
│ │  (Backend)   │ IPC│    (React UI)   │  │
│ │ • Vault      │    │ • Zustand stores│  │
│ │ • S3 ops     │    │ • Components    │  │
│ │ • Job queue  │    │ • Tailwind/Daisy│  │
│ │ • Sync engine│    │                 │  │
│ └─────────────┘    └─────────────────┘  │
└─────────────────────────────────────────┘
  • Bun process handles all S3 operations, the encrypted vault, job queue, and sync engine. API keys never reach the webview.
  • Webview is a React SPA using Zustand stores, communicating with the backend via a typed RPC layer over IPC.
  • Job history is persisted to ~/.config/object0/job-history.json (Linux) or ~/Library/Application Support/object0/ (macOS).

Getting Started

Prerequisites

Installation

# Clone the repository
git clone https://github.com/sayedhfatimi/object0.git
cd object0

# Install dependencies
bun install

Development

bun run dev

Build

bun run build

Project Structure

src/
├── bun/                    # Main process (backend)
│   ├── index.ts            # Entry point, window management
│   ├── jobs/               # Job queue, execution, persistence
│   ├── rpc/                # IPC handlers (jobs, S3, sync, vault)
│   ├── s3/                 # S3 client factory, operations, sync
│   └── vault/              # Encrypted vault + keytar integration
├── mainview/               # Webview (frontend)
│   ├── index.tsx            # React entry point
│   ├── app/                # App shell + theme provider
│   ├── components/         # UI components
│   │   ├── buckets/        # Bucket list
│   │   ├── common/         # Shared UI (modals, toasts, dialogs, icons)
│   │   ├── jobs/           # Job panel + collapsible job items
│   │   ├── layout/         # Main layout, sidebar, tabs, top bar, status bar
│   │   ├── objects/        # Object browser, table, grid, toolbar, breadcrumb
│   │   ├── profiles/       # Profile form + list
│   │   ├── settings/       # Settings panel
│   │   ├── share/          # Share dialog + share history
│   │   ├── sync/           # Sync dialog
│   │   ├── transfer/       # Cross-bucket transfer dialog
│   │   └── vault/          # Setup + unlock screens
│   ├── hooks/              # Custom React hooks
│   ├── lib/                # Constants, formatters, RPC client
│   └── stores/             # Zustand state stores
└── shared/                 # Types shared between processes
    ├── job.types.ts
    ├── profile.types.ts
    ├── rpc-schema.ts
    └── s3.types.ts

Scripts

Command Description
bun run dev Build CSS and start in development mode
bun run build Build CSS and package for production
bun run start Build then start
bun run css:build One-shot Tailwind CSS build
bun run css:watch Tailwind CSS watch mode
bun run lint Lint with Biome
bun run lint:fix Lint and auto-fix
bun run format Format with Biome

Keyboard Shortcuts

Shortcut Action
Ctrl+B Toggle sidebar
Ctrl+J Toggle job panel
Ctrl+\ Toggle theme

License

MIT

About

Free, open-source desktop S3 bucket manager. Supports AWS S3, Cloudflare R2, DigitalOcean Spaces, MinIO, Backblaze B2, and any S3-compatible endpoint. Built with Bun, Electrobun, React, and Tailwind CSS.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages