Sync Your Aino Vault
Aino sync keeps a personal Markdown vault available on desktop, iPhone and Android. Your files are stored with the provider you choose. Sync is intended for personal devices; use a separate backup and avoid simultaneous edits to the same file.
We recommend Cloudflare R2 (S3) by default for English, Traditional Chinese and other non-Simplified-Chinese interfaces. Alibaba Cloud OSS (S3) is the default recommendation for Simplified Chinese. The app uses the same order and default for new S3 connections. Changing language never switches an existing connection. Test from your usual networks first.
Open Settings → Sync & Backup, enable Sync, and choose S3. Git backup is configured separately.
Choose a sync provider
Devices sharing a vault need matching server, bucket or WebDAV account, and remote directory settings. Credentials are specific to each provider. Presets do not create accounts or buckets.
Cloudflare R2 (S3)
- Enable R2 in the Cloudflare dashboard and create a private bucket.
- Create an R2 API token with Object Read & Write, scoped to that bucket.
- Save the Access Key ID and Secret Access Key shown for S3 clients.
- Copy the S3 API endpoint from the dashboard.
- In Aino, select Cloudflare R2 (S3).

Replace account-id in the preset with your account ID, or paste the complete endpoint from the dashboard. EU jurisdiction buckets use their jurisdiction-specific endpoint. Do not enter the Cloudflare API bearer token in the S3 credential fields. Public bucket access and a public development URL are not needed.
See R2 S3 setup, S3 API region and jurisdiction endpoints.
Alibaba Cloud OSS (S3)
- Enable Object Storage Service in the Alibaba Cloud console. Create a dedicated bucket using Standard storage and Private access.
- Note its region and public endpoint. Do not use an
-internalendpoint from a phone or home computer. - Create a dedicated RAM user and an AccessKey pair.
- Attach a bucket-scoped policy: allow
oss:ListObjectsonacs:oss:*:*:YOUR_BUCKET; allowoss:GetObject,oss:PutObjectandoss:DeleteObjectonacs:oss:*:*:YOUR_BUCKET/*. ReplaceYOUR_BUCKETwith your bucket name. Avoid using your account's root credentials. - In Aino, select Alibaba Cloud OSS (S3) and enter the values below.

The screenshot shows the Chinese interface. The preset uses Hangzhou as an example and does not create a bucket. Keep the bucket private. Do not include the bucket name or an object path in the endpoint. If your account or region needs additional access configuration, follow the console error and official documentation.
See OSS S3 compatibility and OSS credentials and endpoints.
Tencent Cloud COS (S3)
If you already use Tencent Cloud, select Tencent Cloud COS (S3) to keep sync data in your own private bucket.
- Create a private standard-storage bucket in the COS console. Record its region and complete bucket name, including the APPID suffix, such as
aino-sync-1250000000. - Prepare a dedicated CAM sub-user with programmatic credentials. Scope object listing, reading, writing and deletion to the target bucket; public access and account-wide administration are unnecessary.
- In Settings → Sync & Backup → S3, select Tencent Cloud COS (S3).

Guangzhou is an example; the preset does not create a bucket. Open More → Check connection, then use a few test files to check create, edit, rename and delete across devices. Bucket versioning can affect overwrite protection; establish the configuration and test results before connecting a production vault. On Desktop with AI configured, use Set up sync with AI beside the provider selector. Enter secrets only in settings, never in chat.
See COS S3 setup and COS upload and overwrite protection.
Amazon S3 (Custom S3)
Use Aino's existing Custom S3 connection for AWS S3; there is no separate AWS preset.
- Create a dedicated general purpose bucket in the AWS console and note its region. Keep Block Public Access enabled, ACLs disabled and default SSE-S3 encryption.
- Create a dedicated IAM user and access key, restricted to this bucket. Avoid root account credentials.
- In Settings → Sync & Backup → S3 → Custom S3, enter the values below. Tokyo is an example; both endpoint and region must match your bucket.
Allow s3:ListBucket and s3:GetBucketLocation on arn:aws:s3:::YOUR_BUCKET, and s3:GetObject, s3:PutObject and s3:DeleteObject on arn:aws:s3:::YOUR_BUCKET/*. Replace YOUR_BUCKET with the actual name. Sync does not need account-wide bucket listing or ACL administration. SSE-KMS, Object Lock and custom bucket policies may require additional permissions or impose restrictions.
Open More → Check connection, then try a small vault. AWS has passed real cloud sync-engine regression tests and a macOS app connection check; three-device large-vault validation for AWS is still pending. Storage, requests and outbound transfer are billed separately. Test from your usual networks.
See AWS bucket-scoped IAM policies and S3 regions and endpoints.
Nextcloud (WebDAV)
Select WebDAV → Nextcloud for an existing or self-hosted instance. You or your hosting provider manage the server, domain, HTTPS certificate, upgrades and backups; Aino does not deploy a server for you.
- Confirm that browser sign-in and file uploads work. For self-hosting, start with Nextcloud installation options.
- Copy the WebDAV URL from Files → Files settings. A typical URL is
https://cloud.example.com/remote.php/dav/files/USERNAME/; preserve any deployment subdirectory and use the complete URL shown by your instance. - Generate an app password in your personal security settings. Enter the account ID used in the WebDAV URL as the username, and the app password as the password.
- Use the complete WebDAV URL as the endpoint and
/Ainoas the remote root. Check connection, then test create, overwrite, rename and delete with a few notes and attachments.
A public sharing URL or server homepage is not a WebDAV endpoint. Use an app password with two-factor authentication. Reverse-proxy upload limits, timeouts, storage quota and certificate problems need server-side configuration; inspect failed items before retrying.
First sync and additional devices
- Back up important files and try a small test vault first.
- Fill in the provider, endpoint, bucket, region, credentials and prefix.
- Open More → Check connection, then select Sync.
- Let the first device finish uploading before connecting another device.
- On the second device, open an empty local folder and enter the same provider, endpoint, bucket, region and prefix, with credentials authorized for that bucket.
- Run sync and verify that notes, images and other attachments open correctly.
Keep phones awake with Aino in the foreground during a large first sync. Expand sync details to inspect the current batch and failures. Different prefixes, such as /Aino and /Aino-test, create separate sync spaces.
Other supported choices
- MinIO / Custom S3: use the provider's endpoint, region and addressing requirements.
- Koofr / Nextcloud / Custom WebDAV: use an application-specific password. For Koofr, the endpoint is
https://app.koofr.net/dav/Koofr/, username is your account email and remote root can be/Aino. See Koofr's WebDAV help.
Move from another provider
Confirm one device has a complete local vault and back it up. Upload it to a new bucket or prefix first. Connect the other devices using empty local folders, and verify their contents before retiring the old service. Do not run two providers against the same local folder or delete the old bucket before verification. Each provider needs its own credentials.
Troubleshooting
- Connection failed: check the HTTPS endpoint and bucket. OSS needs the matching region and path-style off; R2 uses
autoand path-style on. COS needs its full APPID-suffixed bucket name, matching region and endpoint, and path-style off. - 401 / 403: check credentials, expiration and bucket permissions. Update every device after rotating keys.
- 400: check endpoint, region and addressing style. A bucket URL or public sharing URL is not an S3 endpoint.
- 429 / 503: inspect the retry status and provider quota; repeatedly pressing Sync can add requests.
- Missing changes: verify that the bucket and prefix match exactly. Check ignored paths and failed items.
- Long first scan: large vaults take time. Track completed actions and failures rather than assuming a completed batch means the whole vault is done.
Storage, API requests and data transfer may be charged separately. Check current provider pricing before enabling sync. Keep secrets out of public screenshots and never make a bucket public to work around permission errors.