storage.jurisdiction in ohmyhost.yaml must match the project’s chosen US or EU region. Run ohmyhost init --dry-run --json after adding the capability; the inspection reports a missing runtime client instead of treating configuration alone as a working upload.
Use the private runtime client
ImportcreatePrivateStorageClient from @ohmyhost/customer-runtime/storage and configure it from the hosted environment:
FILES bucket or customer-managed R2 credential to copy into the app.
Use upload, or reserveUpload followed by its signed PUT and completeUpload. A pending completion still needs observation. createSignedRead provides a short-lived read capability; deleteObject releases stored quota. Keep signed URLs and keys out of source, logs and project notes.