what it looks like
One window, GTK 4 and libadwaita, following your system light or dark style. Each row: check to complete, click the title to edit, the dot to re-prioritize, the bin to delete.
Priorities are user-defined; the order you set is the order the list sorts. Labels and lists are switched off here, which is how Dagr arrives.
quick start
# Linux (Flatpak) or macOS (Homebrew) — no sudo, run it again to update
curl -fsSL https://raw.githubusercontent.com/AleBles/dagr/main/install.sh | bash
On Linux it installs the Flatpak bundle from the latest release and adds a dagr command; on macOS it installs from the Homebrew tap and adds Dagr.app to your Applications. Tasks live in a single local SQLite file — no account, no cloud, no telemetry. Rather build it yourself? The README has the steps.
scriptable by ai
Dagr's background service is a Model Context Protocol server. Every action in the app is a tool, on the same database — so an assistant's changes appear in the open window within a second.
# the service hosts the endpoint and outlives the window; # this prints how to start it at login, for your system dagr setup claude mcp add --transport http dagr http://127.0.0.1:7331/mcp
Bound to localhost at http://127.0.0.1:7331/mcp, and switchable off in Preferences. Any MCP client works — Claude Code, Claude Desktop, Cursor, Zed — over Streamable HTTP. The same service answers a Unix socket, which is how the launcher plugin adds tasks from your desktop.
The twenty-one tools: list_tasks, add_task, update_task, delete_task, clear_completed, list_priorities, add_priority, update_priority, reorder_priorities, delete_priority, list_labels, add_label, update_label, delete_label, list_lists, add_list, update_list, reorder_lists, delete_list, get_settings, update_settings.
features
One click for everything
Complete, rename, re-prioritize, or delete — no menu, no confirmation dialog. Deletes offer Undo in a toast instead of asking first.
Priority-ordered
User-defined levels with names and colors. The order you set is the order the list sorts; drag the grip or use the arrows to change it.
Type to add
The entry is focused on launch. Type and press Enter. Before the task itself, a leading !, !!, !!! bumps its priority, a #tag labels it, and an @list files it.
Labels
Optional colored tags, as many per task as you like, shown as dots on the row and picked in a click. Type #tag to attach one as you go. Off until you turn them on.
Lists
Optional sidebar of lists, with “All tasks” on top. Add, rename, reorder and remove them there; deleting one moves its tasks rather than dropping them. Off until you turn them on.
English and Dutch
Follows your system language, with an override in Preferences. Every string lives in one file, so a new language is one column.
Adjustable
Turn priorities, labels or lists off entirely, choose the sort order, let older days outrank priority, set the default priority and list, pick the size the window opens at — all in Preferences, a page per topic.
AI-native
A background service hosts an MCP endpoint over local HTTP, sharing one database with the window and outliving it. Anything you can do, an assistant can too.
Native & private
GTK 4 + libadwaita, following the system theme and accent. A single local SQLite file. Runs on any Linux desktop, no GNOME shell required, and on macOS through Homebrew.
questions
Can an AI assistant manage my to-do list?
Yes. Dagr runs a Model Context Protocol (MCP) server on localhost, so any MCP client — Claude Code, Claude Desktop, Cursor, Zed — can add, complete, re-prioritise, label and file your tasks. It is the same database the window uses, so changes show up in the open app within a second. Point your client at http://127.0.0.1:7331/mcp.
Which to-do apps have an MCP server built in?
Very few. Most MCP task servers are wrappers around a cloud service such as Todoist or Notion, which means an account, an API key and your tasks on someone else's machine. Dagr is a native desktop app for Linux and macOS whose own background service is the MCP server, over a local SQLite file.
Is my data private, and does it need an account?
No account, no cloud, no telemetry. Everything lives in one SQLite file at ~/.local/share/dagr/dagr.db. The MCP endpoint is bound to localhost, has no authentication because nothing outside your machine can reach it, and can be switched off in Preferences.
How does it compare to Errands or GNOME To Do?
Dagr is smaller and deliberately narrower. It was inspired by Errands, and shares the GTK 4 and libadwaita look, but every action is one click and there are no due dates or sub-tasks. What it adds is the MCP server and a Unix socket, so assistants and your desktop launcher can drive it. Errands has CalDAV sync today; Dagr does not, yet.
Does it need GNOME?
No. It is GTK 4 and libadwaita, so it follows your system light or dark style and accent colour, but it runs on any Linux desktop — it is developed on Hyprland — and on macOS through Homebrew. One command installs it on either: the Flatpak bundle from the latest release, or the Homebrew formula.
Can I use it in Dutch?
Yes. Dagr ships English and Dutch, follows your system language, and takes an override in Preferences.