Prerelease This site documents an alpha of libtmux. Its structure, URLs and APIs are subject to change.

Execution modes

Ruby
  • Python Unavailable
  • Ruby
  • Lua Unavailable
  • TypeScript Unavailable
  • Rust Unavailable
  • Go Unavailable
  • Java Unavailable
  • .NET Unavailable
  • C++ Unavailable
  • Swift Unavailable
ModeWait and ownershipResult evidence
Core commandCalling thread blocks; server binding owns each client and its pipesCommandResult has binary stdout/stderr and final client status
Captured querySnapshot acquisition performs explicit I/O; Selection filtering is localStable captured membership with acquisition interval and coverage
Command groupOne client submits an ordered, nontransactional groupAggregate final status; individual steps remain unknown
Core controlOne owned reader thread drains the connection; each subscriber has limitsGuarded blocks between boundaries; hooks can share the interval
AsyncCaller supplies an Async parent task; pipe I/O yields on its schedulerSame command evidence, with bounded request admission and cancellation
MCPCaller supplies transport streams, Async scope and tool policyVersioned protocol envelopes and structured tool responses
WorkspaceParsing and planning are inert; apply performs ordered commandsCreated-reference ledger, observed effects and explicit uncertainty

Use Server.open(socket_path: ...) to borrow a daemon through a pinned binding. Server.start creates an owned daemon on a unique socket and closes it with the block. No API in these recipes chooses the default server.

CommandResult#success? means the client exited successfully. Sending input does not establish shell completion. A GuardedReply has no success?: %end terminates a guard, while WAIT commands, aliases and hooks can change what finishes when. Its boundary_window attribution is deliberately weaker than per-command ownership.

Concurrent control calls pipeline complete wire requests on one connection. The writer can submit a later request while an earlier reply waits; the reader assigns boundaries in the same order. Admission limits include all pending and completed but unconsumed requests. Cancellation after any request bytes are written closes the connection: other written requests have possibly_sent delivery, and requests with no written bytes have not_sent. No uncertain request is replayed. Sequential calls still wait for each reply.

Reliable control subscriptions raise SubscriptionOverflow when they cannot retain the stream. Tail subscriptions emit a gap containing lost sequence and byte evidence. Neither mode blocks the command reader behind a slow consumer. Limits apply to connection-owned buffers; callers own the replies they retain after return.

Captured queries evaluate the whole criteria tree before selecting rows, including inactive OR branches. Explain methods perform no I/O. Current source plans use explicit capture and local evaluation; unsupported required pushdown fails rather than silently changing semantics.

See the recipes for event-based WAIT release, cancellation, overflow and group-failure examples. No throughput comparison is claimed.

Esc

Type to search.