@bramblex/codex-workbench 0.1.13 → 0.1.14
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.
- package/README.md +54 -101
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# codex-workbench
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> A keyboard-driven terminal UI for browsing, organizing, and resuming [Codex](https://github.com/openai/codex) sessions — locally and across SSH remotes.
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/@bramblex/codex-workbench)
|
|
6
6
|
[](LICENSE)
|
|
@@ -8,25 +8,17 @@
|
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
codex-workbench gives you a fast, keyboard-driven terminal UI over your Codex sessions. It reads session JSONL files from the Codex sessions directory and lets you **inspect, rename, annotate, fork, archive, hide, and delete** sessions without digging through `~/.codex/sessions/` by hand.
|
|
11
|
+

|
|
14
12
|
|
|
15
|
-
|
|
13
|
+
---
|
|
16
14
|
|
|
17
|
-
|
|
15
|
+
## What is it?
|
|
18
16
|
|
|
19
|
-
|
|
17
|
+
codex-workbench is an **interactive terminal UI** for your Codex sessions. Instead of digging through `~/.codex/sessions/` by hand, you get a fast, keyboard-driven interface to **browse, search, rename, annotate, fork, archive, and delete** sessions — all without leaving the terminal.
|
|
20
18
|
|
|
21
|
-
|
|
19
|
+
It also connects to **remote machines over SSH**, so you can manage Codex sessions across all your servers from a single pane of glass.
|
|
22
20
|
|
|
23
|
-
|
|
24
|
-
- **Remote SSH sources** — browse and manage sessions on distant machines with zero remote dependencies beyond `codex-workbench` itself
|
|
25
|
-
- **Session metadata** — assign custom names and notes, hide stale sessions without deleting them
|
|
26
|
-
- **One-key actions** — resume, fork, archive, or delete sessions from the keyboard
|
|
27
|
-
- **Directory picker** — navigate the filesystem to start new sessions in any project
|
|
28
|
-
- **JSON output** — pipe `list --json` into `jq` or other tools
|
|
29
|
-
- **Short aliases** — installed as both `codex-workbench` and `cwb`
|
|
21
|
+
A handful of CLI subcommands are available for scripting, but the TUI is the product.
|
|
30
22
|
|
|
31
23
|
---
|
|
32
24
|
|
|
@@ -36,93 +28,22 @@ Run it without arguments to open the interactive TUI, or use the CLI subcommands
|
|
|
36
28
|
npm install -g @bramblex/codex-workbench
|
|
37
29
|
```
|
|
38
30
|
|
|
39
|
-
|
|
31
|
+
Verify Codex is reachable, then open the workbench:
|
|
40
32
|
|
|
41
33
|
```bash
|
|
42
34
|
codex-workbench doctor
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
Then open the workbench:
|
|
46
|
-
|
|
47
|
-
```bash
|
|
48
|
-
codex-workbench
|
|
49
|
-
# or just:
|
|
50
35
|
cwb
|
|
51
36
|
```
|
|
52
37
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
## CLI commands
|
|
56
|
-
|
|
57
|
-
### Browse sessions
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
codex-workbench list # human-readable, grouped by source + project
|
|
61
|
-
codex-workbench list --json # machine-readable full output
|
|
62
|
-
codex-workbench list --json --compact # omit message history (faster for scripting)
|
|
63
|
-
codex-workbench list --cwd ~/projects/foo # filter to one working directory
|
|
64
|
-
codex-workbench list --all # include archived and hidden sessions
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
### Inspect a session
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
codex-workbench show <session>
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
`<session>` can be a full session id, a unique prefix, a saved custom name, or a session filename.
|
|
74
|
-
|
|
75
|
-
### Manage sessions
|
|
76
|
-
|
|
77
|
-
```bash
|
|
78
|
-
codex-workbench rename <session> "fix the auth bug"
|
|
79
|
-
codex-workbench note <session> "investigated JWT expiry, seems to be clock skew"
|
|
80
|
-
codex-workbench archive <session>
|
|
81
|
-
codex-workbench unarchive <session>
|
|
82
|
-
codex-workbench hide <session> # remove from default list but keep on disk
|
|
83
|
-
codex-workbench unhide <session>
|
|
84
|
-
codex-workbench fork <session>
|
|
85
|
-
codex-workbench delete <session> --force
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
### Start and resume
|
|
89
|
-
|
|
90
|
-
```bash
|
|
91
|
-
codex-workbench new --cwd ~/projects/foo "Summarize this repo"
|
|
92
|
-
codex-workbench resume <session> "what was the conclusion about the rate limiter?"
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
When you run `new` or `resume`, Codex takes over the terminal. When it exits, codex-workbench returns.
|
|
96
|
-
|
|
97
|
-
### Directories
|
|
98
|
-
|
|
99
|
-
```bash
|
|
100
|
-
codex-workbench dirs --cwd ~/projects
|
|
101
|
-
codex-workbench dirs --json
|
|
102
|
-
codex-workbench mkdir ~/projects my-new-feature
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
### Diagnostics
|
|
106
|
-
|
|
107
|
-
```bash
|
|
108
|
-
codex-workbench doctor
|
|
109
|
-
```
|
|
110
|
-
|
|
111
|
-
### Force-delete a broken session file
|
|
112
|
-
|
|
113
|
-
```bash
|
|
114
|
-
codex-workbench delete <session> --file
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
Only use `--file` when Codex itself cannot remove the session. It deletes the JSONL file directly without going through the Codex CLI.
|
|
38
|
+
That's it. `cwb` with no arguments opens the TUI.
|
|
118
39
|
|
|
119
40
|
---
|
|
120
41
|
|
|
121
42
|
## Interactive TUI
|
|
122
43
|
|
|
123
|
-
|
|
44
|
+
The TUI has three panes: **sources & projects** on the left, **sessions** on the upper right, and **session details** below. Local sessions load instantly; remote SSH sources stream in asynchronously.
|
|
124
45
|
|
|
125
|
-
|
|
46
|
+
When you resume or start a session, Codex takes over the terminal. When it exits, the workbench redraws.
|
|
126
47
|
|
|
127
48
|
### Keyboard shortcuts
|
|
128
49
|
|
|
@@ -135,7 +56,7 @@ Run `cwb` with no arguments to open the TUI:
|
|
|
135
56
|
| `0` | Show all sources |
|
|
136
57
|
| `1`–`9` | Jump to source |
|
|
137
58
|
| `[` `]` | Previous / next source |
|
|
138
|
-
| `n` | New session (
|
|
59
|
+
| `n` | New session (opens directory picker) |
|
|
139
60
|
| `f` | Fork selected session |
|
|
140
61
|
| `r` | Rename selected session |
|
|
141
62
|
| `o` | Add or edit note |
|
|
@@ -146,8 +67,6 @@ Run `cwb` with no arguments to open the TUI:
|
|
|
146
67
|
|
|
147
68
|
### Directory picker
|
|
148
69
|
|
|
149
|
-
When creating a new session, the directory picker opens:
|
|
150
|
-
|
|
151
70
|
| Key | Action |
|
|
152
71
|
|-----|--------|
|
|
153
72
|
| `↑` `↓` / `j` `k` | Move selection |
|
|
@@ -161,11 +80,11 @@ When creating a new session, the directory picker opens:
|
|
|
161
80
|
|
|
162
81
|
## Remote SSH sources
|
|
163
82
|
|
|
164
|
-
codex-workbench can show sessions from remote machines by running `cwb` over SSH.
|
|
83
|
+
codex-workbench can show sessions from remote machines by running `cwb` over SSH. Remote sources appear alongside `Local` in the TUI and load asynchronously.
|
|
165
84
|
|
|
166
85
|
### Requirements
|
|
167
86
|
|
|
168
|
-
The remote
|
|
87
|
+
The remote must have `codex-workbench` installed and `cwb` available in the **non-interactive SSH PATH**. Test it:
|
|
169
88
|
|
|
170
89
|
```bash
|
|
171
90
|
ssh user@host 'cwb list --json'
|
|
@@ -180,12 +99,12 @@ Create `~/.codex/codex-workbench.config.json`:
|
|
|
180
99
|
"servers": [
|
|
181
100
|
{
|
|
182
101
|
"id": "devbox",
|
|
183
|
-
"label": "Dev
|
|
102
|
+
"label": "SSH · Dev Box",
|
|
184
103
|
"target": "user@dev.example.com"
|
|
185
104
|
},
|
|
186
105
|
{
|
|
187
106
|
"id": "gpu",
|
|
188
|
-
"label": "GPU
|
|
107
|
+
"label": "SSH · GPU Server",
|
|
189
108
|
"target": "gpu-host",
|
|
190
109
|
"command": "/usr/local/bin/cwb",
|
|
191
110
|
"sshArgs": ["-p", "2222"]
|
|
@@ -197,12 +116,48 @@ Create `~/.codex/codex-workbench.config.json`:
|
|
|
197
116
|
| Field | Required | Description |
|
|
198
117
|
|-------|----------|-------------|
|
|
199
118
|
| `target` | Yes | SSH destination (`user@host` or hostname) |
|
|
119
|
+
| `label` | No | Display name in the TUI |
|
|
200
120
|
| `id` | No | Short identifier (defaults to sanitized target) |
|
|
201
|
-
| `label` | No | Display name in the UI |
|
|
202
121
|
| `command` | No | Path to `cwb` on the remote (default: `cwb`) |
|
|
203
122
|
| `sshArgs` | No | Extra SSH flags, e.g. `["-p", "2222"]` |
|
|
204
123
|
|
|
205
|
-
|
|
124
|
+
Operations like rename, note, hide, new, resume, fork, archive, and delete are forwarded to the remote `cwb` transparently.
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## CLI commands
|
|
129
|
+
|
|
130
|
+
The TUI is the primary interface, but every action is also available as a CLI subcommand for scripting and automation.
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
cwb list # human-readable, grouped by source + project
|
|
134
|
+
cwb list --json --compact # machine-readable, omits message history
|
|
135
|
+
cwb list --cwd ~/projects/foo # filter to one working directory
|
|
136
|
+
cwb list --all # include archived and hidden sessions
|
|
137
|
+
|
|
138
|
+
cwb show <session> # full session details
|
|
139
|
+
cwb rename <session> "fix auth" # give a session a memorable name
|
|
140
|
+
cwb note <session> "clock skew" # attach a persistent note
|
|
141
|
+
cwb archive <session> # archive without deleting
|
|
142
|
+
cwb unarchive <session>
|
|
143
|
+
cwb hide <session> # remove from default list, keep on disk
|
|
144
|
+
cwb unhide <session>
|
|
145
|
+
cwb fork <session>
|
|
146
|
+
cwb delete <session> --force
|
|
147
|
+
|
|
148
|
+
cwb new --cwd ~/projects/foo "Summarize this repo"
|
|
149
|
+
cwb resume <session> "what was the conclusion about the rate limiter?"
|
|
150
|
+
|
|
151
|
+
cwb dirs --cwd ~/projects
|
|
152
|
+
cwb mkdir ~/projects my-new-feature
|
|
153
|
+
|
|
154
|
+
cwb doctor # check Codex binary discovery
|
|
155
|
+
cwb delete <session> --file # force-delete broken session file
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
`<session>` can be a full session id, a unique prefix, a saved custom name, or a session filename.
|
|
159
|
+
|
|
160
|
+
When you run `new` or `resume`, Codex takes over the terminal. When it exits, codex-workbench returns.
|
|
206
161
|
|
|
207
162
|
---
|
|
208
163
|
|
|
@@ -314,8 +269,6 @@ scripts/
|
|
|
314
269
|
npm test
|
|
315
270
|
```
|
|
316
271
|
|
|
317
|
-
This runs syntax checks on all source files and executes the test suite.
|
|
318
|
-
|
|
319
272
|
### Publishing
|
|
320
273
|
|
|
321
274
|
```bash
|