Skip to content
On this page

Shelves

S3-compatible object storage for the Verb ecosystem.

Overview

Shelves is a lightweight, self-hosted S3-compatible storage server built with Bun and Verb. It provides a drop-in replacement for Amazon S3, MinIO, or other object storage services.

Features

  • S3-Compatible API - Works with AWS SDKs, CLI tools, and existing S3 code
  • Simple Authentication - Header-based auth or AWS Signature V4
  • File System Storage - Objects stored directly on disk
  • Admin Dashboard - Web UI for management on port 9001
  • Lightweight - Minimal dependencies, fast startup
  • Part of Verb Ecosystem - Seamless integration with Hoist

Quick Start

bash
# Install
bun add @verb-js/shelves

# Start the server
bun run shelves

Or with Docker:

bash
docker run -d -p 9000:9000 -p 9001:9001 verbjs/shelves

Default Ports

ServicePortDescription
S3 API9000S3-compatible REST API
Dashboard9001Admin web interface

Default Credentials

Access Key: shelvesadmin
Secret Key: shelvesadmin

Warning: Change these credentials in production!

Usage Example

typescript
import { S3Client, PutObjectCommand } from '@aws-sdk/client-s3'

const client = new S3Client({
  endpoint: 'http://localhost:9000',
  region: 'us-east-1',
  credentials: {
    accessKeyId: 'shelvesadmin',
    secretAccessKey: 'shelvesadmin',
  },
  forcePathStyle: true,
})

await client.send(new PutObjectCommand({
  Bucket: 'my-bucket',
  Key: 'hello.txt',
  Body: 'Hello from Shelves!',
}))

With Hoist

Shelves is automatically started when using Hoist's development environment:

bash
hoist dev

Verb Ecosystem

PackageDescription
VerbHTTP framework for Bun
HullDatabase toolkit
AllowAuthentication library
HoistSelf-hosted PaaS
ShelvesS3-compatible storage

Released under the MIT License.