Taskuary is your AI work partner, and it runs on your own machine. It reads the places work arrives — mail, chats, issue trackers, monitoring, your finance system — decides what each thing actually is, and brings you the few that need you. Coding jobs go to a coding agent in your repository. Answers come back as drafts you approve. Nothing is sent without you.
Getting started is three steps: install it, connect your mail, and open your first task. There is no account to create and no server to rent.
What Taskuary is#
Three sentences, because the rest of this site is detail:
- Everything arrives on one rail. A vendor's email, a GitHub pull request, a Teams message, a failed nightly export and this morning's spend report are one list, sorted by what each needs from you.
- Each item gets one verdict. A small AI reads it and decides: nothing to do, a sentence settles it, an agent should work it, let's talk it through, or it's yours. That verdict is visible, and arguing with it teaches the next one.
- Work that can be done is done, and comes back for approval. A coding agent works in your checkout; replies wait on the task. Approving is always a human action.
The one thing to understand
Taskuary never sends anything by itself. Replies, comments, invoices and posts all wait for you on the task. The only deliberate exception is an alert you configured, which fires the moment its rule trips — an alert that waits for approval is not an alert.
Install on Windows#
Download Taskuary for Windows - the installer - and run it. It installs for you alone, with no admin rights and no Python, and adds Taskuary to the Start menu.
The first run creates %USERPROFILE%\.taskuary\ and opens the interface.
Install with Python#
Python 3.10 or newer:
pip install taskuary
taskuary
The browser opens by itself. For the same interface in a native desktop window:
pip install "taskuary[desktop]"
taskuary-desktop
Which platform gets the most use
CI runs the full test matrix on Windows, Linux and macOS. Development happens mostly on Windows, so the terminal, the desktop shell and the agent presets are best exercised there; macOS and Linux may still have rough edges.
Your first run#
The first time it opens, the Assistant asks three questions. Each one is answered by clicking a card, and the cards are the same ones the Connections page shows. The line at the top always says what to do next, and so do the Work list and the Setup chip in the top bar.
What AI do you have? Click the one you already pay for: Claude, ChatGPT, Gemini or Copilot. Taskuary connects it, checks that it answers, and uses it to sort what comes in. If it is not installed, the click installs it. If it needs you to sign in once, the card says Needs sign-in and Set it up opens the AI's own sign-in. More AI lists every other AI on this computer and every API provider, for when you would rather paste a key.
Where does your work come in? Connect your main source: your email, a chat or a task system. Email is the usual one and comes first. Microsoft 365 or Outlook signs in through your company's own Microsoft app: your IT registers it once (the card shows the steps), you paste its two IDs and sign in. Gmail needs an App Password, which Google makes at myaccount.google.com/apppasswords once 2-Step Verification is on. Any other mailbox takes its address, server and password. If your work arrives somewhere else, More chat and task options has Teams, Slack, WhatsApp, Discord, monday.com, Jira, GitHub, Linear, Asana and the rest. The step is done once one of them is connected and passes its test. Before Taskuary writes your job description it asks you to connect your other sources too.
About your work follows, one question a screen, nine in all: your name, organisation, title, email signature, the systems you work in, your other sources, then About your work itself, then how you write and who you are. Each answer is filled in from your mail where it can be. The About your work screen has your job description on top, as your mail describes it, and What you work on below it: six months of your mail grouped into the separate bodies of work you do. Rename one, tick Personal for life outside work (nothing there is learned from), or untick one that isn't yours. One Next keeps both. Next does not wait for the grouping: if it is still running, the list fills in on its own with every one kept and none personal, and you can change it later on About you, under What you work on.
Any other connection you'd like to set up? While what came in is read, WhatsApp, Teams, Slack and Telegram are offered, and More connections shows the rest. This one is optional: press Walk me through my tasks when you are ready.
Open your first task#
Once a source is connected, what came in lands on the rail on the left, the things that need you first. Click one to open it: Came from shows the message, and the Agent chat below it says what Taskuary made of it and what it has set up for you - a drafted reply waits there for your Send. Next brings the one below it; Walk me through my tasks takes you through all of them in order.
Setup on the top bar opens the same three questions again whenever you want to change the AI or your sources. Setup does not overwrite an existing user's model or connection configuration.
After that, connect a coding CLI if you want code written, or add a report for numbers you check by hand. Settings → How mail is sorted lets you use different models for different jobs. Reports and the Hub can wait until you have a workflow that needs them.
Two reports exist from the start: the End of day checkup and the Advisor, which looks for useful follow-ups and patterns in your work. You can review or remove either in Reports. The Morning digest is available as an optional report.
Try the demo#
You do not have to connect anything to see what Taskuary does:
taskuary --demo # or: docker compose --profile demo up
The demo is the real interface over invented work, with scripted replies where the AI would answer and replayed sessions where coding agents would work. Nothing it offers can reach a real system: nothing sends, no connection can be created or given a secret, no shell or CLI starts, and no tool runs. A request that would touch something real is refused, and says so. It keeps its data in a throwaway folder: what you change stays until you stop it, and the next start is a fresh demo.
Choosing the AI setup#
Triage reads many messages cheaply; coding changes a repository rarely and wants a strong model. Taskuary lets those be different brains, and the choice is mostly about what you already pay for.
| Setup | Triage, drafts, summaries | Coding sessions | Fits you if |
|---|---|---|---|
| Two brains (recommended) | a small cloud model on an API key | your coding CLI's full model | you have a low-cost API key |
| One brain, two gears | the CLI's light model | the same CLI's main model | you have one CLI subscription and no key |
| One brain, one gear | the CLI's full model | the same model | simplest, and expensive for routine mail |
| Local brain | Ollama or any OpenAI-compatible local server | a coding CLI, optionally the same local model | no key, and no mail leaving the machine |
With no cloud key, set the AI that sorts your mail to your configured CLI in Settings, and give that CLI a light model on its connector card so routine triage does not burn the coding model.
Updating#
Settings → Updates shows the running build and the latest release, and installs it in place:
the exe is swapped or pip install runs, and the app reopens. Connections and settings are
untouched.
For the Python install you can also do it yourself:
pip install --upgrade taskuary
What leaves your machine#
Taskuary calls the services you configure and nothing else. Hosted AI providers and coding CLIs receive the prompts their work needs. With a model running on your machine, those prompts stay on it too; connected services such as mail still use their own connections either way.
Before a prompt reaches a hosted model, a headless CLI run or the first turn of an agent pane, Taskuary replaces recognisable credentials with labelled placeholders. The original message is never altered. A reply that still contains one of those placeholders is refused rather than sent. These are deterministic shape rules — they catch API keys and passwords that look like API keys and passwords, and they cannot catch every secret.
Where your data lives#
Taskuary keeps its data in a SQLite file in your home directory and serves its interface at
http://127.0.0.1:7787.
The Python and desktop installs keep everything in ~/.taskuary/:
| File | What it is |
|---|---|
taskuary.db |
the SQLite database — messages, tasks, settings, the audit log |
config.toml |
local configuration |
taskuary.log |
the application log |
playbooks/*.md |
one page per kind of job an agent has learned to do |
context/ |
the context file each coding session is handed at startup |
TASKUARY_HOME moves all of it. Docker uses /data inside the container. TASKUARY_HOST,
TASKUARY_PORT and TASKUARY_TOKEN override server settings at runtime without being written
back to the config file.
Before you expose it beyond localhost
Set [server].token in the config or provide TASKUARY_TOKEN, and send that token in the
X-Taskuary-Token header. An unauthenticated Taskuary reachable from the network gives whoever
finds it your mail, your repositories and an agent that can run commands.
Command-line options#
The everyday options for the Python install are:
| Option | What it does |
|---|---|
--demo |
Runs a throwaway demo instance: invented work, scripted replies, and nothing that can reach a real system |
--port PORT |
Overrides the configured server port for this run |
--host HOST |
Overrides the configured server host; use 0.0.0.0 to listen on all interfaces |
--no-browser |
Starts the server without opening a browser tab |
--debug |
Enables verbose console logging for requests, report runs and errors |
Run taskuary --help for the complete command reference.
Docker#
Runs Taskuary without putting Python on the host:
git clone https://github.com/ldbumble/taskuary
cd taskuary
docker compose up
Open http://127.0.0.1:7787. Data lives in the taskuary-data volume. The container gives you
the Assistant, its rail, Reports and Connections; coding CLIs and the optional WhatsApp bridge stay
host programs, because both need a machine of their own.
The compose file binds to localhost. Set TASKUARY_TOKEN before publishing the port anywhere
else.
Next#
- How it works — one message from arrival to approval.
- Connections — what Taskuary may read, and what it may do with it.
- Reports and the Advisor — before you build your first report.
- The live API reference is at
/api/docswhile Taskuary is running.