1717
1818class MuxAgent (AbstractInstalledAgent ):
1919 """
20- Minimal Terminal-Bench adapter that installs cmux into the task container and
21- forwards the benchmark instruction to the cmux headless runner.
20+ Minimal Terminal-Bench adapter that installs mux into the task container and
21+ forwards the benchmark instruction to the mux headless runner.
2222 """
2323
24- _ARCHIVE_NAME = "cmux -app.tar.gz"
25- _RUNNER_NAME = "cmux -run.sh"
24+ _ARCHIVE_NAME = "mux -app.tar.gz"
25+ _RUNNER_NAME = "mux -run.sh"
2626 _DEFAULT_TRUNK = "main"
2727 _DEFAULT_MODEL = "anthropic:claude-sonnet-4-5"
2828 _DEFAULT_PROJECT_CANDIDATES = "/workspace:/app:/workspaces:/root/project"
@@ -50,18 +50,18 @@ class MuxAgent(AbstractInstalledAgent):
5050 )
5151
5252 _CONFIG_ENV_KEYS : Sequence [str ] = (
53- "CMUX_AGENT_GIT_URL " ,
54- "CMUX_BUN_INSTALL_URL " ,
55- "CMUX_PROJECT_PATH " ,
56- "CMUX_PROJECT_CANDIDATES " ,
57- "CMUX_TRUNK " ,
58- "CMUX_MODEL " ,
59- "CMUX_TIMEOUT_MS " ,
60- "CMUX_THINKING_LEVEL " ,
61- "CMUX_CONFIG_ROOT " ,
62- "CMUX_APP_ROOT " ,
63- "CMUX_WORKSPACE_ID " ,
64- "CMUX_MODE " ,
53+ "MUX_AGENT_GIT_URL " ,
54+ "MUX_BUN_INSTALL_URL " ,
55+ "MUX_PROJECT_PATH " ,
56+ "MUX_PROJECT_CANDIDATES " ,
57+ "MUX_TRUNK " ,
58+ "MUX_MODEL " ,
59+ "MUX_TIMEOUT_MS " ,
60+ "MUX_THINKING_LEVEL " ,
61+ "MUX_CONFIG_ROOT " ,
62+ "MUX_APP_ROOT " ,
63+ "MUX_WORKSPACE_ID " ,
64+ "MUX_MODE " ,
6565 )
6666
6767 def __init__ (
@@ -72,18 +72,18 @@ def __init__(
7272 ** kwargs : Any ,
7373 ) -> None :
7474 super ().__init__ (** kwargs )
75- repo_root_env = os .environ .get ("CMUX_AGENT_REPO_ROOT " )
75+ repo_root_env = os .environ .get ("MUX_AGENT_REPO_ROOT " )
7676 repo_root = (
7777 Path (repo_root_env ).resolve ()
7878 if repo_root_env
7979 else Path (__file__ ).resolve ().parents [2 ]
8080 )
8181 if not repo_root .exists ():
82- raise RuntimeError (f"cmux repo root { repo_root } does not exist" )
82+ raise RuntimeError (f"mux repo root { repo_root } does not exist" )
8383
8484 runner_path = Path (__file__ ).with_name (self ._RUNNER_NAME )
8585 if not runner_path .is_file ():
86- raise RuntimeError (f"cmux runner script missing at { runner_path } " )
86+ raise RuntimeError (f"mux runner script missing at { runner_path } " )
8787
8888 self ._runner_path = runner_path
8989 self ._repo_root = repo_root
@@ -95,7 +95,7 @@ def __init__(
9595
9696 @staticmethod
9797 def name () -> str :
98- return "cmux "
98+ return "mux "
9999
100100 @property
101101 def _env (self ) -> dict [str , str ]:
@@ -106,63 +106,61 @@ def _env(self) -> dict[str, str]:
106106 if value :
107107 env [key ] = value
108108
109- env .setdefault ("CMUX_TRUNK " , self ._DEFAULT_TRUNK )
110- env .setdefault ("CMUX_MODEL " , self ._DEFAULT_MODEL )
111- env .setdefault ("CMUX_CONFIG_ROOT " , "/root/.cmux " )
112- env .setdefault ("CMUX_APP_ROOT " , "/opt/cmux -app" )
113- env .setdefault ("CMUX_WORKSPACE_ID " , "cmux -bench" )
114- env .setdefault ("CMUX_THINKING_LEVEL " , "high" )
115- env .setdefault ("CMUX_MODE " , "exec" )
116- env .setdefault ("CMUX_PROJECT_CANDIDATES " , self ._DEFAULT_PROJECT_CANDIDATES )
109+ env .setdefault ("MUX_TRUNK " , self ._DEFAULT_TRUNK )
110+ env .setdefault ("MUX_MODEL " , self ._DEFAULT_MODEL )
111+ env .setdefault ("MUX_CONFIG_ROOT " , "/root/.mux " )
112+ env .setdefault ("MUX_APP_ROOT " , "/opt/mux -app" )
113+ env .setdefault ("MUX_WORKSPACE_ID " , "mux -bench" )
114+ env .setdefault ("MUX_THINKING_LEVEL " , "high" )
115+ env .setdefault ("MUX_MODE " , "exec" )
116+ env .setdefault ("MUX_PROJECT_CANDIDATES " , self ._DEFAULT_PROJECT_CANDIDATES )
117117
118- model_value = self ._model_name or env ["CMUX_MODEL " ]
118+ model_value = self ._model_name or env ["MUX_MODEL " ]
119119 model_value = model_value .strip ()
120120 if not model_value :
121- raise ValueError ("CMUX_MODEL must be a non-empty string" )
121+ raise ValueError ("MUX_MODEL must be a non-empty string" )
122122 if "/" in model_value and ":" not in model_value :
123123 provider , model_name = model_value .split ("/" , 1 )
124124 model_value = f"{ provider } :{ model_name } "
125- env ["CMUX_MODEL " ] = model_value
125+ env ["MUX_MODEL " ] = model_value
126126
127- thinking_value = self ._thinking_level or env ["CMUX_THINKING_LEVEL " ]
127+ thinking_value = self ._thinking_level or env ["MUX_THINKING_LEVEL " ]
128128 normalized_thinking = thinking_value .strip ().lower ()
129129 if normalized_thinking not in {"off" , "low" , "medium" , "high" }:
130- raise ValueError (
131- "CMUX_THINKING_LEVEL must be one of off, low, medium, high"
132- )
133- env ["CMUX_THINKING_LEVEL" ] = normalized_thinking
130+ raise ValueError ("MUX_THINKING_LEVEL must be one of off, low, medium, high" )
131+ env ["MUX_THINKING_LEVEL" ] = normalized_thinking
134132
135- mode_value = self ._mode or env ["CMUX_MODE " ]
133+ mode_value = self ._mode or env ["MUX_MODE " ]
136134 normalized_mode = mode_value .strip ().lower ()
137135 if normalized_mode in {"exec" , "execute" }:
138- env ["CMUX_MODE " ] = "exec"
136+ env ["MUX_MODE " ] = "exec"
139137 elif normalized_mode == "plan" :
140- env ["CMUX_MODE " ] = "plan"
138+ env ["MUX_MODE " ] = "plan"
141139 else :
142- raise ValueError ("CMUX_MODE must be one of plan, exec, or execute" )
140+ raise ValueError ("MUX_MODE must be one of plan, exec, or execute" )
143141
144142 # These env vars are all set with defaults above, no need to validate
145143 for key in (
146- "CMUX_CONFIG_ROOT " ,
147- "CMUX_APP_ROOT " ,
148- "CMUX_WORKSPACE_ID " ,
149- "CMUX_PROJECT_CANDIDATES " ,
144+ "MUX_CONFIG_ROOT " ,
145+ "MUX_APP_ROOT " ,
146+ "MUX_WORKSPACE_ID " ,
147+ "MUX_PROJECT_CANDIDATES " ,
150148 ):
151149 env [key ] = env [key ].strip ()
152150
153- if timeout_value := env .get ("CMUX_TIMEOUT_MS " ):
151+ if timeout_value := env .get ("MUX_TIMEOUT_MS " ):
154152 if not timeout_value .strip ().isdigit ():
155- raise ValueError ("CMUX_TIMEOUT_MS must be an integer" )
153+ raise ValueError ("MUX_TIMEOUT_MS must be an integer" )
156154
157- if project_path := env .get ("CMUX_PROJECT_PATH " ):
155+ if project_path := env .get ("MUX_PROJECT_PATH " ):
158156 if not project_path .strip ():
159- raise ValueError ("CMUX_PROJECT_PATH must be non-empty when provided" )
157+ raise ValueError ("MUX_PROJECT_PATH must be non-empty when provided" )
160158
161159 return env
162160
163161 @property
164162 def _install_agent_script_path (self ) -> Path :
165- return self ._get_templated_script_path ("cmux_setup .sh.j2" )
163+ return self ._get_templated_script_path ("mux_setup .sh.j2" )
166164
167165 def perform_task (
168166 self ,
0 commit comments