pexer Docs

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

  1. Download Pexer for Windows x64. It’s portable: save the executable in a folder you’ll keep.
  2. Open pexer.exe. Choose your shell and start working.
  3. Open the command palette with Ctrl + Shift + P. Search for actions to split panes, switch workspaces, or open settings.

Choose your tool

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.

PowerShell · check the connection
pexerctl --help
pexerctl ping
pexerctl pane list

Everyday commands

CommandWhat 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 nextFocus the next pane.
zoomToggle zoom on the focused pane.
restore / hideShow 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.

PowerShell · local daemon
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 · experimental

The 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:

Bash · Linux x64
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.

Bash · terminal 1
./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:

Bash · terminal 2
./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.

Bash
sudo install -m 755 pexerd /usr/local/bin/pexerd
mkdir -p "$HOME/.config/systemd/user"

Save this as ~/.config/systemd/user/pexerd.service:

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
Bash · enable the service
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:

PowerShell
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:

PowerShell
pexerctl split right "claude" --dir "$PWD"
pexerctl restore

Replace claude with another command available on your PATH.

Start a background task

PowerShell
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.

PowerShell · replace YOUR_SERVER
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

Bash · systemd user service
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.

↑ ↓ navigate · Enter openSearch all guides