Skip to main content
MinIO speaks the S3 API with AWS Signature V4 against your own server endpoint (e.g. http://localhost:9000). MinIO is self-hosted, so the endpoint is required and path-style addressing is used by default. MinIO ignores copy and delete conditions, so under write: conditional mirage refuses what would copy or delete on a MinIO mount (such as a cp or mv within the mount, a mv out of it, rm, or find -delete); a cp or mv into it from another mount is a write, and goes through. Credentials (access key + secret key from the MinIO Console) are created the same way in both runtimes, see MinIO Credentials.

Node (server-side)

Config

Fields marked secret are redacted in snapshots.

Browser (presigned URLs)

The browser MinIOVFS is secret-free, your backend signs each operation using your MinIO keys and returns a URL. MinIO accepts AWS Signature V4, so @aws-sdk/s3-request-presigner works, pointed at your MinIO endpoint.

Config

Fields marked secret are redacted in snapshots.

1. Server: sign URLs with the MinIO endpoint

MinIO uses path-style URLs (forcePathStyle: true), virtual-hosted style requires extra DNS setup on a self-hosted server.

2. Browser: wire it up

endpoint on the browser config is only used for display/logging; the actual endpoint is baked into the presigned URLs your backend returns.

3. CORS

MinIO answers CORS preflights for all origins by default, so local dev typically works without configuration. To restrict origins, set the server environment variable and restart MinIO:
See the MinIO VFS docs for the equivalent Python wiring. For write: conditional on this provider, see S3-compatible stores.

VFS.md

The VFS.md an agent reads with MinIO mounted at /<path>.

Virtual Filesystem

Supported Unix Commands for VFS

Unix commands work on each path as on a local filesystem, as far as the path supports them:

Limitations of Unix Commands for VFS

Where a path differs from a local filesystem:Run man <cmd> or <cmd> --help for one command’s usage.

Integration

What MinIO answers through its own API, so fewer files are read. Integration explains each command.