gtm-pilot 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,14 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ .venv/
4
+ build/
5
+ dist/
6
+ *.egg-info/
7
+ .pytest_cache/
8
+ .ruff_cache/
9
+ .coverage
10
+ htmlcov/
11
+
12
+ # Recordings and snapshots can hold paths, command lines and model names
13
+ *.jsonl
14
+ gpu-sessions/
@@ -0,0 +1,29 @@
1
+ # Changelog
2
+
3
+ All notable changes to FileX are documented here.
4
+ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
5
+
6
+ ---
7
+
8
+ ## [1.0.0](https://github.com/Madhur-Prakash/gtm-pilot/releases/tag/v1.0.0) - 2026-11-15
9
+
10
+ First stable release.
11
+
12
+ - Menu for gputaskman's live view, snapshot, record, summary, replay, diff and `--list-gpus`.
13
+ - Forms with GPU picker and interval/duration presets (or a custom number of seconds).
14
+ - Record Session with a live sample count, progress for timed recordings, a Stop button, and
15
+ the summary afterwards.
16
+ - Measure a Change: before snapshot, pause, after snapshot, diff, with files named after what
17
+ you measure.
18
+ - One-key shortcuts for every menu action (shown in the footer and the list), and a `?` page
19
+ listing every key.
20
+ - Path autocomplete in the file picker: inline suggestion (Tab or → accepts) and a live list
21
+ of matching folders and files.
22
+ - Actions an installed gputaskman can't do yet are greyed out instead of failing.
23
+ - If gputaskman isn't found, an error screen shows how to install it (uv tool or from source),
24
+ and `r` looks again. If gputaskman is found but fails, the menu says why.
25
+ - `--sessions` / `GTM_PILOT_SESSIONS` and `--gputaskman` / `GTM_PILOT_GPUTASKMAN`.
26
+ - Root-level `gtm_pilot` package layout with support for editable installation using
27
+ `pip install -e .`.
28
+ - Refreshed project documentation with installation, configuration, keyboard, data-file,
29
+ compatibility, and development guidance.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Madhur Prakash
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,293 @@
1
+ Metadata-Version: 2.5
2
+ Name: gtm-pilot
3
+ Version: 1.0.0
4
+ Summary: A guided menu for gputaskman: live view, snapshots, recordings, summaries and before/after diffs without remembering the flags. Unofficial companion.
5
+ Project-URL: Repository, https://github.com/Madhur-Prakash/gtm-pilot
6
+ Project-URL: Documentation, https://github.com/Madhur-Prakash/gtm-pilot#readme
7
+ Project-URL: Homepage, https://github.com/Madhur-Prakash/gtm-pilot
8
+ Project-URL: Issues, https://github.com/Madhur-Prakash/gtm-pilot/issues
9
+ Project-URL: gputaskman, https://github.com/shanselman/gputaskman
10
+ Author-email: Madhur Prakash <madhurprakash2005@gmail.com>
11
+ License-Expression: MIT
12
+ License-File: LICENSE
13
+ Keywords: gpu,gputaskman,monitoring,textual,tui,vram
14
+ Classifier: Development Status :: 3 - Alpha
15
+ Classifier: Environment :: Console
16
+ Classifier: Intended Audience :: Developers
17
+ Classifier: Operating System :: MacOS
18
+ Classifier: Operating System :: Microsoft :: Windows
19
+ Classifier: Operating System :: POSIX :: Linux
20
+ Classifier: Programming Language :: Python :: 3
21
+ Classifier: Topic :: System :: Monitoring
22
+ Requires-Python: >=3.11
23
+ Requires-Dist: textual>=8.2.8
24
+ Description-Content-Type: text/markdown
25
+
26
+ <div align="center">
27
+
28
+ # gtm-pilot
29
+
30
+ <p>A guided terminal interface for <a href="https://github.com/shanselman/gputaskman">gputaskman</a>.</p>
31
+
32
+ <p>
33
+ <a href="https://www.python.org/"><img src="https://img.shields.io/badge/python-3.11%2B-3776AB.svg" alt="Python 3.11 or newer"></a>
34
+ <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-2ea44f.svg" alt="MIT License"></a>
35
+ <a href="https://textual.textualize.io/"><img src="https://img.shields.io/badge/built%20with-Textual-6f42c1.svg" alt="Built with Textual"></a>
36
+ <a href="https://github.com/shanselman/gputaskman"><img src="https://img.shields.io/badge/backend-gputaskman-24292f.svg" alt="Backend: gputaskman"></a>
37
+ </p>
38
+
39
+ </div>
40
+
41
+ gtm-pilot brings live GPU monitoring, snapshots, recordings, summaries, replays, and
42
+ before-and-after comparisons into one focused menu. It runs the `gputaskman` executable
43
+ already installed on your machine and presents its output without changing measurements,
44
+ labels, process names, or `n/a` values.
45
+
46
+ gtm-pilot is an unofficial companion. It is not part of or affiliated with gputaskman.
47
+
48
+ ## Contents
49
+
50
+ - [Features](#features)
51
+ - [Requirements](#requirements)
52
+ - [Installation](#installation)
53
+ - [Usage](#usage)
54
+ - [Configuration](#configuration)
55
+ - [Data files](#data-files)
56
+ - [How it works](#how-it-works)
57
+ - [Development](#development)
58
+ - [License](#license)
59
+
60
+ ## Features
61
+
62
+ - GPU selection from a detected adapter list.
63
+ - Live View with configurable refresh intervals.
64
+ - One-shot GPU snapshots.
65
+ - Time-based or manually stopped recording sessions.
66
+ - Live recording sample counts and progress.
67
+ - Recording summaries and offline replays.
68
+ - Before-and-after measurements for model loads and scripts.
69
+ - Comparisons between saved JSON snapshots.
70
+ - Recent-file browsing with path autocomplete.
71
+ - Cross-platform sessions-folder opening.
72
+ - Keyboard shortcuts and a built-in key reference.
73
+ - Compatibility detection for older gputaskman installations.
74
+ - Explicit error messages when gputaskman is missing or a command fails.
75
+
76
+ ## Requirements
77
+
78
+ - Python 3.11 or newer.
79
+ - [gputaskman](https://github.com/shanselman/gputaskman), available as `gputaskman`
80
+ or `gtm` on `PATH`.
81
+ - A terminal that supports Textual applications.
82
+
83
+ gtm-pilot does not install gputaskman automatically. It uses the executable you provide or
84
+ the first compatible executable it discovers.
85
+
86
+ ## Installation
87
+
88
+ ### Install gputaskman
89
+
90
+ Install a released version with uv:
91
+
92
+ ```powershell
93
+ uv tool install gputaskman
94
+ ```
95
+
96
+ For the newest commands, install from source:
97
+
98
+ ```powershell
99
+ uv tool install --force git+https://github.com/shanselman/gputaskman
100
+ ```
101
+
102
+ gtm-pilot uses the `summary` and `replay` commands. Run the following to check the
103
+ commands provided by your installation:
104
+
105
+ ```powershell
106
+ gputaskman --help
107
+ ```
108
+
109
+ ### Install gtm-pilot
110
+
111
+ Install the published tool:
112
+
113
+ ```powershell
114
+ uv tool install gtm-pilot
115
+ ```
116
+
117
+ Or install the current checkout:
118
+
119
+ ```powershell
120
+ git clone https://github.com/Madhur-Prakash/gtm-pilot
121
+ cd gtm-pilot
122
+ pip install -e .
123
+ ```
124
+
125
+ The editable install keeps source changes available immediately during development.
126
+
127
+ ## Usage
128
+
129
+ Start the application:
130
+
131
+ ```powershell
132
+ gtm-pilot
133
+ ```
134
+
135
+ You can also start the package module directly:
136
+
137
+ ```powershell
138
+ python -m gtm_pilot
139
+ ```
140
+
141
+ ### Menu actions
142
+
143
+ | Key | Action | Description |
144
+ |---|---|---|
145
+ | `l` | Live View | Opens gputaskman's full-screen monitor. |
146
+ | `s` | Snapshot | Captures one reading for a selected GPU. |
147
+ | `n` | Record Session | Records GPU usage to a JSONL file. |
148
+ | `u` | Summarize Recording | Summarizes a saved recording. |
149
+ | `p` | Replay Recording | Replays a recording offline. |
150
+ | `m` | Measure a Change | Captures before and after snapshots, then runs a diff. |
151
+ | `c` | Compare Snapshots | Diffs two saved snapshots. |
152
+ | `g` | List GPUs | Displays GPU indexes and adapter details. |
153
+ | `o` | Open Sessions Folder | Opens the folder containing saved data. |
154
+ | `r` | Refresh GPUs | Refreshes the detected GPU list. |
155
+ | `?` | Show Keys | Opens the complete keyboard reference. |
156
+ | `q` | Quit | Exits gtm-pilot. |
157
+
158
+ ### Keyboard reference
159
+
160
+ | Context | Keys | Action |
161
+ |---|---|---|
162
+ | Menu | Arrow keys, `Enter` | Navigate and select |
163
+ | Forms | `Tab`, `Shift+Tab`, `Enter`, `Esc` | Move, submit, or cancel |
164
+ | File picker | `Tab` or `Right Arrow` | Complete the current path |
165
+ | File picker | `Down Arrow` | Move from the path field to the list |
166
+ | File picker | `Enter` | Open a file or enter a folder |
167
+ | Recording | `s` or `Esc` | Stop recording |
168
+ | Output | Arrow keys, `Page Up`, `Page Down` | Scroll output |
169
+ | Output | `Esc`, `q`, `Enter` | Return to the menu |
170
+ | Anywhere | `Ctrl+P` | Open Textual's command palette |
171
+ | Anywhere | `Ctrl+Q` | Quit |
172
+
173
+ ## Configuration
174
+
175
+ | Command-line option | Environment variable | Default |
176
+ |---|---|---|
177
+ | `--sessions DIR` | `GTM_PILOT_SESSIONS` | `~/gpu-sessions` |
178
+ | `--gputaskman PATH` | `GTM_PILOT_GPUTASKMAN` | `gputaskman`, then `gtm` on `PATH` |
179
+
180
+ Examples:
181
+
182
+ ```powershell
183
+ gtm-pilot --sessions D:\gpu-runs
184
+ gtm-pilot --gputaskman D:\tools\gputaskman.exe
185
+ ```
186
+
187
+ Command-line options take precedence over environment variables. Additional options:
188
+
189
+ ```powershell
190
+ gtm-pilot --help
191
+ gtm-pilot --version
192
+ ```
193
+
194
+ ## Data files
195
+
196
+ Saved data defaults to:
197
+
198
+ ```text
199
+ ~/gpu-sessions
200
+ ```
201
+
202
+ On Windows, this typically resolves to:
203
+
204
+ ```text
205
+ C:\Users\<username>\gpu-sessions
206
+ ```
207
+
208
+ Recordings use `.jsonl` files:
209
+
210
+ ```text
211
+ session_2026-11-13_21-18.jsonl
212
+ ```
213
+
214
+ Measurements use paired `.json` files:
215
+
216
+ ```text
217
+ llama3.1-8b_2026-11-13_21-10_before.json
218
+ llama3.1-8b_2026-11-13_21-10_after.json
219
+ ```
220
+
221
+ File behavior:
222
+
223
+ - Existing recordings are appended to by gputaskman.
224
+ - Snapshots are never overwritten.
225
+ - Repeated measurements receive `-2`, `-3`, and later suffixes.
226
+ - Measurement labels are made filesystem-safe and limited to 40 characters.
227
+ - File pickers show recent files first, with folders before matching files.
228
+ - Path matching is case-insensitive and preserves the separator style being typed.
229
+ - Hidden files are shown only when the typed name begins with a dot.
230
+
231
+ Review recordings and snapshots before sharing them. They may contain process names,
232
+ paths, command lines, and model names from gputaskman's JSON output.
233
+
234
+ ## Compatibility and error handling
235
+
236
+ gtm-pilot discovers gputaskman in this order:
237
+
238
+ 1. The path passed with `--gputaskman`.
239
+ 2. `GTM_PILOT_GPUTASKMAN`.
240
+ 3. `gputaskman` on `PATH`.
241
+ 4. `gtm` on `PATH`.
242
+ 5. The default `~/.local/bin` tool location.
243
+
244
+ The application checks `gputaskman --help` for the `diff`, `record`, `summary`, and
245
+ `replay` commands. Actions unavailable in the installed version are disabled with an
246
+ explanation.
247
+
248
+ If gputaskman cannot be found, gtm-pilot shows installation guidance. Press `r` after
249
+ installing it to search again. If a command fails, its error output is displayed instead
250
+ of being silently discarded.
251
+
252
+ ## How it works
253
+
254
+ - gtm-pilot does not read GPU data directly or add monitoring probes.
255
+ - Every measurement comes from the installed gputaskman executable.
256
+ - Text-producing commands run away from the UI thread and appear in scrollable output pages.
257
+ - Live View and Replay hand the terminal to gputaskman's own full-screen interface.
258
+ - Record Session counts complete samples as they are written.
259
+ - On Linux and macOS, stopping a recording sends `SIGINT`.
260
+ - On Windows, stopping a background recording terminates its process after finished samples
261
+ have been preserved.
262
+ - Windows captured commands run without opening an extra console window.
263
+
264
+ ## Development
265
+
266
+ The package uses a root-level `gtm_pilot/` layout and Hatchling as its build backend.
267
+
268
+ ```powershell
269
+ pip install -e .
270
+ python -m unittest discover -s tests
271
+ uv build
272
+ ```
273
+
274
+ Project layout:
275
+
276
+ ```text
277
+ gtm_pilot/
278
+ cli.py command-line entry point
279
+ app.py Textual application and action dispatch
280
+ gputaskman.py executable discovery and command execution
281
+ commands.py gputaskman argument builders
282
+ sessions.py session paths and filenames
283
+ pathcomplete.py file-picker autocomplete
284
+ pilot.tcss Textual styles
285
+ screens/ application screens and dialogs
286
+ tests/ unit and UI tests using a fake gputaskman
287
+ ```
288
+
289
+ ## License
290
+
291
+ gtm-pilot is released under the [MIT License](LICENSE).
292
+
293
+ gputaskman is a separate project by Scott Hanselman and remains under its own license.
@@ -0,0 +1,268 @@
1
+ <div align="center">
2
+
3
+ # gtm-pilot
4
+
5
+ <p>A guided terminal interface for <a href="https://github.com/shanselman/gputaskman">gputaskman</a>.</p>
6
+
7
+ <p>
8
+ <a href="https://www.python.org/"><img src="https://img.shields.io/badge/python-3.11%2B-3776AB.svg" alt="Python 3.11 or newer"></a>
9
+ <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-2ea44f.svg" alt="MIT License"></a>
10
+ <a href="https://textual.textualize.io/"><img src="https://img.shields.io/badge/built%20with-Textual-6f42c1.svg" alt="Built with Textual"></a>
11
+ <a href="https://github.com/shanselman/gputaskman"><img src="https://img.shields.io/badge/backend-gputaskman-24292f.svg" alt="Backend: gputaskman"></a>
12
+ </p>
13
+
14
+ </div>
15
+
16
+ gtm-pilot brings live GPU monitoring, snapshots, recordings, summaries, replays, and
17
+ before-and-after comparisons into one focused menu. It runs the `gputaskman` executable
18
+ already installed on your machine and presents its output without changing measurements,
19
+ labels, process names, or `n/a` values.
20
+
21
+ gtm-pilot is an unofficial companion. It is not part of or affiliated with gputaskman.
22
+
23
+ ## Contents
24
+
25
+ - [Features](#features)
26
+ - [Requirements](#requirements)
27
+ - [Installation](#installation)
28
+ - [Usage](#usage)
29
+ - [Configuration](#configuration)
30
+ - [Data files](#data-files)
31
+ - [How it works](#how-it-works)
32
+ - [Development](#development)
33
+ - [License](#license)
34
+
35
+ ## Features
36
+
37
+ - GPU selection from a detected adapter list.
38
+ - Live View with configurable refresh intervals.
39
+ - One-shot GPU snapshots.
40
+ - Time-based or manually stopped recording sessions.
41
+ - Live recording sample counts and progress.
42
+ - Recording summaries and offline replays.
43
+ - Before-and-after measurements for model loads and scripts.
44
+ - Comparisons between saved JSON snapshots.
45
+ - Recent-file browsing with path autocomplete.
46
+ - Cross-platform sessions-folder opening.
47
+ - Keyboard shortcuts and a built-in key reference.
48
+ - Compatibility detection for older gputaskman installations.
49
+ - Explicit error messages when gputaskman is missing or a command fails.
50
+
51
+ ## Requirements
52
+
53
+ - Python 3.11 or newer.
54
+ - [gputaskman](https://github.com/shanselman/gputaskman), available as `gputaskman`
55
+ or `gtm` on `PATH`.
56
+ - A terminal that supports Textual applications.
57
+
58
+ gtm-pilot does not install gputaskman automatically. It uses the executable you provide or
59
+ the first compatible executable it discovers.
60
+
61
+ ## Installation
62
+
63
+ ### Install gputaskman
64
+
65
+ Install a released version with uv:
66
+
67
+ ```powershell
68
+ uv tool install gputaskman
69
+ ```
70
+
71
+ For the newest commands, install from source:
72
+
73
+ ```powershell
74
+ uv tool install --force git+https://github.com/shanselman/gputaskman
75
+ ```
76
+
77
+ gtm-pilot uses the `summary` and `replay` commands. Run the following to check the
78
+ commands provided by your installation:
79
+
80
+ ```powershell
81
+ gputaskman --help
82
+ ```
83
+
84
+ ### Install gtm-pilot
85
+
86
+ Install the published tool:
87
+
88
+ ```powershell
89
+ uv tool install gtm-pilot
90
+ ```
91
+
92
+ Or install the current checkout:
93
+
94
+ ```powershell
95
+ git clone https://github.com/Madhur-Prakash/gtm-pilot
96
+ cd gtm-pilot
97
+ pip install -e .
98
+ ```
99
+
100
+ The editable install keeps source changes available immediately during development.
101
+
102
+ ## Usage
103
+
104
+ Start the application:
105
+
106
+ ```powershell
107
+ gtm-pilot
108
+ ```
109
+
110
+ You can also start the package module directly:
111
+
112
+ ```powershell
113
+ python -m gtm_pilot
114
+ ```
115
+
116
+ ### Menu actions
117
+
118
+ | Key | Action | Description |
119
+ |---|---|---|
120
+ | `l` | Live View | Opens gputaskman's full-screen monitor. |
121
+ | `s` | Snapshot | Captures one reading for a selected GPU. |
122
+ | `n` | Record Session | Records GPU usage to a JSONL file. |
123
+ | `u` | Summarize Recording | Summarizes a saved recording. |
124
+ | `p` | Replay Recording | Replays a recording offline. |
125
+ | `m` | Measure a Change | Captures before and after snapshots, then runs a diff. |
126
+ | `c` | Compare Snapshots | Diffs two saved snapshots. |
127
+ | `g` | List GPUs | Displays GPU indexes and adapter details. |
128
+ | `o` | Open Sessions Folder | Opens the folder containing saved data. |
129
+ | `r` | Refresh GPUs | Refreshes the detected GPU list. |
130
+ | `?` | Show Keys | Opens the complete keyboard reference. |
131
+ | `q` | Quit | Exits gtm-pilot. |
132
+
133
+ ### Keyboard reference
134
+
135
+ | Context | Keys | Action |
136
+ |---|---|---|
137
+ | Menu | Arrow keys, `Enter` | Navigate and select |
138
+ | Forms | `Tab`, `Shift+Tab`, `Enter`, `Esc` | Move, submit, or cancel |
139
+ | File picker | `Tab` or `Right Arrow` | Complete the current path |
140
+ | File picker | `Down Arrow` | Move from the path field to the list |
141
+ | File picker | `Enter` | Open a file or enter a folder |
142
+ | Recording | `s` or `Esc` | Stop recording |
143
+ | Output | Arrow keys, `Page Up`, `Page Down` | Scroll output |
144
+ | Output | `Esc`, `q`, `Enter` | Return to the menu |
145
+ | Anywhere | `Ctrl+P` | Open Textual's command palette |
146
+ | Anywhere | `Ctrl+Q` | Quit |
147
+
148
+ ## Configuration
149
+
150
+ | Command-line option | Environment variable | Default |
151
+ |---|---|---|
152
+ | `--sessions DIR` | `GTM_PILOT_SESSIONS` | `~/gpu-sessions` |
153
+ | `--gputaskman PATH` | `GTM_PILOT_GPUTASKMAN` | `gputaskman`, then `gtm` on `PATH` |
154
+
155
+ Examples:
156
+
157
+ ```powershell
158
+ gtm-pilot --sessions D:\gpu-runs
159
+ gtm-pilot --gputaskman D:\tools\gputaskman.exe
160
+ ```
161
+
162
+ Command-line options take precedence over environment variables. Additional options:
163
+
164
+ ```powershell
165
+ gtm-pilot --help
166
+ gtm-pilot --version
167
+ ```
168
+
169
+ ## Data files
170
+
171
+ Saved data defaults to:
172
+
173
+ ```text
174
+ ~/gpu-sessions
175
+ ```
176
+
177
+ On Windows, this typically resolves to:
178
+
179
+ ```text
180
+ C:\Users\<username>\gpu-sessions
181
+ ```
182
+
183
+ Recordings use `.jsonl` files:
184
+
185
+ ```text
186
+ session_2026-11-13_21-18.jsonl
187
+ ```
188
+
189
+ Measurements use paired `.json` files:
190
+
191
+ ```text
192
+ llama3.1-8b_2026-11-13_21-10_before.json
193
+ llama3.1-8b_2026-11-13_21-10_after.json
194
+ ```
195
+
196
+ File behavior:
197
+
198
+ - Existing recordings are appended to by gputaskman.
199
+ - Snapshots are never overwritten.
200
+ - Repeated measurements receive `-2`, `-3`, and later suffixes.
201
+ - Measurement labels are made filesystem-safe and limited to 40 characters.
202
+ - File pickers show recent files first, with folders before matching files.
203
+ - Path matching is case-insensitive and preserves the separator style being typed.
204
+ - Hidden files are shown only when the typed name begins with a dot.
205
+
206
+ Review recordings and snapshots before sharing them. They may contain process names,
207
+ paths, command lines, and model names from gputaskman's JSON output.
208
+
209
+ ## Compatibility and error handling
210
+
211
+ gtm-pilot discovers gputaskman in this order:
212
+
213
+ 1. The path passed with `--gputaskman`.
214
+ 2. `GTM_PILOT_GPUTASKMAN`.
215
+ 3. `gputaskman` on `PATH`.
216
+ 4. `gtm` on `PATH`.
217
+ 5. The default `~/.local/bin` tool location.
218
+
219
+ The application checks `gputaskman --help` for the `diff`, `record`, `summary`, and
220
+ `replay` commands. Actions unavailable in the installed version are disabled with an
221
+ explanation.
222
+
223
+ If gputaskman cannot be found, gtm-pilot shows installation guidance. Press `r` after
224
+ installing it to search again. If a command fails, its error output is displayed instead
225
+ of being silently discarded.
226
+
227
+ ## How it works
228
+
229
+ - gtm-pilot does not read GPU data directly or add monitoring probes.
230
+ - Every measurement comes from the installed gputaskman executable.
231
+ - Text-producing commands run away from the UI thread and appear in scrollable output pages.
232
+ - Live View and Replay hand the terminal to gputaskman's own full-screen interface.
233
+ - Record Session counts complete samples as they are written.
234
+ - On Linux and macOS, stopping a recording sends `SIGINT`.
235
+ - On Windows, stopping a background recording terminates its process after finished samples
236
+ have been preserved.
237
+ - Windows captured commands run without opening an extra console window.
238
+
239
+ ## Development
240
+
241
+ The package uses a root-level `gtm_pilot/` layout and Hatchling as its build backend.
242
+
243
+ ```powershell
244
+ pip install -e .
245
+ python -m unittest discover -s tests
246
+ uv build
247
+ ```
248
+
249
+ Project layout:
250
+
251
+ ```text
252
+ gtm_pilot/
253
+ cli.py command-line entry point
254
+ app.py Textual application and action dispatch
255
+ gputaskman.py executable discovery and command execution
256
+ commands.py gputaskman argument builders
257
+ sessions.py session paths and filenames
258
+ pathcomplete.py file-picker autocomplete
259
+ pilot.tcss Textual styles
260
+ screens/ application screens and dialogs
261
+ tests/ unit and UI tests using a fake gputaskman
262
+ ```
263
+
264
+ ## License
265
+
266
+ gtm-pilot is released under the [MIT License](LICENSE).
267
+
268
+ gputaskman is a separate project by Scott Hanselman and remains under its own license.
@@ -0,0 +1,8 @@
1
+ """gtm-pilot: a guided menu for gputaskman."""
2
+
3
+ from importlib.metadata import PackageNotFoundError, version
4
+
5
+ try:
6
+ __version__ = version("gtm-pilot")
7
+ except PackageNotFoundError: # running from a source tree that isn't installed
8
+ __version__ = "0.0.0"
@@ -0,0 +1,5 @@
1
+ """python -m gtm_pilot"""
2
+
3
+ from .cli import main
4
+
5
+ raise SystemExit(main())