-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Description
Summary
I'd like T3 Code to expose a clean integration surface for external local notification/sound tools like peon-ping.
peon-ping repo: https://github.com/PeonPing/peon-ping
peon-ping is an open-source local notifier for coding agents: it plays sound packs / voice lines, updates tab titles, and shows desktop notifications/overlays when an agent finishes work, needs approval, errors, or hits resource limits. It already integrates with multiple agent tools via small adapters/hooks.
This request is not necessarily "bundle peon-ping into T3." The more important part is exposing a stable local lifecycle/hook surface so tools like peon-ping can integrate cleanly.
Why this seems feasible
I dug through a local checkout of t3code and T3 already appears to have almost everything needed internally:
- Canonical runtime events already exist for things like:
session.startedturn.startedturn.completedrequest.openeduser-input.requestedruntime.erroraccount.rate-limits.updated
- T3 also already projects turn/session state and has a notion of when a turn is actually settled / completed from the user's point of view.
So the missing piece seems to be an external/local notification sink or hook API, not the event modeling itself.
Why this would help
This would let users plug in tools like peon-ping without T3 needing to own every sound pack / voice pack / overlay implementation itself.
It also keeps the integration generic enough for:
- peon-ping
- custom shell notifiers
- desktop tray tools
- accessibility helpers
- future local automation / agent workflow tools
Suggested shape
A good minimal version would be one of these:
- A stable desktop/local lifecycle hook API for key agent events.
- A small notification integration interface that external tools can subscribe to.
- A built-in desktop-only local bridge for peon-ping / similar tools behind a setting.
Important design detail
Because sound playback / desktop notifications should happen on the user's local machine, this probably should live in the desktop/local runtime (for example Electron main process or another local-only integration path), not purely in the browser UI and not only in a possibly-remote server process.
Suggested event mapping
Something like this would make external sound tools work well:
session.started-> session start / greetingturn.started-> task acknowledged / working- successful
turn.completed-> task complete - approval-style
request.opened-> input required / permission needed user-input.requested-> question pending- failed
turn.completedorruntime.error-> task error - compaction / rate-limit style events -> resource limit
- session exit -> session end / cleanup
One important nuance
The final "done" signal should be based on the actual settled turn completion signal, not intermediate task events.
In other words: an integration should avoid firing completion sounds for internal progress/task markers that happen before the user-visible turn is truly complete.
Request
Would you be open to either:
- adding a generic local hook/integration surface for lifecycle notifications, or
- adding a desktop-only integration path that makes tools like peon-ping work cleanly?
If helpful, I can also put together a concrete proposed event contract / mapping for peon-ping-style integrations.