features and planned work

manage SSH and telnet sessions and local terminals on windows.

winui 3 · .net 10 ssh.net transport webview2 + xterm.js webgl rendering sqlite fts5 gpl-2.0

current features are listed first. rows marked planned aren't built yet.

01 saved sessions

save sessions in folders, filter by name, and set terminal options for each host. choose an included icon or add your own.

  • local profiles for powershell, cmd, wsl and git bash
  • tab badges for claude code, codex and gemini cli
  • color tags carried onto the tab accent
  • nokia, juniper, cisco, arista and vyos icons, suggested from the login banner
Sessions folder tree with custom icons and color tags
02 command history
new

keep every finished command with its output, folder, session, time and exit result, then search it across all sessions with ctrl shift h. insert a command at the prompt or reopen the session it ran in.

  • all words must match the command, session, folder or output; quote a phrase with "…"
  • filters: host:web01 in:/etc exit:fail exit:127, plus session, result, time and a calendar day picker
  • off by default because output can contain secrets; each session can opt out
  • local only, left out of backups, 90-day retention by default, deletes overwritten on disk
  • a sqlite full-text index, so history never has to fit in memory
Command history search for bgp with the selected run and its output
03 compare runs
new

when a command has run more than once on the same host, compare with previous shows what changed: added and removed lines, with the changed words marked, unified or side by side.

  • timestamps are ignored by default; ignore numbers hides counters and uptimes
  • unchanged stretches fold away; f7 and shift f7 step between changes
  • pick any two runs from the list of every run, each with how it differs
  • paged (--More--), truncated and lost output is flagged, so a gap is never read as a change
Compare with Previous for show bgp summary with numbers ignored, showing one BGP peer that changed from Established to Active
04 telnet consoles

connect to console servers and lab or management devices over telnet. telnet sessions share the session list, folders, tabs, splits, highlighting and recordings with ssh.

  • type telnet host 2003 in quick connect to reach a console line on a high port
  • the window size follows the tab as it resizes, so htop, btop and vim fit the window
  • send break (ctrl break) for boot interrupts and password recovery through a console server
  • text encoding per session: automatic (utf-8, falling back to cp437 for bbs and ansi art), utf-8 or cp437; typed input is encoded to match
  • report 80 × 25 to bbs servers: naws and screen-size probes get 80 × 25 while the tab keeps its real size
  • telnet is not encrypted; the session editor says so, and no password is stored for it
Telnet session to a Synchronet BBS showing CP437 art and an 80x25 terminal report
05 keyword highlighting

highlight interfaces, IP and MAC addresses, link states and routing protocols. enable rules per session or write your own regular expressions.

GigabitEthernet0/1 is up, line protocol is up GigabitEthernet0/2 is down, line protocol is down
Keyword highlighting rule editor beside live output
06 annotated scrollbar

the scrollbar shows search matches, highlighted text, bookmarks and command positions. command marks can show exit status; line timestamps show when output arrived.

  • command detection from shell signals and terminal input
  • terminal search on ctrl shift f
  • jump between commands with ctrl shift ↑ ctrl shift ↓, bookmark a line with ctrl shift m
Overview ruler with search marks beside a fictional ISP log
07 command list

view detected commands in order, with exit status where available. select a command to find it in the terminal or copy its output.

show ip interface brief jump copy
systemctl restart bird  exit 1 jump copy
Command list panel with jump and copy actions
08 recording and rewind

rewind earlier output in the native terminal while the session continues. enable recording to save an asciicast file and a timestamped text log.

  • .cast playback with pause, speed and seek
  • text logs for searches and change records
09 keyboard shortcuts and command palette

run any action from the command palette on ctrl shift p, or use a shortcut. press ctrl shift / to see and search every shortcut.

  • tabs: ctrl tab, ctrl 1…ctrl 9, close, clone, reconnect and move
  • panes: split right or down, and alt ← → ↑ ↓ between split groups
  • terminal: per-tab zoom, select all, clear scrollback, ctrl insert and shift insert
  • plain ctrl and letter keys always reach the shell, including the tmux prefix
Keyboard Shortcuts screen listing application and tab shortcuts as keycaps
10 persistent remote sessions

remote shells run inside a private tmux server, so closing a tab or losing the connection detaches the shell instead of ending it. reconnect and you're back where you were.

  • choose per connection: resume or ask, always start new, or end detached shells first
  • the session manager lists each shell by folder and program, with end all detached
  • shells open in another tab or client are never ended or resumed without asking
manage remote sessions — core-sw-01 detached  ~/configs    vim        2h detached  /var/log     journalctl 18m in a tab  ~            bash       4m [resume]  [end session]  [end all detached]
11 shell integration and command alerts

turn on shell integration for a session to get exact command boundaries, exit codes and the current folder. click the bell on a running command to get a windows notification when it finishes.

  • bash, zsh, fish and powershell, locally and over ssh
  • off by default; network cli sessions keep ordinary startup
  • the notification opens the tab at that command's output
$ make release  🔔 notify when finished … ✓ make finished on build-01 · exit 0 · 14m 02s
12 coding agents over ssh

