MAESTRO: Fix ssh-remote-execution.md documentation inaccuracies

- Corrected Per-Agent Configuration to Per-Session Configuration
  (SSH is session-level only, not per-agent with global defaults)
- Fixed dropdown options from incorrect "Use Global Default"/"Force
  Local" to actual "Local Execution"/[Remote Name] options
- Removed incorrect "Resolution Order" section (5-level priority
  algorithm doesn't exist in source code)
- Clarified global default is a visual indicator, not automatic
- Removed incorrect PTY limitation claim (PTY IS available via
  RequestTTY: 'force' and -tt flags)
- Updated Limitations section with accurate shell initialization info
- Changed hyphens to em-dashes for consistency
This commit is contained in:
Pedram Amini
2026-01-11 06:13:45 -06:00
parent f8c8bfc0e9
commit 6e4d60a697

View File

@@ -15,7 +15,7 @@ SSH Remote Execution wraps agent commands in SSH, executing them on a configured
- Access tools or SDKs installed only on specific servers - Access tools or SDKs installed only on specific servers
- Work with codebases that require particular OS or architecture - Work with codebases that require particular OS or architecture
- Execute agents in secure/isolated environments - Execute agents in secure/isolated environments
- Coordinate multiple agents across different machines in [Group Chat](./group-chat) - Coordinate multiple agents across different machines in [Group Chat](/group-chat)
- Run Auto Run playbooks on remote projects - Run Auto Run playbooks on remote projects
## Configuring SSH Remotes ## Configuring SSH Remotes
@@ -88,8 +88,8 @@ With the above config, you can:
#### Field Labels #### Field Labels
When using SSH config mode, field labels indicate which values are optional: When using SSH config mode, field labels indicate which values are optional:
- **Username (optional override)** — leave empty to use SSH config's `User` - **Username (optional)** — leave empty to use SSH config's `User`
- **Private Key Path (optional override)** — leave empty to use SSH config's `IdentityFile` - **Private Key Path (optional)** — leave empty to use SSH config's `IdentityFile`
#### Clearing SSH Config Mode #### Clearing SSH Config Mode
@@ -109,39 +109,40 @@ A successful test shows the remote hostname. Failed tests display specific error
### Setting a Global Default ### Setting a Global Default
Click the checkmark icon next to any remote to set it as the **global default**. When set: Click the checkmark icon next to any remote to set it as the **global default**. When set:
- All agents use this remote by default - The "Default" badge appears next to the remote name
- Individual agents can override this setting - The default remote is highlighted in selection dropdowns
- The default badge appears next to the remote name - New sessions still require explicit selection — the default serves as a visual indicator of your preferred remote
Click the checkmark again to clear the default and return to local execution. Click the checkmark again to clear the default.
## Per-Agent Configuration <Note>
The global default is a convenience marker, not an automatic setting. Each session must explicitly select an SSH remote via the "SSH Remote Execution" dropdown in the New Agent dialog or session configuration.
</Note>
Each agent can have its own SSH remote setting, overriding the global default. ## Per-Session Configuration
### Configuring an Agent Each session can have its own SSH remote setting configured when creating the session or editing its configuration.
1. Open the agent's configuration panel (gear icon in session header, or via Settings → Agents) ### Configuring a Session
2. Find the **SSH Remote Execution** dropdown
3. Select an option: 1. When creating a new agent session (via New Agent dialog or the wizard), find the **SSH Remote Execution** dropdown
2. Select an option:
![SSH Agent Mapping](./screenshots/ssh-agents-mapping.png) ![SSH Agent Mapping](./screenshots/ssh-agents-mapping.png)
| Option | Behavior | | Option | Behavior |
|--------|----------| |--------|----------|
| **Use Global Default** | Follows the global setting (shows which remote if one is set) | | **Local Execution** | Runs the agent on your local machine (default) |
| **Force Local Execution** | Always runs locally, ignoring any global default | | **[Remote Name]** | Runs the agent on the specified SSH remote host |
| **[Specific Remote]** | Always uses this remote, regardless of global setting |
### Resolution Order ### How It Works
When spawning an agent, Maestro resolves which SSH remote to use: SSH remote execution is configured at the **session level**:
1. **Per-agent explicit remote** → Uses that specific remote - When you create a new session, you choose whether it runs locally or on a specific remote
2. **Per-agent "Force Local"** → Runs locally (ignores global) - The configuration is saved with the session and persists across restarts
3. **Per-agent "Use Global Default"** → Falls through to global setting - Each session maintains its own SSH setting independently
4. **Global default set** → Uses the global default remote - Changing a session's SSH remote requires editing the session configuration
5. **No global default** → Runs locally
## Status Visibility ## Status Visibility
@@ -149,7 +150,7 @@ When a session is running via SSH remote, you can easily identify it:
![SSH Agent Status](./screenshots/ssh-agents-status.png) ![SSH Agent Status](./screenshots/ssh-agents-status.png)
- **REMOTE pill** — Appears in the Left Bar next to the agent, indicating it's configured for remote execution - **REMOTE pill** — Appears in the Left Bar next to the session, indicating it's configured for remote execution
- **Host name badge** — Displayed in the Main Panel header showing which SSH host the agent is running on (e.g., "PEDTOME") - **Host name badge** — Displayed in the Main Panel header showing which SSH host the agent is running on (e.g., "PEDTOME")
- **Agent type indicator** — Shows "claude-code (SSH)" to clarify the execution mode - **Agent type indicator** — Shows "claude-code (SSH)" to clarify the execution mode
- Connection state reflects SSH connectivity - Connection state reflects SSH connectivity
@@ -231,11 +232,11 @@ This is especially useful for:
### Tips ### Tips
- **Import from SSH config**: Use the dropdown when adding remotes to import from `~/.ssh/config`saves time and keeps configuration consistent - **Import from SSH config** Use the dropdown when adding remotes to import from `~/.ssh/config`; saves time and keeps configuration consistent
- **Bastion hosts**: Use `ProxyJump` in your SSH config for multi-hop connections; Maestro inherits this automatically - **Bastion hosts** Use `ProxyJump` in your SSH config for multi-hop connections; Maestro inherits this automatically
- **Key management**: Use `ssh-agent` to avoid passphrase prompts - **Key management** Use `ssh-agent` to avoid passphrase prompts
- **Keep-alive**: Configure `ServerAliveInterval` in SSH config for long sessions - **Keep-alive** Configure `ServerAliveInterval` in SSH config for long sessions
- **Test manually first**: Verify `ssh host 'claude --version'` works before configuring in Maestro - **Test manually first** Verify `ssh host 'claude --version'` works before configuring in Maestro
## Security Considerations ## Security Considerations
@@ -246,7 +247,6 @@ This is especially useful for:
## Limitations ## Limitations
- PTY (pseudo-terminal) features are not available over SSH
- Some interactive agent features may behave differently
- Network latency affects perceived responsiveness - Network latency affects perceived responsiveness
- The remote host must have the agent CLI installed and configured - The remote host must have the agent CLI installed and configured
- Some shell initialization files (`.bashrc`, `.zshrc`) may not be fully sourced — agent commands use `$SHELL -lc` to ensure PATH availability from login profiles