# Mindwtr: a local-first GTD app for desktop and mobile

> Mindwtr is an AGPL-3.0, TypeScript-based Getting Things Done app that keeps tasks on your device and makes sync optional. It fits anyone who wants GTD structure without an account, and not anyone who needs a hosted service with no setup.

**dongdongbh/Mindwtr** — Get every task and idea out of your head, then see the next thing to do. Getting Things Done (GTD) app for desktop and mobile.

- Repository: https://github.com/dongdongbh/Mindwtr
- Website: https://mindwtr.app
- Stars: 2,130 · Forks: 134
- Language: TypeScript
- License: AGPL-3.0
- Published: 2026-08-04 · Updated: 2026-08-18 · Language: en
- Canonical page: https://hysenlabs.com/projects/dongdongbh-mindwtr

## The problem Mindwtr targets: capture speed versus list size

Most to-do apps fail in one of two directions. Either capture is slow enough that you do not bother, or capture is fast and the list grows until you stop reading it. Mindwtr is built around the Getting Things Done method, and its README frames the second failure directly: a list of 80 items is a list you avoid. The app's answer is a Focus view that shows only what can be acted on now, with everything else held in Inbox, Waiting For, Someday/Maybe, or a project.

The intended user is someone who has read GTD or is willing to be walked through it. The README describes a guided pass over the Inbox, a two-minute rule for quick items, and a weekly review wizard. If you do not want that structure, the app will feel like ceremony. If you have tried GTD on paper and abandoned it because the lists drifted out of sync with reality, the guided review is the part worth evaluating.

Mindwtr is not a team task manager. There is no mention of shared workspaces, comment threads, or assignment to other people. Waiting For exists precisely because delegation happens outside the app: you track that you are waiting on someone, not what they are doing.

## How the GTD loop is implemented across views

The workflow maps onto distinct views rather than one configurable list. Capture lands items in Inbox, which has a processing wizard. Clarify applies the two-minute rule. Organize uses Projects with sections, areas, and manual task ordering, plus Contexts that can nest, so @work/meetings also matches @work. Reflect is the daily and weekly review workflow. Engage is the Focus view, which combines an agenda of time-based items with next actions on one screen.

Around that core sit the views you would expect from a task manager: Calendar, a Kanban-style Board with drag and drop, Waiting For, Someday/Maybe, and an Archived list that stays searchable. Global search supports operators including status:, context:, assigned:, location:, where:, id:, -id:, and due:<=7d. Fluid recurrence calculates the next date after completion rather than on a fixed schedule, which matters for chores that slip.

The repository is a Bun workspace monorepo with apps/ and packages/ directories, and the root package.json pins a long list of dependency overrides and resolutions. That is a maintenance signal as much as a technical one: keeping desktop, mobile, and web clients on aligned dependency versions is an ongoing cost the project has chosen to absorb centrally.

## Installing Mindwtr on desktop and Android

The README links store listings rather than documenting a build from source, so the shortest path is a package. On Linux there are Flathub, Snap, F-Droid, and IzzyOnDroid listings; Windows has a Microsoft Store listing; iOS and Android have App Store and Play Store listings. The homepage is mindwtr.app, and the getting-started guide lives at docs.mindwtr.app/start/getting-started.

The README links the Flathub listing at flathub.org/apps/tech.dongdongbh.mindwtr and the Snap listing at snapcraft.io/mindwtr, so the installation path is the store client rather than a command copied from the repository. After launch, the first real use is capture: the README states there is a global hotkey popup on desktop, so you can add a task without switching windows. Type the item and it lands in Inbox. Then open Inbox and run the processing wizard, which asks whether the item takes two minutes, has a date, is waiting on someone, or belongs in Someday/Maybe. Finish by opening Focus to see the next actions rather than the full list.

For developers, the README mentions a local REST API, a CLI, and the mindwtr-mcp server, which it links to npmjs.com/package/mindwtr-mcp. The README does not document the CLI's command names or the REST API's routes or port, so check docs.mindwtr.app before scripting against either.

## Sync is optional, and WebDAV is stricter than you expect

Data stays on the device by default, and the README lists iCloud on Apple devices, Dropbox, a shared folder, your own server, or WebDAV as the places you can choose to sync to. That ordering matters: the app does not ship a hosted backend you are nudged toward. You bring storage or you stay local.

The WebDAV requirement is the most concrete constraint in the README. Servers must return strong ETags and enforce conditional writes. During connection setup, Mindwtr verifies create-only writes, exact replacements, stale-write rejection, and conditional cleanup. Providers that cannot prevent one device from overwriting another device's generation are refused.

That is a deliberate trade-off, and it will exclude real servers. Many self-hosted WebDAV endpoints are backed by storage layers that generate weak ETags or ignore If-Match headers. The refusal is the right behaviour for a sync system that has no server-side merge authority, because silently accepting such a provider would produce data loss rather than a sync error. But it means the setup step is a genuine compatibility test, not a formality, and the README does not list which providers pass. If your provider fails, the options are a different provider or no sync.

