Data and Sync
Mindwtr stores data locally and supports multiple synchronization options between devices.
Mindwtr does not run a hosted cloud service. Sync is local‑first and user‑configured: you choose how the data.json file (and attachments/) moves between devices. Nothing moves until you set up one of the options below. Once configured, it keeps working on its own.
Current desktop and mobile builds split settings into two pages:
- Settings → Sync for backend setup, sync options, history, and recovery snapshots
- Settings → Data for backup/restore/import, attachment cleanup, and diagnostics
This page is the user-facing setup and recovery guide for the docs site. For maintainer-level merge rules and diagnostics fields, see Sync Algorithm.
For desktop vault import and note deep links, see Obsidian Integration.
Data Storage
Desktop
Data is stored in a local SQLite database, with a JSON sync/backup file:
| Platform | Database (SQLite) | JSON (sync/backup) |
|---|---|---|
| Linux | ~/.local/share/mindwtr/mindwtr.db | ~/.local/share/mindwtr/data.json |
| Windows | %APPDATA%/mindwtr/mindwtr.db | %APPDATA%/mindwtr/data.json |
| macOS | ~/Library/Application Support/mindwtr/mindwtr.db | ~/Library/Application Support/mindwtr/data.json |
Config is stored separately:
| Platform | Location |
|---|---|
| Linux | ~/.config/mindwtr/config.toml |
| Windows | %APPDATA%/mindwtr/config.toml |
| macOS | ~/Library/Application Support/mindwtr/config.toml |
Legacy Tauri builds used
~/.config/tech.dongdongbh.mindwtr/and~/.local/share/tech.dongdongbh.mindwtr/on Linux. These are auto-migrated when detected.
Mobile
Data is stored in a local SQLite database, with a JSON sync/backup file:
- SQLite DB:
mindwtr.db - JSON backup:
data.json
Sync Backends
Mindwtr directly supports five sync backends:
- Native iCloud / CloudKit Sync: Apple-only native sync for core data and attachment assets where available
- File Sync: a user-selected folder/file (
data.json+attachments/) - Dropbox OAuth Sync: direct Dropbox App Folder sync in supported builds
- WebDAV: any compatible WebDAV endpoint
- Mindwtr Cloud (Self-Hosted): your own
apps/cloudendpoint
At a glance
| Backend | Platforms | Setup effort | Relative speed | Conflict handling | Best for |
|---|---|---|---|---|---|
| File Sync (folder) | Native desktop/mobile | Low, pick a folder | Fastest (plain filesystem) | File-level; the folder provider sees one file | Syncthing, existing cloud-drive clients, LAN |
| WebDAV | Native apps; browser/PWA with CORS | Medium, server URL + credentials | Slower, HTTP round-trip per request | App-controlled, per-item merge | Nextcloud/ownCloud/Fastmail, remote BYOS |
| Mindwtr Cloud (self-hosted) | Native apps + browser/PWA | Higher, deploy apps/cloud + token | Fast, single endpoint, server merges on write | App + server-side merge | Several devices editing concurrently |
| Dropbox | Supported native builds | Low, OAuth sign-in | Moderate, provider API | App-controlled, per-item merge | Easiest cloud option without your own server |
| iCloud / CloudKit | Apple builds | Low, toggle in Settings | Fast, per-record sync | Per-record CloudKit merge | Apple-only device sets |
Speed differences matter most with large attachments, which WebDAV and Dropbox transfer as individual uploads/downloads. See Data lifecycle for what actually moves during a sync.
Data ownership
| Mode | Does a copy leave the device? | You control | Remote copy |
|---|---|---|---|
| Sync off | No | The device and its backups | None |
| File Sync | Only if another tool replicates the selected folder | The folder and any provider or device that syncs it | data.json and attachment files in that folder |
| Dropbox | Yes | The connected Dropbox account | /Apps/Mindwtr/data.json and attachments in the app folder |
| iCloud / CloudKit | Yes | The Apple ID and iCloud account | CloudKit records and attachment assets |
| WebDAV | Yes | The endpoint, account, and credentials | data.json and attachments on that WebDAV server |
| Mindwtr Cloud (self-hosted) | Yes | The deployment, storage, and access token | Sync data and attachments on that server |
Native apps use a local SQLite database as the source of truth. The browser/PWA build instead keeps its local dataset in origin-scoped browser storage, so clearing site data or changing the site origin removes access to that local copy. File Sync is unavailable in the browser. Browser WebDAV works only when the server’s CORS policy allows the PWA origin.
File-based sync uses human-readable JSON and keeps attachments as files, so treat the selected folder, provider account, or server as trusted storage. Mindwtr does not operate a hosted sync service. Direct Dropbox requests are not proxied through the Mindwtr developer, and Dropbox tokens stay on your device.
In Settings → Sync, supported builds show these as one backend selector, then explain the selected setup path:
- Cloud Sync: Dropbox and iCloud on Apple platforms
- Folder / File Sync: File
- Advanced / Custom Server: WebDAV and Self-Hosted
Existing Dropbox setups continue to work; they are simply shown as the top-level Dropbox backend under the Cloud Sync explanation instead of being nested under a self-hosted/cloud-provider picker.
Direct vs indirect provider support
- Directly supported providers/protocols: native iCloud / CloudKit on supported Apple builds, WebDAV servers, the Mindwtr self-hosted endpoint, and Dropbox OAuth (supported builds).
- Indirectly supported providers: iCloud Drive, Google Drive, OneDrive, Syncthing, network shares, and Dropbox via File Sync.
- Important: native iCloud sync is Apple-only. Android, Windows, and Linux should use File Sync, WebDAV, Mindwtr Cloud, or Dropbox instead.
Quick guidance:
- Dropbox: easiest cross-platform cloud option in supported builds; connect with OAuth and Mindwtr uses its Dropbox App Folder.
- Syncthing: device-to-device file sync. Best on the same LAN/subnet. For remote sync, use a Syncthing relay or a mesh VPN (Nebula/Tailscale).
- WebDAV: use a provider that supports WebDAV (e.g., Nextcloud, ownCloud, Fastmail, self-hosted).
- iCloud: use native iCloud sync on supported Apple builds, including attachment assets, or iCloud Drive via File Sync.
- Google Drive/OneDrive: use File Sync (and Android bridge apps when needed).
Sync Recommendations
- Easiest plug-and-play cloud sync: Dropbox OAuth in supported builds.
- Best Apple-only setup: native iCloud / CloudKit on supported Apple builds.
- Best BYOS remote sync: WebDAV or Mindwtr Cloud (Self-Hosted). The app controls the sync cycle and merges per item.
- Android + Windows without a cloud account: File Sync with Syncthing over your own Wi-Fi — follow the Syncthing setup order below, and let both devices finish their first Syncthing exchange before opening Mindwtr on the second one.
- File Sync (Syncthing/Dropbox/etc.): works, but conflicts are file-level because
data.jsonis a single file. - Best practices for File Sync: avoid editing on two devices at the same time, and wait for sync to finish before opening the app on another device. If conflicts appear, keep the newest
data.jsonand delete thedata.json.sync-conflict-*copies.
Desktop Proxy
On desktop, Mindwtr can use an optional HTTP(S) proxy for network requests such as WebDAV, Dropbox, self-hosted Cloud sync, and external calendar subscriptions.
Set it in Settings → Advanced → Network → Proxy URL. Use a full URL such as http://proxy-host:port or https://proxy-host:port. Leave it blank to use the default network behavior, including any supported HTTP_PROXY / HTTPS_PROXY environment variables.
The in-app field is intentionally minimal: it is a single proxy URL, not a full proxy manager. SOCKS, PAC files, and per-backend proxy rules are not configured there. The setting is not synced across devices.
Conflict Recovery
Mindwtr normally resolves item conflicts automatically. If a task you deleted comes back after syncing, the most common cause is a concurrent edit on another device inside the delete-vs-live ambiguity window. When revision numbers tie and operation times are within 30 seconds, Mindwtr preserves the live edit so it does not silently discard work.
What to do:
- Open Settings → Sync and check the latest sync status/history for conflicts.
- If the returned task is still unwanted, delete it again after all devices have finished syncing.
- If both devices still disagree, sync each device manually one at a time, then keep the version you want and delete/restore once more.
- If you need to recover older data, use Settings → Data or Settings → Sync → Recovery snapshots before making more edits.
1. Native iCloud / CloudKit Sync (Apple-only)
Mindwtr includes a native iCloud backend on supported Apple builds.
- Guide: iCloud Sync
- Best for: Apple-only device setups where you want a simpler experience than managing a shared folder
- Not for: Android, Windows, or Linux devices in the same sync setup
This backend is available on iPhone, iPad, and macOS. If you prefer a folder-based setup on macOS, you can still use iCloud Drive + File Sync instead.
2. File Sync
Sync via a shared JSON file with any folder-based sync service:
- Dropbox
- Google Drive
- Syncthing
- OneDrive
- iCloud Drive
- Any network folder
iCloud Drive as File Sync (macOS + iOS)
iCloud Drive also works with Mindwtr through File Sync if you want to sync through a shared folder instead of the native CloudKit backend.
Recommended setup:
- On macOS, create a folder like
iCloud Drive/Mindwtr. - In Mindwtr desktop, set Sync Backend = File and pick that folder.
- Export once to create
data.jsonandattachments/. - Wait for iCloud Drive to finish uploading.
- On iOS, in Mindwtr mobile Settings → Sync → Select Folder, choose the same iCloud Drive folder in Files.
- If a provider is greyed out in the iOS folder picker, select any JSON file inside the target folder. Mindwtr will still use that folder for
data.jsonandattachments/.
- If a provider is greyed out in the iOS folder picker, select any JSON file inside the target folder. Mindwtr will still use that folder for
Important:
- Sync both
data.jsonandattachments/. Attachments are part of sync data. - Do not move only
data.jsonwithoutattachments/, or attachment metadata/files can drift. - If iCloud Optimize Storage offloads files, let Files re-download before running a manual sync.
iOS file bookmarks for Google Drive, OneDrive, and other Files providers
On iOS, Google Drive, OneDrive, and similar providers can be used through File Sync when they expose a file in the Files picker. If folder selection is unavailable, pick an existing JSON file in the target folder; Mindwtr stores a security-scoped bookmark and uses it for later reads and writes.
This file-scoped provider mode syncs data.json. Attachment folders are not available through every Files provider bookmark, so use native iCloud/CloudKit, Dropbox, WebDAV, or self-hosted Cloud when attachments need to sync reliably. If iOS reports that bookmark access expired, re-select the sync file in Settings → Sync.
Syncthing Notes (Recommended Setup)
Syncthing works well with Mindwtr, but the initial setup order matters. Devices must be able to reach each other: best on the same subnet/LAN, or via a relay/mesh VPN (e.g., Nebula or Tailscale) if you want remote syncing.
Recommended flow:
- Create a single Syncthing folder (e.g.,
Mindwtr/) and let it fully sync. - On desktop, choose that folder in Settings → Sync with the File backend selected.
- Export Backup to that folder to create
data.jsonandattachments/. - Wait for Syncthing to finish syncing to your phone.
- On mobile, select the same folder in Settings → Sync.
Why you see attachments (1) / attachments (2) Syncthing creates duplicate folders when both devices create or modify the same folder at the same time. This often happens if both devices open Mindwtr before the initial sync completes.
How to fix duplicates:
- Pick the “real”
attachments/folder (usually the one with more files). - Move files from
attachments (1)/attachments (2)intoattachments/. - Delete the duplicate folders and let Syncthing converge.
Important: Don’t sync ~/.local/share/mindwtr directly. Mobile storage is sandboxed. Use the file sync folder + data.json instead. If you already synced the app data directory, switch to a dedicated sync folder and re-select it in Settings.
Google Drive on Android (File Sync) and Dropbox File-Sync Fallback
Google Drive does not provide WebDAV. If you want to use Google Drive with file sync on Android, you need a bridge app that keeps a local folder in sync (so Mindwtr can read/write data.json directly).
Dropbox users on Android can use native Dropbox sync in supported builds. If you prefer file sync, the same bridge-app approach also works for Dropbox.
Examples:
- Dropsync (Dropbox)
- Autosync (Google Drive)
- FolderSync (generic)
Then point Mindwtr to the local synced folder in Settings → Sync.
OneDrive on Android (Recommended Setup)
Android’s official OneDrive app does not keep a local folder in continuous two‑way sync. To use OneDrive reliably with Mindwtr on Android, install a “bridge” app:
- OneSync (Autosync for OneDrive)
- FolderSync
Then:
- Create a OneDrive folder for Mindwtr (on desktop).
- Use the bridge app to sync that folder to a local folder on Android.
- In Mindwtr, select that local folder in Settings → Sync (Mindwtr will use
data.jsoninside).
3. WebDAV Sync
Sync directly to a WebDAV server:
- Nextcloud
- ownCloud
- Fastmail
- Any WebDAV-compatible server
Mindwtr now creates missing parent folders automatically before the first PUT, so you can point it at a new empty folder without manually pre-creating every level.
WebDAV uses HTTPS for public URLs. Plain HTTP is allowed automatically for recognized local/private targets such as localhost, 127.0.0.1, 10.x.x.x, 172.16.x.x through 172.31.x.x, 192.168.x.x, loopback/private IPv6 addresses, *.local, and *.home.arpa. For custom DNS, VPN hostnames, Tailscale, ZeroTier, and any name that is not recognized as local/private, use HTTPS or enable Allow insecure connections (HTTP) in the sync settings. Data then travels unencrypted, so only use the override on a network you trust.
4. Mindwtr Cloud (Self-Hosted)
For advanced users, Mindwtr includes a simple sync server (apps/cloud) that can be self-hosted.
- Protocol: Simple REST API (GET/PUT)
- Auth: Bearer token (mapped to a specific data file on the server)
- Deployment: Node.js/Bun
- Docker setup: Docker Deployment
- Operations guide: Cloud Deployment
Important client note:
- HTTPS is required for public Mindwtr Cloud URLs. Plain HTTP is allowed automatically for local/private targets such as
localhost,127.0.0.1,10.x.x.x,172.16.x.xthrough172.31.x.x,192.168.x.x, loopback/private IPv6 addresses,*.local, and*.home.arpa. - If you are exposing Cloud outside a trusted LAN, put the server behind HTTPS with a reverse proxy such as
caddy,nginx, ortraefik. - Use HTTPS for custom DNS, VPN hostnames, Tailscale, ZeroTier, and any name that is not recognized as local/private, or enable Allow insecure connections (HTTP) in the sync settings to accept that hostname over plain HTTP. Data then travels unencrypted, so only use it on a network you trust.
5. Dropbox OAuth Sync
Mindwtr also supports direct Dropbox sync in supported desktop/mobile builds.
- Scope: Dropbox App Folder (
/Apps/Mindwtr/) - Synced data:
data.jsonandattachments/* - Auth: OAuth 2.0 + PKCE
- Setup: choose Dropbox in Settings → Sync, connect your account, then run Test connection
- Guide: Dropbox Sync
How Sync Works
Auto-Sync
Mindwtr automatically syncs in the following situations:
- On startup: shortly after the app launches.
- On data changes: shortly after task/project changes, with a short debounce so rapid edits sync together.
- On app focus: when the desktop app regains focus, throttled to every 30 seconds; this still runs without local edits so remote changes can be pulled promptly.
- On app blur/background: when you switch away from the desktop app, but only if there are pending local changes to push.
- Periodic desktop heartbeat: every 15 minutes while Mindwtr is running.
Automatic retries after backend failures start after about one minute and increase to ten minutes after repeated failures. A provider-supplied retry delay can override that schedule. Manual sync remains available.
Settings Sync Options
Mindwtr can sync select preferences across devices. Configure in Settings → Sync → Settings sync options.
Available options include:
- Appearance (theme)
- Language & date format
- GTD preferences (default schedule time and Focus task limit)
- External calendar URLs (ICS subscriptions)
- AI settings (models/providers)
- Saved Filters (Focus filter presets)
API keys and local model paths are never synced. Settings conflict resolution is group-based. If two devices edit different fields in the same settings group at nearly the same time, the newer group update can overwrite the older one.
Merge Strategy
Mindwtr uses revision-aware Last-Write-Wins (LWW) per item:
- Each task, project, section, and area carries an
updatedAttimestamp. - When available, revision metadata (
revandrevBy) is used before falling back to plain timestamps. - Soft-deleted items (tombstones) are preserved so deletions propagate correctly across devices.
Delete-vs-live conflicts use the last operation time, not just the raw updatedAt:
- For deleted items, Mindwtr compares
deletedAtagainst the live item's latest update. - If the delete and live edit are more than 30 seconds apart, the newer operation wins.
- Inside that 30-second ambiguity window, a higher revision number still wins when available. Otherwise, Mindwtr preserves the live item instead of eagerly letting the tombstone win.
- Practical effect: if you delete a task on one device within about 30 seconds of editing it on another device, the edited live task may reappear after sync. Delete it again after the devices have synced if you meant to remove it.
Clock-skewed future timestamps more than 5 minutes ahead of the merge clock are clamped during merge safety checks so a bad device clock does not dominate forever. If both sides are clamped into the future, Mindwtr still preserves their relative ordering instead of treating them as a false tie.
Detailed merge tie-breaks, retry behavior, and conflict examples live in Sync Algorithm. This page keeps the storage and operational overview only.
Conflict Visibility & Clock Skew
After each sync, Mindwtr stores sync stats in settings:
- Conflicts: total conflict count and a small sample of conflicting IDs
- Clock skew: max observed timestamp skew between devices
- Timestamp fixes: when
updatedAt < createdAt, timestamps are corrected during merge
You can see these details in Settings → Sync (desktop and mobile). Large skew values usually indicate device clocks are out of sync. On mobile, sync history entries are collapsed by default; tap to expand.
Attachment Sync & Cleanup
- Attachments are synced after metadata merges.
- Missing attachments remain as placeholders until downloaded.
- Orphaned attachments are cleaned up automatically (and can be triggered manually on desktop in Settings → Data).
- Remote attachment cleanup is local-reference aware, not global-reference counted. If two devices create or retain references to the same remote attachment before they have synced with each other, one device may not know about the other reference yet. Let devices sync before deleting shared attachments, and reattach the file if cleanup removes a remote copy another device still needs.
Desktop Sync Setup
File Sync
- Open Settings → Sync
- Set Sync Backend to File
- Click Change Location and select a folder in your sync service
- Click Save
Mindwtr will automatically sync on startup and when data changes.
WebDAV Sync
- Open Settings → Sync
- Set Sync Backend to WebDAV
- Enter your WebDAV server details:
- URL: Folder URL; Mindwtr will store
data.jsoninside (e.g.,https://nextcloud.example.com/remote.php/dav/files/user/Mindwtr) - Username: Your WebDAV username
- Password: Your WebDAV password
- URL: Folder URL; Mindwtr will store
- Click Save WebDAV
If the target folder path does not exist yet, Mindwtr will try to create the missing parent collections automatically before uploading data.json.
Linux note: If your desktop session does not provide a Secret Service keyring (for example
org.freedesktop.secretsis unavailable), Mindwtr falls back to local secrets storage in~/.config/mindwtr/secrets.toml.
Tip: For Nextcloud, the URL format is:
https://your-server.com/remote.php/dav/files/USERNAME/path/to/folderURLs with explicit ports are supported (e.g.,
https://example.com:5000/mindwtr).
Mobile Sync Setup
Mobile sync requires manually selecting a sync folder due to Android/iOS storage restrictions.
On iOS, some cloud providers may not expose folder selection in Files. In that case, select any JSON file inside the target sync folder; Mindwtr will resolve and use the folder path for sync.
1. Export Your Data First
- Go to Settings → Data
- Tap Export Backup
- Save the file to your sync folder (e.g., Google Drive)
2. Select Sync Folder
- In Settings → Sync
- Tap Select Folder
- Navigate to your sync folder
- Select the folder that contains (or will contain)
data.json
3. Auto-Sync
Mobile now syncs automatically:
- When the app goes to background
- After data changes, with a backend-aware debounce (remote: 2 seconds for the first change and 5 seconds for continued changes; file: 8 and 15 seconds) and pacing based on recent sync duration
- When returning to the app after more than 30 seconds for remote backends or 45 seconds for file sync
You can also tap Sync manually anytime in Settings.
SQLite + JSON Sync Bridge
Mindwtr uses SQLite as the primary local store. data.json is the sync and backup snapshot, not a second equal source of truth.
- Cold start / normal reads: the app reads local SQLite-backed storage.
- Outgoing sync: pending local saves are flushed first, then the current snapshot is exported to
data.json/ remote storage. - Incoming sync: external JSON is validated, normalized, merged with local data, and persisted back into SQLite-backed storage.
- Device-local sync diagnostics: fields such as
lastSyncStats,lastSyncHistory, and pending remote write recovery metadata stay local and are stripped from remote payloads.
Desktop and mobile do not freeze editing during sync. Instead, if local data changes while a sync write is in progress, the app aborts that cycle and queues a fresh one so the newer local snapshot is not overwritten.
See ADR 0009 for the full contract.
Sync Workflow
Two Devices
Initial setup:
- Set up desktop with sync folder
- Export backup, save to sync folder
- On mobile, select that folder
Daily use:
- Make changes on Device A
- Wait for sync service to replicate
- On Device B, trigger sync (Settings → Sync)
Multiple Devices
The same workflow applies. Avoid editing on multiple devices simultaneously to prevent conflicts.
Troubleshooting Checklist
- Confirm
data.jsonexists in your sync folder and is being updated. - Wait for Syncthing to fully sync before opening Mindwtr on the second device.
- Use “Sync” manually in Settings if you want an immediate pull/push.
- Check for duplicate attachment folders (
attachments (1), etc.) and merge them. - Make sure device clocks are correct (large skew causes conflicts).
- Verify folder permissions (Android SAF may block write access to some folders).
Backup and Export
Export Data
Desktop:
- Use Settings → Data → Export Backup
- Sync backends also keep
data.jsonupdated automatically when sync is enabled
Mobile:
- Go to Settings → Data
- Tap Export Backup
- Save to your desired location
Restore from Backup
Mindwtr can restore local data directly from a backup JSON file on both desktop and mobile.
Flow:
- Open Settings → Data
- Choose Restore Backup
- Pick a Mindwtr backup JSON file
- Review the backup summary and confirm
Before restore, Mindwtr validates the file and creates a recovery snapshot when the platform supports it. Restore is a full local replacement, not a merge.
- Desktop: a recovery snapshot is created in the app data snapshot folder before restore
- Mobile: a local recovery snapshot is created in app storage before restore
- If the file is invalid: restore is blocked and your current data stays untouched
See Backup and Restore for the detailed flow.
Imports and Migrations
Use these guides when bringing task data from another app into Mindwtr. Imports add data to Mindwtr; they do not configure sync.
TickTick CSV / ZIP Import
Mindwtr can import TickTick backups from Settings → Data → Import from TickTick.
- Supports TickTick CSV backups and ZIP backups containing the CSV export
- Creates Mindwtr areas from TickTick folders
- Creates Mindwtr projects from TickTick lists
- Preserves supported task status, dates, priorities, tags, notes, and recurrence
- Converts supported checklist/subtask data into Mindwtr checklist items
See TickTick Import for details and supported mappings.
Todoist CSV / ZIP Import
Mindwtr can import Todoist exports from Settings → Data → Import from Todoist.
- Supports a single Todoist CSV export or a ZIP backup containing multiple project CSVs
- Creates Mindwtr projects from Todoist projects
- Preserves Todoist sections as Mindwtr sections
- Converts Todoist subtasks into checklist items
- Places every imported active task in its generated project as a Next Action
Recurring Todoist schedules are not recreated automatically. Mindwtr imports the task once and keeps the original recurrence text in the description.
See Todoist Import for details and supported mappings.
DGT GTD JSON / ZIP Import
Mindwtr can import DGT GTD exports from Settings → Data → Import from DGT GTD.
- Supports a DGT GTD JSON export or a ZIP archive containing the exported JSON file
- Creates Mindwtr areas from DGT folders
- Creates Mindwtr projects from DGT projects
- Preserves DGT checklists as Mindwtr checklist tasks
- Preserves DGT contexts and tags on imported tasks
- Keeps supported repeat rules and warns when a DGT repeat pattern must be imported once with the original text preserved
Standalone DGT tasks stay in Mindwtr without forcing them into new projects, so you can organize them afterward if needed.
See DGT GTD Import for details and supported mappings.
OmniFocus CSV / JSON / ZIP Import
Mindwtr can import OmniFocus exports from Settings → Data → Import from OmniFocus.
- Supports OmniFocus CSV exports, including UTF-8 and UTF-16 CSV files
- Supports Omni Automation / Shortcuts JSON exports and ZIP archives
- Creates Mindwtr areas from OmniFocus folders when metadata is available
- Creates Mindwtr projects from OmniFocus projects or referenced project names
- Keeps standalone OmniFocus actions outside projects so you can organize them later
- Preserves supported OmniFocus notes, tags, defer dates, due dates, completion state, and recurrence from the JSON path
- Converts simple nested tasks into checklist items when possible and flattens deeper hierarchy with the original path preserved
If recurrence or hierarchy fidelity matters, prefer the Omni Automation JSON / ZIP path over CSV. Planned dates and duration text are preserved in the imported description when Mindwtr does not have a direct field for them.
See OmniFocus Import for details and supported mappings.
Apple Reminders Import (iOS)
On iPhone and iPad, Mindwtr can import incomplete Apple Reminders from Settings → Data → Import from Apple Reminders.
- Choose the Apple Reminders list to use as the capture source
- Adds new incomplete reminders to Mindwtr Inbox
- Preserves reminder titles and notes as task titles and descriptions
- Skips completed, titleless, and already imported reminders
- Can optionally delete imported reminders from Apple Reminders after Mindwtr adds them to Inbox
Apple Reminders import is a one-way import path, not a sync backend.
Backup Strategy
- Regular exports to sync folder
- Keep local config folder backed up
- The sync file serves as a backup
- Recovery snapshots are saved automatically before restore/import operations
Troubleshooting
Sync Not Working
Check sync folder path
- Ensure the path exists and is accessible
- Verify permissions
Check sync service
- Is Dropbox/Google Drive running?
- Is the file synced across devices?
Temporary file errors
- If a sync service is mid‑write (e.g., Syncthing), the JSON can be temporarily invalid.
- Wait a moment and sync again.
Manual sync
- Click Sync Now (desktop) or Sync (mobile)
- Check for any error messages
Data Conflicts
If you see unexpected data:
- Export a backup of current data
- Check the sync folder for the latest file
- Manually review and merge if needed
Mobile Sync File Not Found
- Ensure the file exists in your cloud folder
- Re-select the file in Settings → Sync
- Check file permissions
Reset Sync
To start fresh:
- Delete the sync folder contents
- Export from one device
- Import/sync on other devices
Data Format
The data.json file structure:
{
"tasks": [
{
"id": "uuid",
"title": "Task title",
"status": "next",
"contexts": ["@home"],
"tags": ["#focused"],
"dueDate": "2025-01-15T09:00:00Z",
"recurrence": {
"rule": "weekly",
"strategy": "strict",
"byDay": ["MO", "WE"]
},
"createdAt": "2025-01-01T10:00:00Z",
"updatedAt": "2025-01-10T15:30:00Z",
"deletedAt": null
}
],
"projects": [
{
"id": "uuid",
"title": "Project name",
"status": "active",
"color": "#3B82F6",
"areaId": "area-uuid",
"tagIds": ["#client", "#feature"],
"createdAt": "2025-01-01T10:00:00Z",
"updatedAt": "2025-01-10T15:30:00Z"
}
],
"sections": [
{
"id": "uuid",
"projectId": "project-uuid",
"title": "Section title",
"order": 1,
"createdAt": "2025-01-01T10:00:00Z",
"updatedAt": "2025-01-10T15:30:00Z"
}
],
"areas": [
{
"id": "uuid",
"name": "Research",
"color": "#3B82F6",
"icon": "🔬",
"order": 0,
"createdAt": "2025-01-01T10:00:00Z",
"updatedAt": "2025-01-10T15:30:00Z"
}
],
"people": [
{
"id": "uuid",
"name": "Alex",
"note": "Design lead",
"referenceLink": "https://example.com/alex",
"createdAt": "2025-01-01T10:00:00Z",
"updatedAt": "2025-01-10T15:30:00Z"
}
],
"settings": {
"theme": "dark",
"language": "en"
}
}Privacy
- All data is stored locally on your device
- Sync happens through your own cloud service
- Task data, project data, notes, attachments, and sync content are not sent to Mindwtr servers
- Builds configured with heartbeat analytics may send a small app-health event; it does not include task, project, note, file, AI prompt, or account content. See the Privacy Policy.
- You control your data completely