claude code, codex and gemini cli work over ssh as they do in a local terminal. tab badges show when an agent is working or waiting for you.

  • osc 52: remote programs copy to the windows clipboard. it is write-only, so a host can never read your clipboard, and playback never touches it
  • shift enter sends esc cr, the new-line key claude code reads; full-screen programs such as vim still get a plain enter
  • unicode 11 widths match the remote wcwidth, so emoji no longer push the cursor out of step
  • xtversion replies "resesh", so claude code turns on synchronized output
  • colorterm=truecolor is sent with every ssh session, and the private tmux server is set up to pass rgb colour through
  • osc 8 links open in your browser and show their real target on hover
$ printf '\e[>q' reply: \eP>|Resesh\e\\ $ echo $COLORTERM truecolor $ printf '\e]52;c;%s\a' "$(printf hi | base64)" → "hi" is on the windows clipboard
13 progress on tabs and the taskbar

programs that report progress with osc 9;4, the same sequence windows terminal reads, show a thin bar under the tab and on the taskbar button. file-pane transfers use the same bar.

  • normal, error, paused and indeterminate states
  • clears itself when the command ends, even if the program forgets
$ printf '\e]9;4;1;60\a' tab and taskbar at 60% $ printf '\e]9;4;2\a' the bar switches to its error state
14 workspaces and layout restore

save pane sizes, tab order, pinned tabs and the active tab. open a workspace on its own or add it to the current layout.

  • restore the last layout on startup
  • keep workspace session references when importing backups
Workspaces sidebar with saved tab groups
15 file transfer and browsing

browse local files and transfer remote files over SFTP. the file pane can follow the terminal folder when resesh can detect it.

  • open local folders straight in explorer
  • remote folders through sshfs-win when it's installed
SFTP file pane following the terminal directory
16 keys, secrets and host keys

name and reuse private-key references across sessions. view fingerprints and update the path if a key file moves. passwords and passphrases are stored in windows credential manager.

  • explicit keyboard-interactive prompts
  • review changed host keys before accepting them
SSH key registry with a disposable demo key and its fingerprint
17 backup, export, import

export a .reseshbackup archive and merge it into another installation. passwords and passphrases are excluded by default. including them requires an encrypted backup.

  • review sessions before importing them
  • keep a previous copy of saved data
SecureCRT import preview with four fictional SSH hosts and one skipped session
18 themes

choose a light or dark theme for the app and terminals. use a different terminal theme for each session.

  • included themes such as dracula, nord, tokyo night and catppuccin mocha
  • preview theme changes in settings; save to keep them or cancel to restore the previous theme
19 gssapi / kerberos auth
planned

use an existing windows domain ticket for SSH authentication. support is still under investigation.

no screenshot yet
20 tunnels, agent, jump hosts
planned

planned support for local, remote and SOCKS tunnels, SSH agent authentication, and connections through jump hosts.

no screenshot yet
21 serial consoles
planned

planned serial connections for console cables. settings will include baud rate, parity and flow control, and send break will work over serial too.

no screenshot yet
22 other planned work
planned

saved command snippets, mremoteng import, and automatic reconnect with tmux reattach. priorities may change.

no screenshot yet
./under-the-hood

how it works

some of the engineering behind the features above.

rendering gpu glyphs, fixed to the pixel grid xterm.js draws through webgl, with a dom fallback if the gpu context is lost. at fractional display scaling the canvas can end up one device pixel off the character grid; resesh pins the glyph viewport to the grid so text stays sharp instead of being resampled.
rewind seekable terminal history every 10 seconds or 1 mib of output, the terminal serializes its full state as a keyframe. rewind jumps to the nearest keyframe and replays only what followed, so scrubbing is exact without replaying the whole session.
highlighting decorations that follow scrollback highlight rules run incrementally during output. matches stay attached to their rows as old lines are trimmed, so follow-mode logs such as journalctl -f don't redraw unchanged decorations.
output batched, timestamped output ssh output is batched every 16 ms or 32 kb before reaching the terminal, and each read keeps its arrival time, so line timestamps and recordings stay accurate under heavy output.
history full-text search that forgets properly history lives in one sqlite database with an fts5 trigram index kept in step by triggers, so any substring search stays fast at tens of thousands of commands. deletes run with secure_delete, then merge the index and truncate the write-ahead log, so removed text does not linger on disk.
compare a diff built for device output a myers line diff with a bounded edit budget, then word-level marks where addresses and paths count as one word. timestamps and numbers can be masked before comparing, so counters that always move don't bury the real change.
storage atomic json, secrets elsewhere sessions and workspaces are written atomically with a backup copy. passwords and passphrases live in windows credential manager and are never written to disk by resesh.

scope

resesh is a terminal client. these functions stay outside the app.

no embedded scripting language run automation with tools such as ansible from your shell.
no broadcast input keyboard input goes to one terminal at a time. use an automation tool to run commands across several hosts.
no automatic shell-integration injection shell integration is off unless you turn it on for a session. when it is on, its scripts are installed over a separate ssh channel and never typed into your shell.

where your data lives

sessions and folders %APPDATA%\Resesh\sessions.json
workspaces and layout %APPDATA%\Resesh\workspaces.json
passwords and passphrases windows credential manager
accepted host keys %APPDATA%\Resesh\known_hosts.json
command history (when on) %LOCALAPPDATA%\Resesh\history\history.db

secrets are never written to the normal json store, and they're left out of backups unless you ask for them. command history is never included in backups.

try the beta

x64 and arm64 installers, or a portable zip. windows 10 21h2 or newer.