# LibTmux.Mcp.PaneActivityHub

- **Module:** LibTmux.Mcp
- **Package:** LibTmux.Mcp
- **Language:** .NET
- **Kind:** class
- **Source:** https://github.com/libtmux/libtmux-dotnet/blob/320dc64f4b8b7815842471327a5e6b84a1499bf8/src/LibTmux.Mcp/Streaming/PaneActivityHub.cs#L30
- **Page:** https://libtmux.org/en/dotnet/latest/mcp/reference/libtmux-mcp-paneactivityhub/

Tells a waiter the moment a pane prints something.

tmux will report pane output as it happens to a client in control mode, so
a wait can sleep until there is something to look at instead of asking
every few milliseconds whether anything changed. On a wait that ends up
timing out, that is the difference between hundreds of tmux processes and
none.

What arrives on that stream is the pane's raw terminal bytes — escape
sequences, redraws and all — which is why it is used as a signal and never
as content. The text a caller gets always comes from a capture, which is
what tmux has already rendered.

A control client sees only the session it attached to, so watches are per
session and reference counted. Control mode is an optimisation, not a
requirement: when a client cannot start, waiting falls back to polling and
the caller cannot tell the difference except in cost.

## Members

- `PaneActivityHub` (method): Initializes the hub.
- `IsStreaming` (property): Gets whether any session is currently watched through control mode.
- `OwnsControlClient` (method): Reports whether this process opened the named control client.
- `DisposeAsync` (method)
- `WatchAsync` (method): Watches a pane's session for as long as the result is held.
- `WaitForActivityAsync` (method): Waits until a pane prints something, or the time runs out.
- `CaptureSignal` (method): Takes the token that a later wait on this pane will wake from.
