Project overview#
Working with several coding agents means keeping track of the task, its changes, and the result. TermHQ brings local terminals, SSH connections, an editor, and a live browser into a desktop workspace. Give each project a named workspace, arrange its panes around the work, and move a running terminal or editor to another open workspace when the task belongs elsewhere. Persistent shells let you close the window and return to work that kept running. The application builds on the shells, coding-agent CLIs, Git, and OpenSSH already installed on your machine.
From prompt to preview#
- Run agents side by sideLaunch installed tools such as Claude Code, Codex, or OpenCode in a terminal, favorite folder, or worktree. Customize their commands and flags, and refresh discovery after installing another tool. Pane headers show the icon of the agent currently running.
- Arrange and move the workResize terminal, editor, and browser panes, focus one fullscreen, or stash it. Move local terminals, SSH connections, and editor panes to another open workspace, or a new one, with Ctrl+Shift+M; their running processes or unsaved text come with them.
- Keep the project in viewLet Files and Source Control follow the focused local pane, or pin them to one folder and repository. Edit files in tabs, preview Markdown, and keep a live browser with developer tools beside the code.
- Review before moving onInspect diffs, stage individual hunks, and resolve merge conflicts in the editor. Read another branch's commit history without checking it out, then manage branches, stashes, and remote sync from the Git panel.
- Separate parallel branchesTrack worktrees across selected repositories, inspect changed files and upstream status, and create a new worktree from the same view. Open a terminal or coding agent in the chosen working folder.
- Find the next actionSearch the command palette for commands, panes, favorite folders, agents, themes, and workspaces. Settings search jumps to the matching control, while the palette explains why an unavailable action cannot run.
- Return to hidden workThe waiting list collects terminals that go quiet while stashed or hidden behind a maximized pane. Select an entry to bring that pane back; native notifications can alert you when TermHQ is in the background.
Local and remote terminals#
SSH panes use the OpenSSH client already on your computer, with its existing keys, agent, host trust, and configuration. Connect through a saved profile, a recent target, or an alias from your ssh_config, then tile, stash, maximize, or move the connection like a local terminal. A dropped connection keeps its pane and recent output, with a reconnect action when you are ready. The current remote feature is a terminal: Files, Source Control, and worktree tools continue to operate on local folders. TermHQ stores connection profiles without saving passwords or passphrases.
Technical architecture#
TermHQ pairs a Rust session engine with a React and TypeScript interface rendered through Tauri v2 and the operating system's webview. xterm.js draws the terminals, and portable-pty connects them to native pseudoterminals. A detached Rust host owns local shells and OpenSSH processes; the application window attaches over a local socket. Monaco loads when an editor or diff is first opened, while browser panes are separate native child webviews. The Rust layer handles filesystem operations, the user's Git CLI, and configured language servers. Keeping process ownership outside the window lets the interface reconnect to existing work and transfer it between workspaces.
- Terminal viewxterm.js
- EditorMonaco
- BrowserNative webview
Sessions that survive the window#
With the default session setting, closing a workspace window leaves its shells running. Reopening attaches to those processes and replays recent output, with the saved pane proportions, working directories, and selection. SSH connections also remain open while their client and network connection survive. Editor recovery preserves unsaved text after a crash, and saves check for external changes before overwriting a file; browser panes reopen their saved addresses. A computer restart or application update ends running commands. Local terminals return with fresh shells, while SSH panes return disconnected and wait for you to reconnect.
Moving work without restarting it#
Moving a pane between windows is an ownership handoff. The destination prepares its editor buffers and saves the prospective workspace before the host commits the transfer. Only then does the source interface remove the pane. A terminal keeps the same process and PTY identity, including an existing SSH connection; recent output is replayed in the receiving window. Editors carry their tabs and unsaved text, with a fresh undo history. A conflicting editor buffer or a destination that cannot accept the move leaves the pane in its original workspace. Browser panes currently stay in the workspace where they were opened.
Make the workspace your own#
Built-in themes, VS Code color and icon themes from Open VSX, custom backgrounds, and rebindable shortcuts let the workspace fit the way you work. Pane motion respects the application's animation setting and system reduced motion. Optional voice dictation uses whisper.cpp to transcribe speech on the device after a model is downloaded or imported. An optional hold-to-talk gesture can enter words into a terminal or a focused field in a browser pane, leaving you to review and submit them. Agent tools keep their own accounts and services, and browser panes connect to the sites you open.
Recent improvements#
Move a pane from the keyboard
Ctrl+Shift+M (Cmd+Shift+M on macOS) opens the workspace picker for the focused terminal or editor. The move menu now works with a single open workspace and can create a new one, and the picker shows the source pane's icon and title. Terminals keep their last frame while grid dividers are dragged.
Release notes for 0.2.15 (opens in new tab)See which agent is running
Terminal headers, Stash, Waiting, and Undo Close show the product icon of a recognized running agent, including GitHub Copilot's native installs. Settings gain a default terminal folder and JSON export and import, and background images no longer leave opaque patches behind dim text.
Release notes for 0.2.14 (opens in new tab)A quieter update and a reliable return
Updates started from 0.2.13 or later install silently on Windows after the save and running-terminal prompts. The updater distinguishes real windows from terminal connections, and a quick restart restores the workspace you were using.
Release notes for 0.2.13 (opens in new tab)Move live panes between workspaces
Terminals and SSH connections move between open workspaces while their processes continue; editors carry tabs and unsaved text. Favorite-folder setup, immediate settings updates across windows, and clearer large-paste prompts improve everyday use.
Release notes for 0.2.12 (opens in new tab)Keep terminal attention where it belongs
Waiting notices apply to hidden or stashed terminals; visible panes stay out of the list. Ctrl+click opens terminal file links, large pastes leave other panes responsive, and full-screen tools keep their mouse interactions.
Release notes for 0.2.11 (opens in new tab)Bring SSH into the workspace
Remote terminal panes use the installed OpenSSH client, saved profiles, and existing ssh_config aliases. Persistent connections, reconnect controls, custom backgrounds, and an expanded command palette bring more of the workflow into the grid.
Release notes for 0.2.8 (opens in new tab)
Availability#
TermHQ is available for Windows 10/11 and macOS on Apple silicon, with Linux support pending. The download page provides the installers and platform-specific setup guidance. Use the shells and coding agents you already have installed; optional speech models and language servers can be added when you need them. Update checks are available in Settings, and you choose when to install a release.