Logto Local Storage
DevOps & Securitylogto-local-storageLogto Local Storage is an Agent Skill for devops & security published in the logto-io/logto repository on GitHub: a SKILL.md instruction file an AI agent can load to do this task.
Configure local object storage for Logto user-asset uploads (MinIO as S3). Use when you see storage.not_configured, avatar upload, POST user-assets/avatar, Console image upload, collect user profile avatar field, or need MinIO/S3 for dev.
How to use this skill
Bring this guide into your coding agent with a prompt tailored to the tool you use.
- Open your project in Codex.
- Copy and paste the prompt below.
- Review files and risks before approving any action.
Inspect the Agent Skill at https://github.com/logto-io/logto/blob/HEAD/.agents/skills/logto-local-storage/SKILL.md and all supporting files. Report provenance, permissions, scripts, dependencies, and security risks. Propose an exact installation into .agents/skills/logto-local-storage, but wait for my approval before writing files or running scripts.
Copying this prompt does not install or run the skill. Review third-party files before use.
Logto local storage (user assets)
When to use
- Avatar upload during sign-up (collect user profile) or Account Center
- Console / Management API
POST …/user-assets GET /api/user-assets/service-statusreturnsnot_configured- Console blocks adding the avatar built-in collect-profile field
Not needed for ordinary API or UI work that does not upload files.
Prerequisites
- Development environment running (
pnpm start:dev, Postgres,DB_URL) - Docker available for MinIO
Quick path
- Read MinIO setup commands and run them.
- Restart
pnpm start:dev(Core loadssystems.storageProvideronly at startup). - Verify:
curl -s -H 'development-user-id: dev' http://localhost:3001/api/user-assets/service-status→"status":"ready".
How it works
- Config lives in PostgreSQL
systemstable,key = 'storageProvider'(JSON). - Runtime:
SystemContext→buildUploadFile()→ Azure / GCS / S3 (packages/core/src/utils/storage/). - There is no in-process mock; CI usually asserts
storage.not_configuredonly.
Providers
provider | Use case |
|---|---|
S3Storage | AWS S3 or S3-compatible (MinIO for local dev) |
AzureStorage | Azure Blob |
GoogleStorage | GCS |
If screenshots need a specific sign-in experience, configure SIE via logto-dev-environment separately.
Troubleshooting
| Symptom | Check |
|---|---|
Still not_configured after SQL | Restarted core? Correct DB_URL / tenant DB? |
| Upload 500 | MinIO running? Bucket exists? forcePathStyle: true for MinIO? |
| Image URL 404 in browser | publicUrl must be reachable from the browser host (not only from Core) |
Full commands and JSON template: references/minio-setup.md.