Getting started
Your terminal, split into workspaces. Start with the Windows app; add the CLI or a Linux server when you need them.
New to Pexer? You only need the Windows app to get started. The Linux server is optional.
Install the app
- Download Pexer for Windows x64. It’s portable: save the executable in a folder you’ll keep.
- Open
pexer.exe. Choose your shell and start working. - Open the command palette with Ctrl + Shift + P. Search for actions to split panes, switch workspaces, or open settings.
Before you start
Use Windows 10 or 11 x64 with a Direct3D 11 compatible GPU. Pexer is in public alpha; remote sessions are experimental. Check the release notes when updating the app or server.
How Pexer works
The app draws your terminal. The server owns the processes. The CLI controls them.
Three parts, different jobs
pexer.exe- The Windows interface: panes, workspaces, settings, and GPU rendering.
pexerctl.exe- The Windows command-line controller. Sends actions to the GUI or local daemon.
pexerd- The session daemon. Owns terminal processes locally on Windows or remotely on Linux.
What stays running?
With a daemon-backed session, closing the GUI or losing the connection doesn’t terminate the shell. Reopening Pexer can attach to the same terminal while that daemon is still running.
Persistence is not a reboot backup. Stopping the daemon or rebooting its host ends its running processes. Keeping its data directory preserves the remote identity, not live shells.
Under the hood
The Windows CLI uses local named pipes. Linux uses a private Unix socket for local access and TLS 1.3 with client certificates for remote access. Protocol v2 separates control, input, screen updates, and history so they can be scheduled independently.
You don’t need to configure the protocol to use Pexer. Start with the server setup and its one-use invitations.
pexerctl
Control Pexer from PowerShell. Split panes, switch projects, and script your daily setup.
Set up the CLI
Use pexerctl.exe from your Pexer build or package, if included. Keep the CLI and app from the same build. There is currently no separate public CLI download listed on this site.
Run it from its folder with .\pexerctl.exe, or add that folder to your Windows PATH to use the shorter commands below. Open Pexer before sending GUI commands.
pexerctl --help
pexerctl ping
pexerctl pane list
Everyday commands
| Command | What it does |
|---|
split right "claude" | Split the focused pane and launch Claude Code, if installed. |
workspace new "backend" | Create and switch to a workspace. |
workspace select "backend" | Switch to an existing workspace. |
spawn "npm run dev" | Open a tab running your command. |
focus next | Focus the next pane. |
zoom | Toggle zoom on the focused pane. |
restore / hide | Show the window or send it to the tray. |
Prefix each command with pexerctl. Use --help for the complete reference supported by your build.
GUI panes vs. daemon terminals
pane list lists GUI panes. list lists the local daemon’s terminals. Use the IDs from the matching list; they aren’t interchangeable.
pexerctl list
pexerctl snapshot 1 terminal.ghostsnp
Replace 1 with a terminal ID from list. A snapshot is a binary terminal-state file, not a plain-text log.
pexerd
Run shells on a Linux host. Connect from Windows, disconnect, and come back to the same work.
Linux x64 · experimentalThe public server download is v0.3.0-alpha. It uses glibc and OpenSSL 3; don’t assume Alpine/musl compatibility. Update the Windows app and server together when protocol changes require it.
Download & install
On your Linux host or WSL2 distribution, download the executable and make it runnable:
curl -fL https://pexer.modhyt.org/download/releases/pexerd-v0.3.0-alpha-linux-x64 -o pexerd
chmod +x pexerd
Download pexerd for Linux x64 ↓
Start the server
Run as your normal user. This command stays in the foreground. Keep this terminal open and use a second terminal for the next step.
./pexerd serve --listen 45483 --data-dir "$HOME/.local/share/pexerd"
Allow TCP port 45483 through your host firewall for the Windows client. Keep the data directory: it contains the server identity and authorized clients.
Connect from Windows
In the second Linux terminal, replace YOUR_SERVER with the IP address or hostname your Windows machine can reach:
./pexerd invite --host YOUR_SERVER --expires 10m --data-dir "$HOME/.local/share/pexerd"
The server prints a complete pexer.exe remote add --invite "pexer://…" command. Paste that exact command into PowerShell from the folder containing pexer.exe; use .\pexer.exe if it isn’t on your PATH.
Open Pexer’s shell selector and choose a shell under the enrolled server. The invitation works once and expires after ten minutes. Generate a new one for another client.
Keep it running with systemd
After testing the connection, install the executable and create a user service. This runs the daemon as your own user.
sudo install -m 755 pexerd /usr/local/bin/pexerd
mkdir -p "$HOME/.config/systemd/user"
Save this as ~/.config/systemd/user/pexerd.service:
[Unit]
Description=Pexer terminal server
[Service]
ExecStart=/usr/local/bin/pexerd serve --listen 45483 --data-dir %h/.local/share/pexerd
Restart=on-failure
RestartSec=2
[Install]
WantedBy=default.target
systemctl --user daemon-reload
systemctl --user enable --now pexerd
sudo loginctl enable-linger "$USER"
Stop the foreground daemon before starting the service. Lingering allows the user service to run after logout. This requires a systemd host; WSL2 must have systemd enabled.
Automation recipes
A few commands to get your project ready. Adapt the paths and tools to your setup.
Open a development workspace
With Pexer running, create a workspace with your dev server and logs. Run this from your project folder with Node.js and Docker installed:
pexerctl workspace new "App Stack"
pexerctl split right "npm run dev" --dir "$PWD"
pexerctl split down "docker compose logs -f" --dir "$PWD"
Open an agent beside your shell
Install Claude Code first, then launch it in a new pane in your project directory:
pexerctl split right "claude" --dir "$PWD"
pexerctl restore
Replace claude with another command available on your PATH.
Start a background task
pexerctl spawn --silent "npm run dev" --dir "$PWD"
--silent starts a monitored background task instead of an interactive terminal tab. Use a normal spawn when you need to interact with the process.
Troubleshooting
Start with the connection, the executable, and the version. Most setup issues are one of those three.
The CLI isn’t found or can’t connect
In PowerShell, use .\pexerctl.exe --help from its folder, or add the folder to PATH. If ping fails, open Pexer under the same Windows user before trying again. Daemon commands also require a running local pexerd.exe.
The Linux binary won’t start
Run chmod +x pexerd and check that the host is Linux x64. For a missing shared-library error, use ldd ./pexerd to identify the dependency. The published build links to OpenSSL 3 and glibc.
The invitation fails
Create a fresh invitation; each is single-use and time-limited. Check that the hostname resolves from Windows and port 45483 is reachable. The serve and invite commands must use the same data directory and Linux user.
Test-NetConnection YOUR_SERVER -Port 45483
A session doesn’t return after reconnecting
Check that the original daemon is still running. A daemon restart ends its terminal processes; the app won’t automatically rerun their commands. After a protocol update, replace the server binary too. Remote scrollback has known limitations in the public alpha.
Check service logs
systemctl --user status pexerd
journalctl --user -u pexerd -n 50 --no-pager
Still stuck? Ask in Discord with your app/server versions, operating system, and exact error. Remove invitation tokens and private keys before sharing logs.