The use case
More and more of my work in T3 is threads talking to other threads. A typical setup:
- One front-desk thread is the only one I talk to.
- A few coordinator threads each run a workstream. They plan the work, check on progress and report back to the front desk.
- Several worker threads per coordinator do the actual implementation. Coordinators message them many times an hour.
That's 10–15 threads busy all day, and only one or two of them are mine to read. The worker threads are lower-level agents. They should stay available, so I can open one when I want to look, but I don't want to deal with them day to day. I want to decide which threads I see, and have everything else stay out of my sidebar.
How we make it work today
There's no thread-to-thread messaging built in, so we built it ourselves:
- Threads message each other through the T3 CLI (
t3cli send, t3cli transcript).
- A small supervisor process wakes coordinators on a schedule, for example "check your workers every hour" or "post a digest at 10:00 and 18:00".
- Everything runs on one always-on server, and I use desktop and iOS clients.
This works well, apart from the sidebar. Every message between agents starts a turn, and starting a turn clears snooze. So a worker I snoozed until tomorrow is back in my inbox minutes later, and I see every thread all the time. Nothing else puts a thread away while keeping it alive:
What we're asking for
A snooze that means "hide this until this time, no matter what". In the snooze menu (and the API), add an option such as "Keep snoozed through activity", or a setting that makes it the default. With it on:
- New turns, completions and background work don't un-snooze the thread, whether they come from another thread, an automation or the CLI.
- The session keeps running normally. This only affects where the thread appears in my sidebar.
- The thread comes back at the chosen time, or when I open it or un-snooze it myself.
- It shows in the Snoozed shelf as usual, ideally with a small indicator for "has new activity" or "needs input". Then I can choose to look, without the thread forcing its way back.
The default snooze can keep today's behaviour. This is an explicit choice for threads I've decided aren't mine to watch.
Longer term
A built-in notion of thread-to-thread messaging would make this cleaner. For example, a thread could send to another thread, and the receiving thread would know the message came from an agent and not from me. Then the app could tell "the user is engaging with this thread" apart from "agents are talking", and treat the two differently in the sidebar and notifications. The snooze option above is the smallest change that solves the day-to-day problem.
Environment
T3 server on Linux (Ubuntu 26.04), always on, with desktop (macOS) and iOS clients. Seen on nightly 0.0.43-nightly.20260929.2428 (orchestrator V2).
The use case
More and more of my work in T3 is threads talking to other threads. A typical setup:
That's 10–15 threads busy all day, and only one or two of them are mine to read. The worker threads are lower-level agents. They should stay available, so I can open one when I want to look, but I don't want to deal with them day to day. I want to decide which threads I see, and have everything else stay out of my sidebar.
How we make it work today
There's no thread-to-thread messaging built in, so we built it ourselves:
t3cli send,t3cli transcript).This works well, apart from the sidebar. Every message between agents starts a turn, and starting a turn clears snooze. So a worker I snoozed until tomorrow is back in my inbox minutes later, and I see every thread all the time. Nothing else puts a thread away while keeping it alive:
thread.unsnoozedwith reasonactivity. [Bug]: completed work wakes snoozed threads and breaks subsequent snoozing #6368 covers a related case, where completed work wakes a thread.What we're asking for
A snooze that means "hide this until this time, no matter what". In the snooze menu (and the API), add an option such as "Keep snoozed through activity", or a setting that makes it the default. With it on:
The default snooze can keep today's behaviour. This is an explicit choice for threads I've decided aren't mine to watch.
Longer term
A built-in notion of thread-to-thread messaging would make this cleaner. For example, a thread could send to another thread, and the receiving thread would know the message came from an agent and not from me. Then the app could tell "the user is engaging with this thread" apart from "agents are talking", and treat the two differently in the sidebar and notifications. The snooze option above is the smallest change that solves the day-to-day problem.
Environment
T3 server on Linux (Ubuntu 26.04), always on, with desktop (macOS) and iOS clients. Seen on nightly
0.0.43-nightly.20260929.2428(orchestrator V2).