Then build an eval sweep that runs one prompt across every coding agent on this machine. libtmux drives a real tmux server from code. It gives you objects for the server, its sessions, windows and panes. Documentation for every language is at https://libtmux.org/en/. Language: Swift Package: libtmux-swift (Swift Package Index) Repository: https://github.com/libtmux/libtmux-swift Read these before writing code: - https://libtmux.org/en/swift/latest/llms.txt every page for Swift, as a list - https://libtmux.org/en/swift/latest/docs.json the same list with headings, as JSON - https://libtmux.org/en/swift/latest/reference/ the Swift API reference If you cannot fetch URLs, clone the repository above and read its README and examples instead, or ask me to paste those pages in. Set up first: 1. Report the tmux version with `tmux -V`. libtmux drives a real tmux, so nothing below works without one. Stop and tell me if it is missing. 2. If this directory is not a Swift project yet, start one: swift package init --type executable Skip this in a project that already exists, and match what is here. 3. Add the dependency. libtmux-swift has no stable release. 0.1.0-alpha.6 is the newest prerelease on Swift Package Index, and the command below names it because the resolver skips prereleases otherwise. .package(url: "https://github.com/libtmux/libtmux-swift", exact: "0.1.0-alpha.6") Check https://swiftpackageindex.com/libtmux/libtmux-swift for a newer version, and prefer a stable release over this one if there now is any. A target depends on the product, not the package: write .product(name: "LibTmux", package: "libtmux-swift"). The library is `LibTmux` while the package identity SwiftPM derives from the URL is `libtmux-swift`, which is neither the product name nor the `name:` in the package manifest. 4. Write the smallest program that proves the install works: connect to a tmux server, create a session, confirm it is there, then kill it. Give that server a socket of its own rather than using the default one, so this never touches a tmux I am already running. Run it, and show me the output and the files you added. Rules for everything below: - Use the reference above rather than guessing names. The ten libtmux ports do not share spellings, and a name from another language will look plausible and not exist. - If the reference does not have something you expected, say so instead of writing a call that does not exist. - Follow the conventions already in this repository. Eval sweep What it does: - Finds which agent CLIs are actually on PATH and reports the ones it found, rather than assuming a fixed list. - Runs the same prompt through each of them at the same time, one pane each, in a session I can attach to and watch. - Captures each pane's full transcript to its own file, with the agent name, the prompt, and how long the run took. - Prints a comparison at the end: who answered, who failed, who was slowest. Constraints: - Capture the whole transcript, including what scrolled past. A pane's visible area is not the run. - Record wall-clock time per agent from the same clock, so the numbers compare. - One agent hanging must not stall the sweep. Give each a deadline and record a timeout as a result rather than as a crash. - Do not send my prompt anywhere except the agents I asked for. Anchor it in these pages: - https://libtmux.org/en/tmux/guides/capturing-output/ capturing output - https://libtmux.org/en/tmux/concepts/queries/ queries - https://libtmux.org/en/tmux/examples/capture-pane-output/ capture pane output