LibTmux.Workspace 0.0.0-alpha.7

Prefix Reserved
This is a prerelease version of LibTmux.Workspace.
dotnet add package LibTmux.Workspace --version 0.0.0-alpha.7
                    
NuGet\Install-Package LibTmux.Workspace -Version 0.0.0-alpha.7
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="LibTmux.Workspace" Version="0.0.0-alpha.7" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="LibTmux.Workspace" Version="0.0.0-alpha.7" />
                    
Directory.Packages.props
<PackageReference Include="LibTmux.Workspace" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add LibTmux.Workspace --version 0.0.0-alpha.7
                    
#r "nuget: LibTmux.Workspace, 0.0.0-alpha.7"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package LibTmux.Workspace@0.0.0-alpha.7
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=LibTmux.Workspace&version=0.0.0-alpha.7&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=LibTmux.Workspace&version=0.0.0-alpha.7&prerelease
                    
Install as a Cake Tool

LibTmux.Workspace

Build tmux sessions from tmuxp workspace files, on top of LibTmux.

Alpha. The public API is not settled and can change between prereleases without notice, so pin an exact version.

$ dotnet add package LibTmux.Workspace --prerelease

Adds one dependency, YamlDotNet, which is why this is a package of its own rather than part of the client.

When you want this

You already describe your development sessions in tmuxp YAML and want to build them from .NET — a launcher, a devcontainer entrypoint, an internal CLI — with typed results instead of shelling out to another runtime.

Use it

session_name: api
start_directory: /tmp
windows:
  - window_name: editor
    layout: even-horizontal
    focus: true
    panes:
      - shell_command: echo editing
      - shell_command: echo watching
  - window_name: server
    panes:
      - shell_command: echo serving
WorkspaceFile workspace = WorkspaceFile.Parse("""
    session_name: api
    start_directory: /tmp
    windows:
      - window_name: editor
        panes:
          - shell_command: echo editing
      - window_name: server
        panes:
          - shell_command: echo serving
    """);

WorkspaceResult result = await new WorkspaceBuilder(server).BuildAsync(workspace, ct);
Console.WriteLine($"{result.Session.Name}: {result.Windows.Count} windows");

Reading one off disk is the same call:

WorkspaceFile fromDisk = WorkspaceFile.Parse(File.ReadAllText("session.yaml"));

What the result tells you

BuildAsync returns what it built rather than throwing away a session because one pane's command was wrong, so a partial build is something you can inspect and report instead of a stack trace.

A document that describes no session is a WorkspaceFormatException — that one is not partial, it is unusable.

What is in scope

This reads the workspace shape tmuxp writes: session name, start directory, windows, panes, layouts, options, and the commands to send.

It is not a tmuxp runtime. Plugins, before/after hooks, and tmuxp's own configuration search path are out of scope — if you need those, run tmuxp.

Package Adds
LibTmux The client. Required.
LibTmux.Query.Json JSON for query documents
LibTmux.Mcp A Model Context Protocol server, as a .NET tool

Source, docs and issues: https://github.com/libtmux/libtmux-dotnet

License

MIT

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.0.0-alpha.7 55 8/16/2026
0.0.0-alpha.6 47 8/16/2026
0.0.0-alpha.5 43 8/16/2026
0.0.0-alpha.4 57 8/16/2026
0.0.0-alpha.3 49 8/16/2026
0.0.0-alpha.2 52 8/15/2026
0.0.0-alpha.1 49 8/15/2026

Alpha. LibTmux.Mcp is a different server: 42 tools across three safety tiers, six tmux:// resources and four workflow prompts, where it had five tools. Every tool answers a typed record with a JSON output schema rather than prose, and the tool names all changed. Nothing polls — tmux_run reports the shell's real exit status, tmux_wait_for_text sleeps on tmux's control-mode stream, and tmux_start_job carries work that outlives one call. Every capture keeps the newest lines and reports what it dropped. Subscriptions and the Tasks extension are served on the current protocol revision. No change to LibTmux itself. The public API is not settled and may change without notice between prereleases; pin an exact version. Full history: https://github.com/libtmux/libtmux-dotnet/blob/master/CHANGELOG.md