MinIO Storage Skill
SkillFiles & storageUpload, download, and manage files in S3-compatible object storage via the MinIO server at {{MINIO_HOST}}:{{MINIO_PORT}}.
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; ahel provides instructions and does not run this skill.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the MinIO Storage Skill skill
What this skill tells your AI
The instructions your AI receives, as published by bidewio/better-openclaw in skills/minio-storage/SKILL.md and read by ahel’s review.
MinIO S3-compatible object storage is available at http://{{MINIO_HOST}}:{{MINIO_PORT}} within the Docker network. The console UI is at http://{{MINIO_HOST}}:{{MINIO_CONSOLE_PORT}}.
mc CLI Setup
Configure the MinIO client to connect to the local instance:
mc alias set openclaw http://{{MINIO_HOST}}:{{MINIO_PORT}} $MINIO_ACCESS_KEY $MINIO_SECRET_KEY
Bucket Operations
# Create a new bucket
mc mb openclaw/my-bucket
# List all buckets
mc ls openclaw
# List contents of a bucket
mc ls openclaw/my-bucket
# Remove an empty bucket
mc rb openclaw/my-bucket
Uploading Files
# Upload a single file
mc cp /data/output/report.pdf openclaw/my-bucket/reports/report.pdf
# Upload a directory recursively
mc cp --recursive /data/output/images/ openclaw/my-bucket/images/
# Upload with metadata
mc cp --attr "Content-Type=application/pdf;x-amz-meta-source=openclaw" \
/data/output/report.pdf openclaw/my-bucket/reports/report.pdf
Downloading Files
# Download a single file
mc cp openclaw/my-bucket/reports/report.pdf /data/input/report.pdf
# Download a directory recursively
mc cp --recursive openclaw/my-bucket/images/ /data/input/images/
# Stream file content to stdout
mc cat openclaw/my-bucket/data/config.json
Using curl with S3 API
For direct HTTP access without the mc CLI:
# Upload a file via PUT
curl -X PUT "http://{{MINIO_HOST}}:{{MINIO_PORT}}/my-bucket/myfile.txt" \
--user "$MINIO_ACCESS_KEY:$MINIO_SECRET_KEY" \
-H "Content-Type: text/plain" \
--data-binary @/data/output/myfile.txt
# Download a file via GET
curl "http://{{MINIO_HOST}}:{{MINIO_PORT}}/my-bucket/myfile.txt" \
--user "$MINIO_ACCESS_KEY:$MINIO_SECRET_KEY" \
-o /data/input/myfile.txt
Presigned URLs
Generate temporary shareable URLs:
# Generate a presigned URL valid for 7 days
mc share download --expire 168h openclaw/my-bucket/reports/report.pdf
# Generate a presigned upload URL
mc share upload --expire 24h openclaw/my-bucket/uploads/
Bucket Policy
# Set a bucket to public read
mc anonymous set download openclaw/my-bucket
# Remove public access
mc anonymous set none openclaw/my-bucket
Bucket Naming Conventions
openclaw-data— general data storageopenclaw-uploads— user file uploadsopenclaw-artifacts— build/generation artifactsopenclaw-backups— scheduled backup snapshotsopenclaw-media— media files (images, video, audio)
Tips for AI Agents
- Always run
mc alias setbefore anymccommands to ensure the client is configured. - Use presigned URLs when sharing files with external services or users instead of making buckets public.
- Set appropriate
Content-Typeheaders on upload so files are served correctly when downloaded. - Use
mc mirrorfor syncing directories bidirectionally between local storage and MinIO. - For large files (>100MB),
mcautomatically uses multipart upload. - Check MinIO health at
http://{{MINIO_HOST}}:{{MINIO_PORT}}/minio/health/live. - Store
$MINIO_ACCESS_KEYand$MINIO_SECRET_KEYin the.envfile, never hard-code them.
Signals
- GitHub stars
- 58
- Forks
- 6
- Last commit
- Aug 2026
Advanced
- Item type
- skill
- Key
minio-storage- Source
- github.com/bidewio/better-openclaw
github.com/bidewio/better-openclaw