tether-chat
A local-first assistant for tasks, action items, and things worth remembering. Talk naturally; your work and conversation stay in a local SQLite database.
Install
Requires Python 3.11 or newer. No PyInstaller build or separate Windows .exe installer is required.
Install the desktop app from PyPI:
uv tool install --reinstall "tether-chat[desktop]"
tether-chat-desktop
The install exposes only tether-chat and tether-chat-desktop. On Windows, tether-chat-desktop opens a native WebView2 window and remains in the tray after the window closes. Choose Open tether-chat to return or Exit tether-chat to stop it. The Microsoft Edge WebView2 Runtime is required. macOS and Linux open the browser UI and use a tray/menu-bar entry where supported by the desktop environment.
Browser/server mode:
python -m pip install "tether-chat @ git+https://github.com/briday1/Tend.git@main"
tether-chat serve --port 9000 --mcp-port 9001
Without custom ports, the browser UI is at http://127.0.0.1:8765 and the local MCP server is at http://127.0.0.1:8766/mcp. Use --no-browser to start without opening a window. Both services are local-only; Ctrl+C stops a terminal-launched server.
Optional desktop shortcut:
tether-chat desktop install
tether-chat desktop install --destination "/path/to/shortcuts"
The default destination is your operating system's Desktop folder. Windows gets an icon-branded .lnk, macOS a .command launcher, and Linux a .desktop entry. Keep the Python/uv environment that the shortcut references. Linux may require marking the launcher trusted. Add tether-chat-desktop to your OS login/startup applications to launch at sign-in; installing it does not enable startup automatically.
Source installs are also available using the GitHub commands below.
Set up and use
Open Settings → AI connection, enter your provider's HTTPS API base URL, model, and API key, then save and test. The provider must support OpenAI-compatible chat-completions tool calling. Keys use the operating system's credential vault; they are not stored in your task database.
Conversation: Describe work to track, ask for an update, or record feedback. You can switch to Tasks while a reply is running. Requests are queued on the local server, and returning to Conversation restores their progress or completed replies. A full server shutdown interrupts in-flight requests rather than automatically repeating potentially mutating operations.
Tasks: Browse Categories → Tasks → Action items. Each task may have several categories and several action items. Individual action items have their own due date and Bring to attention time. Click an action row to open its details drawer, including its own notes. Add, edit, or remove a note there; notes stay attached to that action and are included in its check-in context.
Attention: Click an item or focus it and press Enter. This sends a contextual check-in to Conversation and asks for your update; it does not silently mark anything complete or change dates. Action-item attention stays scoped to that action, rather than its siblings or category.
Calendars: Ask “give me my next week snapshot” or use /snapshot last month. The calendar appears inside chat, with transparent day cells and category-colored task blocks. Monday–Friday remain visible; weekends appear when they contain work. PNG and SVG buttons export the calendar.
Archive: Put finished or inactive tasks away without deleting them; restore them from View archive.
Update
Choose Exit tether-chat in the tray before replacing a running installation:
uv tool install --reinstall --refresh "tether-chat[desktop] @ git+https://github.com/briday1/Tend.git@main"
Run tether-chat desktop install again to refresh an existing shortcut. Existing data and provider settings remain in ~/.tend; this does not install a legacy tend command.
Releases
Main releases use YYYY.sequence: 2026.1, 2026.2, and so on, restarting at 2027.1 in the next year. python scripts/bump_version.py updates both package and runtime versions. Commit that version bump with the main update; a separate manual publish is not required.
The main release workflow validates the version, runs Windows/macOS/Linux tests and isolated installations, checks browser interactions, builds the wheel and source archive, creates the versioned GitHub release, and attempts PyPI publication using PYPI_API_KEY. It confirms the uploaded version before reporting PyPI success. The current PyPI name restriction is reported as a failed publication, not a completed PyPI release.
More screenshots
These desktop screenshots use synthetic example data, never your personal tasks.
Categories and tasks
Action items in the third column
Details in a chat drawer
Week and month calendars
Task details and archive
More information
See development and troubleshooting for database backups, MCP configuration, and server setup. The repository also includes a snapshot skill for compatible AI clients. Screenshots are regenerated by the screenshot workflow.
Metadata
Release files for tether-chat 2026.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| tether_chat-2026.2.tar.gz | 95.8 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tether_chat-2026.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 189.1 kB
Release files / tether_chat-2026.2.tar.gz
| Download URL | tether_chat-2026.2.tar.gz |
|---|---|
| Size | 95.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
69659b5f73e06d8994c8b46531151821483f48b316ea418fa0f5f0dd76d23aa8
|
|
BLAKE2b-256 checksum How to use checksums |
6016b803ad5c6aaf438d663f7c6565c55d2811a211f56b6181d8ed18ea23d7a2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.17
|
Release files / tether_chat-2026.2-py3-none-any.whl
| Download URL | tether_chat-2026.2-py3-none-any.whl |
|---|---|
| Size | 93.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0fb5863ea093167d818e3fcdb7b1382900f454f19594f5aa0868507000e2513f
|
|
BLAKE2b-256 checksum How to use checksums |
ea11779abcbd435987a80dc3a4423724ee802c28ce0ac10484213ebdd93bb751
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.11.17
|
Security for tether-chat 2026.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.