Metadata-Version: 2.4
Name: taskuary
Version: 0.3.3.1
Summary: Automate your job - the local-first operating system for your work: AI triage in, coding agents out.
License: MIT
Project-URL: Homepage, https://github.com/ldbumble/taskuary
Project-URL: Repository, https://github.com/ldbumble/taskuary
Project-URL: Issues, https://github.com/ldbumble/taskuary/issues
Project-URL: Changelog, https://github.com/ldbumble/taskuary/releases
Keywords: ai,agents,automation,claude,coding-agent,email,local-first,task-management
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Office/Business :: Scheduling
Classifier: Topic :: Software Development :: Build Tools
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: fastapi>=0.100
Requires-Dist: uvicorn>=0.23
Requires-Dist: pydantic>=2
Requires-Dist: requests>=2.28
Requires-Dist: loguru>=0.7
Requires-Dist: segno>=1.6
Requires-Dist: anthropic>=0.69
Requires-Dist: tomli>=2; python_version < "3.11"
Requires-Dist: websockets>=12
Requires-Dist: pywinpty>=2; sys_platform == "win32"
Requires-Dist: pyte>=0.8
Provides-Extra: mssql
Requires-Dist: pyodbc>=4; extra == "mssql"
Provides-Extra: db
Requires-Dist: sqlalchemy>=2; extra == "db"
Provides-Extra: aws
Requires-Dist: boto3>=1.28; extra == "aws"
Provides-Extra: voice
Requires-Dist: faster-whisper>=1.0; extra == "voice"
Provides-Extra: desktop
Requires-Dist: pywebview>=4; extra == "desktop"
Provides-Extra: build
Requires-Dist: pyinstaller>=6; extra == "build"
Provides-Extra: bundle
Requires-Dist: boto3>=1.28; extra == "bundle"
Requires-Dist: pyodbc>=4; extra == "bundle"
Requires-Dist: sqlalchemy>=2; extra == "bundle"
Requires-Dist: psycopg2-binary; extra == "bundle"
Requires-Dist: pymysql; extra == "bundle"
Requires-Dist: openpyxl>=3; extra == "bundle"
Requires-Dist: pypdf; extra == "bundle"
Provides-Extra: docs
Requires-Dist: pypdf; extra == "docs"
Provides-Extra: dev
Requires-Dist: pytest>=7; extra == "dev"
Requires-Dist: httpx>=0.24; extra == "dev"
Requires-Dist: openpyxl>=3; extra == "dev"
Dynamic: license-file

# Taskuary

