You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+11-21Lines changed: 11 additions & 21 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,7 +8,7 @@ A cross‑platform desktop UI (Avalonia/.NET 8) for driving the Codex CLI app se
8
8
- Start a Codex session and stream assistant output in real time
9
9
- Send user input that is wrapped as protocol `Submission`s (app server)
10
10
- Auto‑approve exec/patch requests (automatic)
11
-
-Select a Codex profile (from `config.toml`) and load MCP servers from a JSON config
11
+
-Pick a model (built-in or from `config.toml` profiles) and load MCP servers from a JSON config (see [Windows setup](README.windows.md) for a WSL recipe)
12
12
- Keep multiple Codex sessions active at once using the tabbed header (each tab title shows its live status, e.g., `Session 2 – thinking…`)
13
13
– See live token usage and estimated context remaining in the header
14
14
@@ -23,37 +23,26 @@ A cross‑platform desktop UI (Avalonia/.NET 8) for driving the Codex CLI app se
23
23
24
24
## Platform Setup & CLI Modes
25
25
26
-
Semantic Developer can drive the Codex CLI from Linux, macOS, or Windows. On Windows you can choose to run Codex natively or through WSL; toggle this at runtime in **CLI Settings → Use WSL**.
26
+
Semantic Developer can drive the Codex CLI from Linux, macOS, or Windows.
27
27
28
28
### Linux
29
29
30
30
- Install the .NET 8 SDK and the Codex CLI in your Linux environment.
31
31
- Profiles live under `~/.codex/config.toml`; prompts under `~/.codex/prompts/`.
- Leave **Use WSL** unchecked—MCP commands and the Codex process execute as Windows binaries, so use Windows paths in `mcp_servers.json`.
48
-
49
-
### Windows (Codex inside WSL)
50
-
51
-
- Install the Codex CLI inside your WSL distribution along with any MCP servers you want to run (for example `pip install`, `npm install`, etc.).
52
-
- In **CLI Settings** enable **Use WSL**. When checked:
53
-
- The Codex CLI and MCP servers launch through `wsl.exe`, so command paths in `mcp_servers.json` should be Linux paths (for example `~/.local/bin/mcp-atlassian`).
54
-
- Profiles/prompts remain in the WSL home (`~/.codex/config.toml`, `~/.codex/prompts/`). The app bridges to them automatically.
55
-
- The MCP configuration file stays on the Windows side (`%AppData%\SemanticDeveloper\mcp_servers.json`); only the command execution happens in WSL.
56
-
- Leave **Use WSL** on only when the Codex CLI is installed in WSL. Disable it if you want to run the Windows binaries instead.
57
46
58
47
## Build & Run
59
48
@@ -70,18 +59,17 @@ Semantic Developer can drive the Codex CLI from Linux, macOS, or Windows. On Win
70
59
2. Click “Restart Session” to launch `codex app-server` in the workspace directory (a session also starts automatically after you select a workspace).
71
60
3. Type into the input box and press Enter to send. Output appears in the right panel.
72
61
4. “CLI Settings” lets you change:
73
-
- Profile (from Codex `config.toml`) — passed via `-c profile=<name>`
74
-
-`config.toml` path: `$CODEX_HOME/config.toml` (defaults to `~/.codex/config.toml`)
75
-
- Default model & reasoning effort
62
+
- Model & reasoning effort
76
63
- Before a session starts, the picker loads from `SemanticDeveloper/SemanticDeveloper/models.json` so you can choose models offline. Keep this file updated as Codex releases new entries.
77
-
- Once a session is running the dialog refreshes with the live catalog. Configured profiles from `config.toml` are appended and marked with an asterisk; selecting a profile disables the reasoning picker and lets the profile decide the model/effort.
64
+
- When the app connects to Codex, the dialog refreshes with the live catalog.
65
+
- Any profiles defined in `config.toml` (e.g., `$CODEX_HOME/config.toml`, defaulting to `~/.codex/config.toml`) are appended to the list and marked with an asterisk (`*`). Selecting a profile locks the reasoning controls and lets the profile determine the model/effort.
66
+
- Profiles are optional—if you don’t have one, simply pick a built-in model.
78
67
- Verbose logging (show suppressed output)
79
68
- Enable MCP support (loads MCP servers from your JSON config and passes them directly to Codex)
- When **Use WSL** is enabled, keep the config file in the Windows location above but supply Linux paths in the `command`/`cwd` fields—the app relays each server through WSL.
85
73
- Use API Key for Codex CLI (pipes the key to `codex login --with-api-key` before sessions; does not rely on existing CLI auth)
86
74
- Allow network access for tools (sets sandbox_policy.network_access=true on turns so MCP tools can reach the network)
87
75
- Without API key enabled, the app proactively authenticates with `codex auth login` (falling back to `codex login`) before sessions so your chat/GPT token is used.
@@ -98,6 +86,8 @@ Semantic Developer can drive the Codex CLI from Linux, macOS, or Windows. On Win
98
86
99
87
### Profiles (config.toml) example
100
88
89
+
If you define profiles in `config.toml`, Semantic Developer surfaces them in the model picker (marked with `*`) alongside the built-in catalog. They’re entirely optional—the app works out of the box with the bundled models.
The recommended Windows setup runs both the Codex CLI and Semantic Developer inside WSL2 so you get a consistent Linux environment while still launching the Avalonia UI through WSLg. The steps below assume Windows 11 or Windows 10 22H2 (build 19045) with administrative rights.
4
+
5
+
## 1. Install WSL (Ubuntu)
6
+
1. Open an elevated PowerShell window.
7
+
2. Enable WSL + the Virtual Machine Platform:
8
+
```powershell
9
+
wsl --install -d Ubuntu
10
+
```
11
+
> If you already have WSL installed, ensure it’s version 2 (`wsl --set-default-version 2`).
12
+
3. Reboot when prompted.
13
+
4. Launch the new Ubuntu instance from the Start menu and create your Linux user.
14
+
15
+
## 2. Update packages inside Ubuntu
16
+
```bash
17
+
sudo apt update && sudo apt upgrade -y
18
+
```
19
+
20
+
## 3. Install Node.js 22 (required by the Codex CLI)
dotnet run --project SemanticDeveloper/SemanticDeveloper
72
+
```
73
+
WSLg should display the Semantic Developer UI on Windows. If the window fails to appear, check `wsl --status` to confirm WSLg is running and verify the X11 libraries are installed.
74
+
75
+
## 10. Notes & Tips
76
+
- Store Codex profiles and prompts inside the WSL home (`~/.codex/config.toml`, `~/.codex/prompts/`); Semantic Developer detects them automatically.
77
+
- MCP server definitions live at `~/.config/SemanticDeveloper/mcp_servers.json` within Ubuntu.
78
+
- Access Windows files from WSL using `/mnt/c/...`, but for best performance keep your workspace inside the Linux filesystem (e.g., `~/code`).
79
+
- To update Codex or Node.js later:
80
+
```bash
81
+
sudo npm update -g @openai/codex
82
+
sudo npm cache verify
83
+
```
84
+
- If you prefer the UI to launch quickly from Windows Terminal, create a profile that runs `wsl.exe -d Ubuntu -- cd ~/code/SemanticDeveloper && dotnet run --project SemanticDeveloper/SemanticDeveloper`.
85
+
86
+
Happy coding!
87
+
88
+
## 11. RECOMMENDED - For browser access to links directly from WSL and SemanticDeveloper
varbaseMessage="No Codex CLI profiles were found in ~/.codex/config.toml.\n\nCreate a profile under [profiles.<name>] with the model you want to use, for example:\n\n[profiles.default]\nmodel = \"gpt-5-codex\"\nmodel_provider = \"openai\"\n\napproval_policy = \"never\"\nmodel_reasoning_effort = \"high\"\nmodel_reasoning_summary = \"auto\"\n\nAfter you add a profile, select it in CLI Settings so sessions know which model to run.";
<CheckBoxContent="Use API Key for Codex CLI"IsChecked="{Binding UseApiKey, Mode=TwoWay}"/>
62
+
<CheckBoxContent="Use API Key for Codex CLI"
63
+
IsChecked="{Binding UseApiKey, Mode=TwoWay}"
64
+
HorizontalAlignment="Stretch"
65
+
Margin="0,0,24,0"/>
60
66
<TextBlockText="API Key"Margin="0,8,0,4"/>
61
67
<TextBoxText="{Binding ApiKey, Mode=TwoWay}"
62
68
PasswordChar="•"
63
69
Watermark="Enter API key"
64
70
ToolTip.Tip="When enabled, the app pipes your key to 'codex login --with-api-key' before sessions"
65
-
MaxWidth="550"/>
66
-
<TextBlockMargin="0,6,0,0"Foreground="#888"FontSize="12"Text="Stored in settings.json. When enabled, the app authenticates with your key and does not rely on existing CLI login."MaxWidth="550"TextWrapping="Wrap"/>
71
+
HorizontalAlignment="Stretch"
72
+
Margin="0,0,24,0"/>
73
+
<TextBlockMargin="0,6,24,0"Foreground="#888"FontSize="12"Text="Stored in settings.json. When enabled, the app authenticates with your key and does not rely on existing CLI login."TextWrapping="Wrap"/>
67
74
</StackPanel>
68
75
<Separator/>
69
76
<StackPanel>
70
-
<CheckBoxContent="Enable MCP support (load servers from config)"IsChecked="{Binding McpEnabled, Mode=TwoWay}"/>
71
-
<TextBlockMargin="0,4,0,6"Foreground="#888"FontSize="12"Text="Loads MCP servers from mcp_servers.json in your app data folder and passes them directly to Codex."MaxWidth="550"TextWrapping="Wrap"/>
77
+
<CheckBoxContent="Enable MCP support (load servers from config)"
78
+
IsChecked="{Binding McpEnabled, Mode=TwoWay}"
79
+
HorizontalAlignment="Stretch"
80
+
Margin="0,0,24,0"/>
81
+
<TextBlockMargin="0,4,24,6"Foreground="#888"FontSize="12"Text="Loads MCP servers from mcp_servers.json in your app data folder and passes them directly to Codex."TextWrapping="Wrap"/>
72
82
<StackPanelIsEnabled="{Binding McpEnabled}">
73
-
<CheckBoxContent="Allow network access for tools (MCP, web fetches)"IsChecked="{Binding AllowNetworkAccess, Mode=TwoWay}"/>
74
-
<TextBlockMargin="0,4,0,6"Foreground="#888"FontSize="12"Text="Enables outbound network for tool calls (e.g., MCP servers) by setting sandbox_policy.network_access=true on turns."MaxWidth="550"TextWrapping="Wrap"/>
83
+
<CheckBoxContent="Allow network access for tools (MCP, web fetches)"
<TextBlockMargin="0,4,24,6"Foreground="#888"FontSize="12"Text="Enables outbound network for tool calls (e.g., MCP servers) by setting sandbox_policy.network_access=true on turns."TextWrapping="Wrap"/>
<CheckBoxContent="Show MCP results in log"IsChecked="{Binding ShowMcpResultsInLog, Mode=TwoWay}"/>
77
-
<CheckBoxContent="Only show when not editing (auto)"IsChecked="{Binding ShowMcpResultsOnlyWhenNoEdits, Mode=TwoWay}"/>
78
-
<TextBlockMargin="0,4,0,0"Foreground="#888"FontSize="12"Text="When enabled, the app surfaces top results (titles + URLs) for search-like tools. During code-editing turns, it suppresses unless disabled."MaxWidth="550"TextWrapping="Wrap"/>
<TextBlockMargin="0,4,24,0"Foreground="#888"FontSize="12"Text="When enabled, the app surfaces top results (titles + URLs) for search-like tools. During code-editing turns, it suppresses unless disabled."TextWrapping="Wrap"/>
0 commit comments