← All extensions
Object Storage MinIO banner

Object Storage MinIO

ivyx

Adds MinIO and other S3-compatible stores to the Object Storage extension

Object Storage MinIO

Adds MinIO, and any other S3-compatible endpoint, to the Object Storage extension.

What you can do

  • Connect to a MinIO or S3-compatible server by host and port, over HTTP or HTTPS
  • Browse your buckets and objects from the Object Storage panel
  • Download an object into your workspace, and upload a workspace file back
  • Work with on-prem deployments that have no wildcard DNS, since path-style addressing is on by default

Requirements

The Object Storage extension, installed and enabled, and the desktop app.

This is a provider: it owns the S3 client and the "Connect MinIO" form, but no panel of its own. Install extension-object-storage alongside it; the hub renders the connections tree, the object list and the transfer panel, and dispatches every operation here.

Want to try it without a server of your own? examples/docker-compose.yml starts a seeded MinIO in one command — the manual walks through it end to end.

Getting started

Open Object Storage in the activity bar → +MinIO / S3-compatible.

Field Notes
Endpoint host:port, e.g. minio.corp.local:9000. A full https://… URL also works.
Access key / Secret key Stored in the OS keychain, never in a workspace file.
Use HTTPS Off for a plain-HTTP on-prem deployment.
Path-style addressing On by default. Virtual-host style needs wildcard DNS, which on-prem deployments rarely have.
Region Optional; MinIO ignores it, but the S3 protocol requires one to be sent. Defaults to us-east-1.

Editing an existing connection leaves the secret field blank — empty means "keep the stored key".

How it talks to the server

The renderer cannot reach an arbitrary origin (the desktop app's CSP pins connect-src), and the S3 object API needs PUT, HEAD and DELETE with raw binary bodies. So this extension ships a small Node helper process: it is spawned on demand via the host's managed-process bridge, listens on 127.0.0.1 behind a per-spawn token, and runs the official AWS SDK. Downloads stream to a temporary file and are renamed on completion, so an interrupted transfer never leaves a half-written file behind.

That helper is why connections are desktop-only — the browser edition has neither a process bridge nor a persistent secret store.

Two settings are available if the defaults clash with something on your machine: objectStorage.minio.sidecarPort (default 47613) and objectStorage.minio.nodePath (default node; Node 18+ required).

For agents and flows

Six capabilities go through the audited gateway: connect, listBuckets, listObjects, statObject, deleteObject (approval-gated) and disconnect.

Transfers are deliberately not exposed here — they take an absolute host path. Use the hub's object-storage.download / object-storage.upload, which resolve the path and gate the upload.

No capability accepts a credential: keys are entered in the connect form and looked up by connection id, so they never appear in a gateway payload.