All projects

Storage infrastructure

Minamo

An S3-compatible gateway for object storage, with a place for hot, warm, and cold data.

Open source

Working entry Sample availability; cover studies and development stages are illustrative.

Concept architecture map connecting an S3 API to a metadata catalog and hot, warm, and cold storage tiers.
Architecture study / one API, several storage tiers
01Context

Storage changes. The interface stays familiar.

Minamo is an S3-compatible object storage gateway and storage management system, developed primarily with Python and FastAPI. Its layered structure separates the API, services, metadata management, and storage backends. SQLite holds object metadata. The wider exploration is hierarchical storage management: how hot, warm, and cold tiers can sit behind a consistent interface while an object's physical location changes.

02Engineering

Follow the object

API layer
Python / FastAPI · S3-compatible interface
Object catalog
SQLite metadata management
Service boundary
API → services → metadata & storage adapters
Exploration
HSM policies across hot, warm, and cold tiers
Planned backends
Multiple storage targets, including Cloudflare R2
Planned operations
Administrative interface for storage management
03Field notes

A catalog is not a storage backend

The object catalog answers what an object is. A storage adapter answers where its bytes are. That separation is the useful part of the architecture: clients can keep an S3-shaped view while storage policy evolves underneath it.

A future tiering operation has to account for more than a successful copy. It also needs a way to represent an interrupted transfer, confirm the destination, and decide when the old copy can be removed. These are design questions for the HSM exploration.

04Design

Boundaries that leave room to grow

Separate identity from location

An object key belongs to the client-facing namespace. Where the bytes live is a backend concern. Keeping those concepts apart makes tier movement possible without asking clients to understand every storage target.

Put policy above adapters

Storage adapters should describe capabilities and move bytes. Lifecycle services should decide when and why data moves. This keeps HSM experiments from becoming backend-specific logic.

Make operational state inspectable

A planned administrative interface should explain an object's tier and location, not just list files. Failed or interrupted movements need visible state that an operator can reason about.

05Development

An example build sequence

Illustrative stages, from later explorations to foundations.

  1. Lifecycle policies

    Sketch hot, warm, and cold tier policies, with an operational view of movement and recovery.

  2. Backend adapters

    Define storage boundaries and explore how a backend such as Cloudflare R2 fits the same contract.

  3. API & catalog

    Establish the S3-facing API, service layer, and SQLite catalog as separately testable pieces.