## Where Mindwtr is the wrong tool

If nobody in your group will run a weekly review, the GTD scaffolding becomes overhead. The app is opinionated about the loop, and the README's philosophy section is explicit that advanced options stay hidden and fewer fields are preferred. That is a stance against configurability, and it will frustrate anyone who wants custom fields, arbitrary statuses, or a bespoke workflow.

Collaboration is the harder boundary. Nothing in the README describes shared projects, permissions, or multi-user assignment. Waiting For tracks that you delegated something; it does not give the delegate a task. Teams that need that should not try to bend this app into it.

The optional AI helper is off by default and requires you to connect your own OpenAI, Gemini, or Claude account, or run a local OpenAI-compatible model. If your environment forbids sending task text to a third party, leave it off; the README's framing is that it is opt-in, so the default posture is local-only.

Finally, the project is young. The release list shows v1.2.5-rc.1 and v1.2.5-rc.2 in late August 2026 and v1.2.1 before them. A 1.x line with release candidates in flight is not a stability guarantee, and the README does not document a rollback path for a bad sync or a migration between schema versions.

## How Mindwtr differs from hosted task apps

The obvious comparison is Todoist, and the search data shows people asking whether an open-source equivalent exists. The difference is architectural, not cosmetic. Todoist is a hosted service: your tasks live on their servers, the clients are views onto that server, and sync is the product. Mindwtr inverts this. The device holds the data, and sync is a transport you configure against storage you already control.

That inversion changes what you are responsible for. With a hosted app, conflict resolution is someone else's problem. With Mindwtr, the README puts the burden on the sync provider's semantics, which is why the conditional-write check exists. You get privacy and no subscription, and you accept that a misconfigured WebDAV server is your failure mode rather than a support ticket.

The second difference is method. Hosted apps are generally method-agnostic: you build your own structure. Mindwtr implements GTD as a fixed path through Inbox, Clarify, Organize, Engage, and Reflect, with a review wizard that prompts you. If you want a blank canvas, a general-purpose task app is the better choice. If you want the method enforced by the interface, that is the reason to pick this one.

## Licence and the cost of staying current

The repository is licensed AGPL-3.0-only, stated in both the LICENSE file and the root package.json. For individual users this is unremarkable. For anyone considering embedding Mindwtr in a product or running a modified version as a network service, the AGPL's source-availability condition applies to users who interact with it over a network. That is a real consideration for a sync server deployment, and it is not a question this article can answer for your situation; take advice if you plan to modify and host it.

The upgrade cost is tied to the monorepo structure. Desktop, mobile, and web clients sit under apps/, shared code under packages/, and the root package.json carries pinned overrides for dependencies including react, hono, vite, and expo-linking. Upstream security fixes are absorbed centrally rather than per client, which is good, but it also means a version bump can touch several clients at once. The README does not describe a release cadence or a support window for older versions, and the presence of release candidates suggests changes land quickly enough that pinning a known-good release is prudent.

The last push to the default branch was on 2026-08-28, and the repository is not archived.

## Conclusion

Adopt Mindwtr if you already think in GTD terms and want your task data on your own disk, with sync as an optional layer you choose. Skip it if you need a hosted service that works with no setup, or if your sync provider cannot enforce conditional writes. Before committing, install it from one of the listed stores, run a capture through the Inbox and Clarify wizard, and point it at your WebDAV server to confirm it accepts the connection; the README states that providers failing the strong-ETag and conditional-write checks are refused outright.

## FAQ

### What are some good open-source productivity apps?

Mindwtr is one: it is free, open source under AGPL-3.0, and implements the Getting Things Done method with capture, clarify, organize, engage, and reflect steps. It runs on Windows, macOS, Linux, iPhone, and Android, plus a web app that the README says works offline.

### Is there an open source version of Todoist?

Mindwtr covers similar ground but inverts the architecture: your data lives on your device and sync is optional, rather than everything living on a vendor's servers. It also commits to the GTD method rather than being method-agnostic, so the structure is fixed rather than something you build yourself.

### How do I sync Mindwtr between devices?

The README lists iCloud on Apple devices, Dropbox, a shared folder, your own server, or WebDAV. WebDAV servers must return strong ETags and enforce conditional writes, and Mindwtr verifies create-only writes, exact replacements, stale-write rejection, and conditional cleanup during setup.

### Does Mindwtr require an account or subscription?

No. The README states there is no account and no subscription, and that your data stays on your device with sync as an optional choice.

### Can AI assistants manage my Mindwtr tasks?

The README mentions a local REST API, a CLI, and the mindwtr-mcp server on npm so AI assistants can manage tasks. There is also an optional in-app AI helper that is off by default and uses your own OpenAI, Gemini, or Claude account, or a local OpenAI-compatible model.

## Sources

- [Official documentation](https://mindwtr.app)
- [Official README](https://github.com/dongdongbh/Mindwtr#readme)
- [Project repository](https://github.com/dongdongbh/Mindwtr)
- [Release notes](https://github.com/dongdongbh/Mindwtr/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/dongdongbh-mindwtr
