I think Todoist is a fantastic productivity app, but I also try to use as many open-source & self-hosted tools as possible. This led me to build a tool to migrate all my tasks from Todoist into Taskwarrior.
It meets those criteria and is also usable as a CLI, TUI (see vit, tasknc), and on Android (see Taskwarrior Android, Mirakel). I also own and have access to all my data. On Todoist I couldn’t access my completed tasks, comment on tasks, or set tags, and many other operations. I have a free account so I don’t blame them of course. Keep in mind that none of the clients are nearly as nice looking or user-friendly as Todoist, but Taskwarrior has so far been working out very well for me.
The tool is written in Python 3.x and is a Click-based CLI. It uses the todoist-python library to access the Todoist Sync API. To interface with the local Taskwarrior it uses taskw. It can migrate all tasks at once, or iterate through them in an interactive manner prompting the user to modify, skip, etc for each task.
$ python -m todoist_taskwarrior.cli migrate --interactive Interactively add tasks y - add task n - skip task d - change description P - change project p - change priority t - change tags r - change recur q - quit immediately ? - print help Task 1 of 315: Work on an open source project tid: 142424242 name: Work on an open source project project: Open Source priority: tags: entry: 2019-01-18T12:00:00+00:00 due: 2019-01-21T17:00:00+00:00 recur: 3 days Import this task? (y, n, r, t, p, q, ?):