Storage infrastructure
Minamo
An S3-compatible gateway for object storage, with a place for hot, warm, and cold data.
Working entry Sample availability; cover studies and development stages are illustrative.
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.
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
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.
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.
An example build sequence
Illustrative stages, from later explorations to foundations.
Lifecycle policies
Sketch hot, warm, and cold tier policies, with an operational view of movement and recovery.
Backend adapters
Define storage boundaries and explore how a backend such as Cloudflare R2 fits the same contract.
API & catalog
Establish the S3-facing API, service layer, and SQLite catalog as separately testable pieces.