Skip to content

Commit e91aba6

Browse files
authored
refactor(tui): rebrand Gator to Term/NemoClaw (#134)
Closes #130 Rename the TUI from "Gator" to use generic naming: - CLI subcommand: `nemoclaw gator` → `nemoclaw term` - TUI title bar: "Gator" → "NemoClaw" - Docs/skills: "Gator" → "the TUI" or "NemoClaw TUI" - File renames: gator.toml → term.toml, gator.md → tui.md - Remove dead link to nonexistent plans/gator-tui.md Co-authored-by: John Myers <johntmyers@users.noreply.github.com>
1 parent 6c00a88 commit e91aba6

12 files changed

Lines changed: 63 additions & 65 deletions

File tree

.agents/skills/nemoclaw-cli/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -564,4 +564,4 @@ $ nemoclaw sandbox sync --help
564564
|-------|------------|
565565
| `generate-sandbox-policy` | Creating or modifying policy YAML content (network rules, L7 inspection, access presets, endpoint configuration) |
566566
| `debug-navigator-cluster` | Diagnosing cluster startup or health failures |
567-
| `tui-development` | Developing features for the Gator TUI (`nemoclaw gator`) |
567+
| `tui-development` | Developing features for the NemoClaw TUI (`nemoclaw term`) |

.agents/skills/nemoclaw-cli/cli-reference.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ nemoclaw
6464
│ ├── update <name> [opts]
6565
│ ├── delete <name>...
6666
│ └── list [opts]
67-
├── gator
67+
├── term
6868
├── completions <shell>
6969
└── ssh-proxy [opts]
7070
```
@@ -339,9 +339,9 @@ List inference routes.
339339

340340
## Other Commands
341341

342-
### `nemoclaw gator`
342+
### `nemoclaw term`
343343

344-
Launch the Gator interactive TUI.
344+
Launch the NemoClaw interactive TUI.
345345

346346
### `nemoclaw completions <shell>`
347347

.agents/skills/tui-development/SKILL.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
---
22
name: tui-development
3-
description: Guide for developing the "Gator" TUI — a ratatui-based terminal UI for the NemoClaw platform. Covers architecture, navigation, data fetching, theming, UX conventions, and development workflow. Trigger keywords - gator, TUI, terminal UI, ratatui, navigator-tui, tui development, gator feature, gator bug.
3+
description: Guide for developing the NemoClaw TUI — a ratatui-based terminal UI for the NemoClaw platform. Covers architecture, navigation, data fetching, theming, UX conventions, and development workflow. Trigger keywords - term, TUI, terminal UI, ratatui, navigator-tui, tui development, tui feature, tui bug.
44
---
55

6-
# Gator TUI Development Guide
6+
# NemoClaw TUI Development Guide
77

8-
Comprehensive reference for any agent working on the Gator TUI.
8+
Comprehensive reference for any agent working on the NemoClaw TUI.
99

1010
## 1. Overview
1111

12-
Gator is a ratatui-based terminal UI for the NemoClaw platform. It provides a keyboard-driven interface for managing clusters, sandboxes, and logs — the same operations available via the `nemoclaw` CLI, but with a live, interactive dashboard.
12+
The NemoClaw TUI is a ratatui-based terminal UI for the NemoClaw platform. It provides a keyboard-driven interface for managing clusters, sandboxes, and logs — the same operations available via the `nemoclaw` CLI, but with a live, interactive dashboard.
1313

14-
- **Launched via:** `nemoclaw gator` or `mise run gator`
14+
- **Launched via:** `nemoclaw term` or `mise run term`
1515
- **Crate:** `crates/navigator-tui/`
1616
- **Key dependencies:**
1717
- `ratatui` (workspace version) — uses `frame.size()` (not `frame.area()`)
@@ -39,7 +39,7 @@ Cluster (discovered via navigator_bootstrap::list_clusters())
3939
The **title bar** always reflects this hierarchy, reading left-to-right from general to specific:
4040

4141
```
42-
Gator │ Current Cluster: <name> (<status>) │ <screen/context>
42+
NemoClaw │ Current Cluster: <name> (<status>) │ <screen/context>
4343
```
4444

4545
## 3. Navigation & Screen Architecture
@@ -104,8 +104,8 @@ Every frame renders four vertical regions:
104104

105105
### Title bar examples
106106

107-
- Dashboard: ` Gator │ Current Cluster: nemoclaw (Healthy) │ Dashboard`
108-
- Sandbox detail: ` Gator │ Current Cluster: nemoclaw (Healthy) │ Sandbox: my-sandbox`
107+
- Dashboard: ` NemoClaw │ Current Cluster: nemoclaw (Healthy) │ Dashboard`
108+
- Sandbox detail: ` NemoClaw │ Current Cluster: nemoclaw (Healthy) │ Sandbox: my-sandbox`
109109

110110
### Adding a new screen
111111

@@ -193,7 +193,7 @@ All colors and styles are defined in `crates/navigator-tui/src/theme.rs`.
193193
| `MUTED` | White + DIM modifier | Secondary info, separators (``), unfocused items |
194194
| `HEADING` | White + BOLD | Panel titles, sandbox/cluster names when active |
195195
| `ACCENT` | NVIDIA_GREEN foreground | Selected row marker (``), sandbox source labels |
196-
| `ACCENT_BOLD` | NVIDIA_GREEN + BOLD | "Gator" brand text, command prompt `:` |
196+
| `ACCENT_BOLD` | NVIDIA_GREEN + BOLD | "NemoClaw" brand text, command prompt `:` |
197197
| `SELECTED` | BOLD modifier only | Selected row text emphasis |
198198
| `BORDER` | EVERGLADE foreground | Unfocused panel borders |
199199
| `BORDER_FOCUSED` | NVIDIA_GREEN foreground | Focused panel borders |
@@ -225,9 +225,9 @@ The `confirm_delete` flag in `App` gates destructive key handling — while true
225225

226226
### CLI parity
227227

228-
Gator actions should parallel `nemoclaw` CLI commands so users have familiar mental models:
228+
TUI actions should parallel `nemoclaw` CLI commands so users have familiar mental models:
229229

230-
| CLI Command | Gator Equivalent |
230+
| CLI Command | TUI Equivalent |
231231
| --- | --- |
232232
| `nemoclaw sandbox list` | Sandbox table on Dashboard |
233233
| `nemoclaw sandbox delete <name>` | `[d]` on sandbox detail, then `[y]` to confirm |
@@ -405,11 +405,11 @@ The connect timeout for cluster switching is 10 seconds with HTTP/2 keepalive at
405405
# Build the crate
406406
cargo build -p navigator-tui
407407

408-
# Run gator against the active cluster
409-
mise run gator
408+
# Run the TUI against the active cluster
409+
mise run term
410410

411411
# Run with cargo-watch for hot-reload during development
412-
mise run gator:dev
412+
mise run term:dev
413413

414414
# Format
415415
cargo fmt -p navigator-tui

architecture/sandbox-connect.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -170,20 +170,20 @@ on the host are forwarded to `127.0.0.1:<port>` inside the sandbox.
170170
when no trailing command is provided.
171171
- `nemoclaw sandbox delete` auto-stops any active forwards for the deleted sandbox.
172172

173-
#### TUI (Gator)
173+
#### TUI
174174

175175
The TUI (`crates/navigator-tui/`) supports port forwarding through the create sandbox modal. Users
176176
specify comma-separated ports in the **Ports** field. After sandbox creation:
177177

178-
1. Gator polls for `Ready` state (up to 30 attempts at 2-second intervals).
178+
1. The TUI polls for `Ready` state (up to 30 attempts at 2-second intervals).
179179
2. Creates an SSH session via `CreateSshSession` gRPC.
180180
3. Spawns background SSH tunnels (`ssh -N -f -L <port>:127.0.0.1:<port>`) for each port.
181181
4. Sends a `ForwardResult` event back to the main loop with the outcome.
182182

183183
Active forwards are displayed in the sandbox table's NOTES column (e.g., `fwd:8080,3000`) and in
184184
the sandbox detail view's Forwards row.
185185

186-
When deleting a sandbox, Gator calls `stop_forwards_for_sandbox()` before sending the delete
186+
When deleting a sandbox, the TUI calls `stop_forwards_for_sandbox()` before sending the delete
187187
request. PID tracking uses the same `~/.config/nemoclaw/forwards/` directory as the CLI.
188188

189189
#### Shared forward module

architecture/system-architecture.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ graph TB
77
%% ============================================================
88
subgraph UserMachine["User's Machine"]
99
CLI["NemoClaw CLI<br/>(nemoclaw)"]
10-
TUI["Gator TUI<br/>(nemoclaw gator)"]
10+
TUI["NemoClaw TUI<br/>(nemoclaw term)"]
1111
SDK["Python SDK<br/>(nemoclaw)"]
1212
LocalConfig["~/.config/nemoclaw/<br/>clusters, mTLS certs,<br/>active_cluster"]
1313
end
@@ -177,7 +177,7 @@ graph TB
177177

178178
| Color | Category | Examples |
179179
|-------|----------|---------|
180-
| Blue | User-side components | NemoClaw CLI, Gator TUI, Python SDK |
180+
| Blue | User-side components | NemoClaw CLI, NemoClaw TUI, Python SDK |
181181
| Orange | Gateway / Control plane | navigator-server, watch bus, log bus |
182182
| Green | Sandbox supervisor | SSH server, HTTP CONNECT proxy, OPA engine, inference router |
183183
| Purple | Agent process & isolation | AI agent, Landlock, Seccomp, network namespace |
Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
# Gator: NemoClaw TUI
1+
# NemoClaw TUI
22

3-
Gator is a terminal user interface for NemoClaw, inspired by [k9s](https://k9scli.io/). Instead of typing individual CLI commands to check cluster health, list sandboxes, and manage resources, Gator gives you a real-time, keyboard-driven dashboard — everything updates automatically and you navigate with a few keystrokes.
3+
The NemoClaw TUI is a terminal user interface for NemoClaw, inspired by [k9s](https://k9scli.io/). Instead of typing individual CLI commands to check cluster health, list sandboxes, and manage resources, the TUI gives you a real-time, keyboard-driven dashboard — everything updates automatically and you navigate with a few keystrokes.
44

5-
## Launching Gator
5+
## Launching the TUI
66

7-
Gator is a subcommand of the NemoClaw CLI, so it inherits all your existing configuration — cluster selection, TLS settings, and verbosity flags all work the same way.
7+
The TUI is a subcommand of the NemoClaw CLI, so it inherits all your existing configuration — cluster selection, TLS settings, and verbosity flags all work the same way.
88

99
```bash
10-
nemoclaw gator # launch against the active cluster
11-
nav gator # dev alias (builds from source)
12-
nav gator --cluster prod # target a specific cluster
13-
NEMOCLAW_CLUSTER=prod nav gator # same thing, via environment variable
10+
nemoclaw term # launch against the active cluster
11+
nav term # dev alias (builds from source)
12+
nav term --cluster prod # target a specific cluster
13+
NEMOCLAW_CLUSTER=prod nav term # same thing, via environment variable
1414
```
1515

1616
Cluster resolution follows the same priority as the rest of the CLI:
@@ -23,11 +23,11 @@ No separate configuration files or authentication are needed.
2323

2424
## Screen Layout
2525

26-
Gator divides the terminal into four horizontal regions:
26+
The TUI divides the terminal into four horizontal regions:
2727

2828
```
2929
┌─────────────────────────────────────────────────────────────────┐
30-
gator ─ my-cluster ─ Dashboard ● Healthy │ ← title bar
30+
NemoClaw ─ my-cluster ─ Dashboard ● Healthy │ ← title bar
3131
├─────────────────────────────────────────────────────────────────┤
3232
│ │
3333
│ (view content — Dashboard or Sandboxes) │ ← main area
@@ -39,7 +39,7 @@ Gator divides the terminal into four horizontal regions:
3939
└─────────────────────────────────────────────────────────────────┘
4040
```
4141

42-
- **Title bar** — shows the Gator logo, cluster name, current view, and live cluster health status.
42+
- **Title bar** — shows the NemoClaw logo, cluster name, current view, and live cluster health status.
4343
- **Main area** — the active view (Dashboard or Sandboxes).
4444
- **Navigation bar** — lists available views with their shortcut keys, plus Help and Quit.
4545
- **Command bar** — appears when you press `:` to type a command (like vim).
@@ -84,7 +84,7 @@ When there are no sandboxes, the view displays: *"No sandboxes found."*
8484

8585
## Keyboard Controls
8686

87-
Gator has two input modes: **Normal** (default) and **Command** (activated by pressing `:`).
87+
The TUI has two input modes: **Normal** (default) and **Command** (activated by pressing `:`).
8888

8989
### Normal Mode
9090

@@ -95,7 +95,7 @@ Gator has two input modes: **Normal** (default) and **Command** (activated by pr
9595
| `j` or `` | Move selection down |
9696
| `k` or `` | Move selection up |
9797
| `:` | Enter command mode |
98-
| `q` | Quit Gator |
98+
| `q` | Quit |
9999
| `Ctrl+C` | Force quit |
100100

101101
### Command Mode
@@ -104,19 +104,19 @@ Press `:` to open the command bar at the bottom of the screen. Type a command an
104104

105105
| Command | Action |
106106
|---------|--------|
107-
| `quit` or `q` | Quit Gator |
107+
| `quit` or `q` | Quit |
108108
| `dashboard` or `1` | Switch to Dashboard view |
109109
| `sandboxes` or `2` | Switch to Sandboxes view |
110110

111111
Press `Esc` to cancel and return to Normal mode. `Backspace` deletes characters as you type.
112112

113113
## Data Refresh
114114

115-
Gator automatically polls the cluster every **2 seconds**. Both cluster health and the sandbox list update on each tick, so the display stays current without manual refreshing. This uses the same gRPC calls as the CLI — no additional server-side setup is required.
115+
The TUI automatically polls the cluster every **2 seconds**. Both cluster health and the sandbox list update on each tick, so the display stays current without manual refreshing. This uses the same gRPC calls as the CLI — no additional server-side setup is required.
116116

117117
## Theme
118118

119-
Gator uses a dark terminal theme based on the NVIDIA brand palette:
119+
The TUI uses a dark terminal theme based on the NVIDIA brand palette:
120120

121121
- **Background**: Black — the standard terminal background.
122122
- **Text**: White for primary content, dimmed white for labels and secondary information.
@@ -128,30 +128,28 @@ The title bar uses white text on an Everglade background to visually anchor the
128128

129129
## Port Forwarding
130130

131-
Gator supports creating sandboxes with port forwarding directly from the create modal. When creating a sandbox, you can specify ports to forward in the **Ports** field (comma-separated, e.g., `8080,3000`). After the sandbox reaches `Ready` state, Gator automatically spawns background SSH tunnels (`ssh -N -f -L <port>:127.0.0.1:<port>`) for each specified port.
131+
The TUI supports creating sandboxes with port forwarding directly from the create modal. When creating a sandbox, you can specify ports to forward in the **Ports** field (comma-separated, e.g., `8080,3000`). After the sandbox reaches `Ready` state, the TUI automatically spawns background SSH tunnels (`ssh -N -f -L <port>:127.0.0.1:<port>`) for each specified port.
132132

133133
Forwarded ports are displayed in the **NOTES** column of the sandbox table as `fwd:8080,3000` and in the **Forwards** row of the sandbox detail view.
134134

135135
Port forwarding lifecycle:
136-
- **On create**: Gator polls for sandbox readiness (up to 30 attempts at 2-second intervals), then spawns SSH tunnels.
136+
- **On create**: The TUI polls for sandbox readiness (up to 30 attempts at 2-second intervals), then spawns SSH tunnels.
137137
- **On delete**: Any active forwards for the sandbox are automatically stopped before deletion.
138138
- **PID tracking**: Forward PIDs are stored in `~/.config/nemoclaw/forwards/<name>-<port>.pid`, shared with the CLI.
139139

140140
The forwarding implementation lives in `navigator-core::forward`, shared between the CLI and TUI.
141141

142142
## What is Not Yet Available
143143

144-
Gator is in its initial phase. The following features are planned but not yet implemented:
144+
The TUI is in its initial phase. The following features are planned but not yet implemented:
145145

146146
- **Inference and provider views** — browsing inference routes and provider configurations.
147147
- **Help overlay** — the `?` key is shown in the nav bar but does not open a help screen yet.
148148
- **Command bar autocomplete** — the command bar accepts text but does not offer suggestions.
149149
- **Filtering and search** — no `/` search within views yet.
150150

151-
See the [Gator design plan](plans/gator-tui.md) for the full roadmap, including mockups and future phases.
152-
153151
## Crate Structure
154152

155-
The TUI lives in `crates/navigator-tui/`, a separate workspace crate. The CLI crate (`crates/navigator-cli/`) depends on it and launches it via the `Gator` command variant in the `Commands` enum. This keeps TUI-specific dependencies (ratatui, crossterm) out of the CLI when not in use.
153+
The TUI lives in `crates/navigator-tui/`, a separate workspace crate. The CLI crate (`crates/navigator-cli/`) depends on it and launches it via the `Term` command variant in the `Commands` enum. This keeps TUI-specific dependencies (ratatui, crossterm) out of the CLI when not in use.
156154

157155
The `navigator-tui` crate depends on `navigator-core` for protobuf types, the gRPC client, and shared utilities (e.g., `navigator_core::forward` for port forwarding PID management) — it communicates with the gateway over the same gRPC channel the CLI uses.

crates/navigator-cli/src/main.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,8 @@ enum Commands {
142142
command: ProviderCommands,
143143
},
144144

145-
/// Launch the Gator interactive TUI.
146-
Gator,
145+
/// Launch the NemoClaw interactive TUI.
146+
Term,
147147

148148
/// Generate shell completions.
149149
#[command(after_long_help = COMPLETIONS_HELP)]
@@ -1285,7 +1285,7 @@ async fn main() -> Result<()> {
12851285
}
12861286
}
12871287
}
1288-
Some(Commands::Gator) => {
1288+
Some(Commands::Term) => {
12891289
let ctx = resolve_cluster(&cli.cluster)?;
12901290
let tls = tls.with_cluster_name(&ctx.name);
12911291
let channel = navigator_cli::tls::build_channel(&ctx.endpoint, &tls).await?;

crates/navigator-tui/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
[package]
55
name = "navigator-tui"
6-
description = "Gator – NemoClaw interactive TUI"
6+
description = "NemoClaw interactive TUI"
77
version.workspace = true
88
edition.workspace = true
99
rust-version.workspace = true

crates/navigator-tui/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ use tonic::transport::{Certificate, Channel, ClientTlsConfig, Endpoint, Identity
2525
use app::{App, ClusterEntry, Focus, LogLine, Screen};
2626
use event::{Event, EventHandler};
2727

28-
/// Launch the Gator TUI.
28+
/// Launch the NemoClaw TUI.
2929
///
3030
/// `channel` must be a connected gRPC channel to the NemoClaw gateway.
3131
pub async fn run(channel: Channel, cluster_name: &str, endpoint: &str) -> Result<()> {

crates/navigator-tui/src/ui/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ fn draw_title_bar(frame: &mut Frame<'_>, app: &App, area: Rect) {
9898
};
9999

100100
let mut parts: Vec<Span<'_>> = vec![
101-
Span::styled(" Gator", styles::ACCENT_BOLD),
101+
Span::styled(" NemoClaw", styles::ACCENT_BOLD),
102102
Span::styled(" | ", styles::MUTED),
103103
Span::styled("Current Cluster: ", styles::TEXT),
104104
Span::styled(&app.cluster_name, styles::HEADING),

0 commit comments

Comments
 (0)