# OpenTodo

OpenTodo is a to-do and task manager. Plan your day, keep projects in order, set reminders and share lists with the household. Type `Call Sarah next Wed 3pm #work p1` and it sets the date, time, project and priority for you.

Each phone and computer keeps its own copy of your tasks, so OpenTodo keeps working with no connection and syncs when you're back online. It comes with an AI assistant already pointed at ElfHosted's included AI, so there's no key to find.

**What's in it?**

- **Projects** with sections and a board view, nested as deep as you like, plus Inbox, Today and Upcoming.
- **Due dates and repeating tasks**, written the way you'd say them: `every weekday`, `every 3 days after completion`.
- **Reminders** on any task, as push notifications to the devices you choose.
- **Notes** on tasks and projects, with headings, check lists and links.
- **Routines** that run steps for you when something happens.
- **Time tracking** and Day and Week calendars to block out your time.
- **Shared projects** with comments, assignees and an activity log.
- **An app for your phone**: install it from the browser, or use the Android app.

**When does OpenTodo make sense?**

- **You've outgrown a paper list** but don't want another subscription.
- **A household shares chores and shopping.** Shared projects keep everyone on the same list.
- **You're often offline.** Every device works without a connection and catches up later.
- **Prefer a board-first app?** [Vikunja](</app/vikunja/>) does lists and Kanban, and [Donetick](</app/donetick/>) is built around household chores.

[Get a 7-day trial of OpenTodo on ElfHosted Flex! 🪄](<https://store.elfhosted.com/product-category/flex/>)

## How do I access OpenTodo?

OpenTodo is available:

- From your dashboard: [https://your-username.elfhosted.com](<https://your-username.elfhosted.com>)
- Directly: [https://your-username-opentodo.elfhosted.com](<https://your-username-opentodo.elfhosted.com>)

> [!NOTE]
>
> **Signed-in users see their own URLs**
>
> The addresses above show the general pattern. [Sign in](<https://docs-internal.elfhosted.com/app/opentodo/>) and these become your personal, clickable links.

## How do I use it?

### Claim your OpenTodo with its setup code

A new OpenTodo has no owner until you claim it with a setup code. While it has no owner, OpenTodo prints a fresh code in its log each time it starts, on a line like:

```
No owner account exists yet. To create it from another machine, enter this setup code on the setup screen: XXXX-XXXX-XXXX-XXXX
```

The quickest way to get it is to **ask Sam** in ElfBot for your OpenTodo setup code. He reads it out of OpenTodo's log for you. If OpenTodo has restarted since, use the newest code.

1. Open OpenTodo from your dashboard.
2. Enter the setup code on the setup screen.
3. Create your account. It becomes the owner.

OpenTodo has its own sign-in, and sign-up is closed after that, so nobody else can create an account unless you invite them. From then on, sign in to OpenTodo directly at its address.

### Adding the household

As the owner, open **Settings**, then **People**, then **Users and invitations**, and create an invitation. Copy the link (it's shown once) and send it however you like: OpenTodo doesn't send email. Each link creates one account and then stops working.

The people you invite don't need an ElfHosted account. They make their OpenTodo account from the link, then open your OpenTodo's address directly and sign in with it.

### On your phone

Install OpenTodo from your phone's browser to put it on your home screen, or use the Android app and sign in with your OpenTodo account.

> [!NOTE]
>
> **Calendar apps (CalDAV) aren't available**
>
> OpenTodo can sync tasks with calendar apps over CalDAV, but that's switched off on ElfHosted. Use OpenTodo's own apps instead.

### The AI assistant

Press ++shift+i++ or choose **Ask** on **Today** to open the assistant. It reads your tasks to answer questions like "what's due today?", and when you ask for changes it **proposes** them: nothing changes until you review the list and apply it, and one step undoes it.

Each person agrees once, before their first chat, to what's sent to the AI. It runs on ElfHosted's included AI, on an allowance included with your plan. The owner can change the provider, or switch the assistant off, in OpenTodo's settings.

### Connect your own AI assistant (MCP)

OpenTodo has an MCP server, so an assistant you already use can answer "what's on my plate today?" and, if you allow it, change your tasks. Its address is:

[https://your-username-opentodo.elfhosted.com/mcp](<https://your-username-opentodo.elfhosted.com/mcp>)

1. Open **Settings**, then **Integrations**, then **AI assistants (MCP)**, and create a token. Keep **Read only** unless you want the assistant to make changes. The token is shown once.
2. Add the address above to your assistant as a remote MCP server, and send the token as an `Authorization: Bearer` header.

**Which assistants work?** Ones that let you set that header:

- **Claude Code** works, and OpenTodo's [Claude Code plugin](<https://github.com/OpenTodoApp/opentodo-claude>) sets it up for you.
- **Claude Desktop** works through an MCP bridge that can send a header.
- **claude.ai and ChatGPT web connectors don't work.** They need an OAuth sign-in, which OpenTodo doesn't offer on ElfHosted.

**Letting it make changes.** An assistant can only change your tasks when three things are on: the owner's **Allow AI assistants (MCP endpoint)** setting (on for new instances), your own **Changes to my tasks** switch under **AI assistants**, and a token created with **Can make changes**. Turn your own switch off at any time to stop every assistant at once.

OpenTodo refuses anything at the MCP address without a valid token. An assistant connected this way runs on its own plan with its own provider, not on your included AI allowance.

### Backups

We back up OpenTodo daily, with a consistent snapshot of its database, so tasks, accounts and attachments come back together. You can restore a backup from [ElfBot](<https://docs-internal.elfhosted.com/app/elfbot/>).

## OpenTodo also works with

- [x] [Vikunja](</app/vikunja/>)
- [x] [Tududi](</app/tududi/>)
- [x] [Donetick](</app/donetick/>)

## How do I get support for OpenTodo?

1. For general use of OpenTodo, refer to the [official site](<https://github.com/OpenTodoApp/OpenTodo>) or to one of the links in the resources section below.
2. For specific support re your ElfHosted configuration / account, see the [ElfHosted support options](</get-help/>)!

## Sponsor OpenTodo ❤️

You can contribute directly to the development of OpenTodo using the following:

- [GitHub Sponsors](<https://github.com/sponsors/pixari>)
- [Buy Me a Coffee](<https://buymeacoffee.com/pixari>)

## OpenTodo resources

- [OpenTodo (*official site*)](<https://github.com/OpenTodoApp/OpenTodo>)
- [OpenTodo Website](<https://open-todo.app>)
- [OpenTodo Docs](<https://open-todo.app/docs/>)
- [OpenTodo Discord](<https://discord.gg/mmSsuCRduD>)