[![CI](https://github.com/ldbumble/taskuary/actions/workflows/ci.yml/badge.svg)](https://github.com/ldbumble/taskuary/actions/workflows/ci.yml)
[![PyPI](https://img.shields.io/pypi/v/taskuary.svg?cacheSeconds=600)](https://pypi.org/project/taskuary/)
[![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-3776ab.svg)](https://github.com/ldbumble/taskuary)
[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)

## Your inbox, staffed by AI agents.

Taskuary brings your mail, chats, issues, and scheduled reports into one local conversation:
a live work pipe on the left and chat on the right. AI triage decides what is real work,
your coding CLI works the tasks in your own repos, and replies wait for your approval.
Nothing sends or ships without you.

![The Taskuary Studio: work arrives, triage decides what needs action, and agents take seats to work it.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/hero.gif)

Taskuary is early—currently **v0.3.3.1**—and moving fast. The funnel, review queue,
agent sessions, and reports pipeline are in daily use; breaking changes are still possible
before 1.0.

<p align="center">
  <a href="https://taskuary.com/demo/"><img
    src="https://img.shields.io/badge/%E2%96%B6%20Try%20it%20now-no%20install%2C%20in%20your%20browser-2f4858?style=for-the-badge&labelColor=1f2a22"
    alt="Try Taskuary now, in your browser"></a>
</p>

<p align="center"><sub>The real app over invented work — the unified pipe and chat, triage,
a coding session mid-run, and reports with charts. Nothing to install and nothing connects
to anything.</sub></p>

## One timeline, one chat

Outlook, Gmail, Teams, Slack, Telegram, WhatsApp, GitHub, Jira, alerts, and reports all
arrive in the pipe beside the same conversation. **Unread** is the prioritized walkthrough;
**All** is the recent timeline. Click any row—or name a sender, subject, or task in chat—to
pull it into the conversation with its context, triage reasoning, draft, and available actions.

![Taskuary's unified work pipe and chat, populated only with fictional demo data.](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/screenshot-chat.png)

*Everything shown is generated by the built-in demo. Dana Whitfield, Northwind Facilities,
the people, messages, repositories, tasks, and reports are all fictional.*

The same conversation also speaks up when something falls between tasks: a reply went
unanswered, a meeting needs context, a task went quiet, or a pattern appears across the
week's work. Each observation carries its evidence and can be acted on, dismissed, snoozed,
or taught away with **Not this**. These observations now appear in this same chat instead of
as separate Assistant posts on the Timeline.

These checks can watch the systems you run on, not only incoming messages. Point one at a
Sage Intacct query, a database, a file, a REST or MCP tool, a cloud log group, or an agent
skill—no saved report has to stand behind it—and Taskuary reads it silently on schedule.
Describe what a check should watch and AI can write the source cards using only connected
systems, after reading their real schema and asking rather than guessing a filter. The same
help sits on every source card in the report builder. Voice, schedule, model, and thresholds
remain yours to change; a check stays silent when there is nothing useful to add to the chat.

Coding work can go straight to Claude Code, Codex, Gemini, Cursor, Copilot, or any CLI that
accepts a prompt on stdin. You watch the live terminal, answer questions, review the diff,
and approve what happens next. Research, marketing, and other general work belong in a
conversational workspace built with assistant-ui and your existing Taskuary AI connections.
Chat and terminal are two views of the same session: model, history, queued instructions,
image attachments, and the side-by-side browser stay put when you switch. The same workspace
also appears on the Wall.

## Install

### Windows app

Download the latest single-file
[Taskuary.exe](https://github.com/ldbumble/taskuary/releases/latest/download/Taskuary.exe)
and open it. No Python or installer is required.

### Python

Python 3.10 or newer works on Windows, macOS, and Linux:

```bash
pip install taskuary
taskuary
```

Taskuary opens at [http://127.0.0.1:7787](http://127.0.0.1:7787). For a native desktop
window instead, install `pip install "taskuary[desktop]"` and run `taskuary-desktop`.

### Docker

```bash
git clone https://github.com/ldbumble/taskuary
cd taskuary
docker compose up
```

Then open [http://127.0.0.1:7787](http://127.0.0.1:7787). Docker runs the web app;
coding CLIs and the optional WhatsApp bridge remain on the host.

On first run, connect an AI provider or local Ollama model, add at least one inbound
channel, then choose the coding CLI that should receive tasks. The setup wizards test each
connection before it goes live.

## Try it without installing anything

```bash
taskuary --demo                    # or: docker compose --profile demo up
```

A full Taskuary over invented work — a morning's mail and chats already triaged with the
reasons attached, drafts waiting in Review, agents on the board with their transcripts
playing, live task handoffs on the Board, and the durable, high-signal company Hub.
Every Hub post names its human or agent author and originating task; Board handoffs are short-lived
checkout coordination that rolls up nightly. The AI answers from a script and every door
to the outside world is shut at the API layer (`taskuary/demo.py`): nothing sends, no
connection can be made or edited, no tool runs, and no CLI starts. Nobody's real data is in
it — Dana Whitfield and Northwind Facilities are invented.

## Installs

![Daily installs of taskuary from PyPI, mirror traffic excluded](https://raw.githubusercontent.com/ldbumble/taskuary/master/docs/downloads.svg)

Redrawn every morning by [`downloads.yml`](.github/workflows/downloads.yml) from PyPI's own
numbers, with mirror traffic excluded — a full PyPI mirror pulls every release, so counting it
would let a handful of real users read as hundreds. What it does **not** claim is that CI
installs have been removed: the field that would separate `pip install` in a build runner from
one on somebody's laptop is in PyPI's BigQuery dataset, not in the public API. The daily series
is [docs/downloads.csv](docs/downloads.csv).

## Documentation

- [Getting started](docs/getting-started.md)—installation, first-run setup, Docker, and data
- [Product guide](docs/product-guide.md)—the workflow, learning loop, agents, and operator documents
- [Integrations](docs/integrations.md)—channels, AI providers, work systems, and report sources
- [Reports and proactive checks](docs/reports-and-assistant.md)—the report pipeline, AI-written source cards, and what Taskuary watches
- [Status and roadmap](docs/roadmap.md)—what works today and what is next
- [Contributing](CONTRIBUTING.md)—development setup and contribution guide

Taskuary is free and open source under the [MIT License](LICENSE). Issues and pull requests
are welcome; security reports belong in [SECURITY.md](SECURITY.md).
