Terminal Workspace
The Terminal Workspace is a multi-tab terminal embedded directly in LaraEnv, built on xterm.js. It supports floating groups with drag-and-drop, resizable panes, and split layouts, so you can arrange several shells exactly how you like.

Files, documents, and Git
The main workspace uses one Agents / Files / Git navigator. Its panels follow the selected local terminal's project or worktree. Collapse it for more room or switch panels without restarting terminals or closing documents.
Files opens project files in the built-in editor. Markdown supports source and rendered preview, and supported images open in a preview. Document tabs identify their working copy. Saving checks for external disk changes; closing an unsaved document, quitting, or applying an update asks you to save, discard, or cancel.
Git reviews changes in that checkout, stages and unstages whole files, commits the reviewed index, and pushes separately. See Source control for the complete workflow and limits. Git changes belong to the checkout; agents sharing it also share the index.
Shell types
When you open a new tab you can pick the shell to run:
- PowerShell (default)
- CMD
- Git Bash
- Cmder (optional — install it from the catalog first)
Opening a terminal
There are two ways to open a terminal:
- From the Terminal page — add a new tab and pick the shell type.
- From a project — choose Open terminal on the project. The new terminal is project-aware: its working directory is set to the project root, the project's PHP, Node, and Composer are placed on
PATH, and a banner shows the project name.
You can choose which shell a project opens by default. See Projects → Configuration for the per-project terminal type.
PHP & Node version per terminal
Each local terminal can pin the PHP and Node version it loads, independent of the global active version. This is useful when you tear a terminal off into its own window and use it on its own: without a pick, a plain shell would fall back to the global active PHP/Node, so php artisan could run the wrong PHP for the folder you're in.
- The active terminal's tab bar shows a runtime badge (for example,
PHP 8.4 · Node 22.11). - Click the badge to open the picker and choose a PHP and/or Node version. Auto follows the global active version (the default).
- Changing the version restarts that terminal in place with the new runtime — a running shell's
PATHcan't be changed after it starts. - The chosen versions are remembered with the terminal: they survive detaching into a separate window and are restored across app restarts.
Project and SSH terminals aren't affected — a project terminal already loads the project's selected PHP, Node, and Composer.
Layouts: groups, panes, and tabs
The workspace organizes terminals into a tree of panes:
- Floating groups can be moved around with drag-and-drop.
- Panes can be resized, and you can split a pane to create side-by-side or stacked layouts.
- Tabs live inside a pane, so each pane can hold multiple shells.
The full layout (groups, panes, and tabs) is persisted and restored across app restarts, so your terminal arrangement is exactly where you left it.
Coding-agent sessions
The optional Agents navigator lives beside this same workspace, so Claude Code, Codex, Kimi, and OpenCode sessions remain terminal tabs instead of becoming a second terminal system. The navigator can be collapsed without closing its sessions. See Agent sessions for setup, Git working-copy choices, restoration, and current limitations.
Appearance
Since 0.4.24 the terminal uses a Tabby-inspired look:
- Solid dark surface with flat, full-height tabs — the active tab merges with the terminal below.
- Vivid color scheme (the "Tabby Default" ANSI palette) with a blinking block cursor at 14px.
- JetBrains Mono ships with the app — no system font required, works offline.
- GPU-accelerated rendering (WebGL) for crisp text, with automatic fallback.
SSH terminals
You can open SSH connections as terminal tabs. LaraEnv streams its native SSH connection into an xterm.js tab, so a remote shell behaves like any other tab in the workspace. See SSH hosts.
Copy behavior
You can choose how copying works from a preference:
- xterm.js selection — select text and copy as usual.
- Click-to-copy — click to copy directly.
Auto-resize
Terminals auto-resize to track the window, so the canvas always fits the available space as you resize LaraEnv.
Related
- Detached window — pop the terminal out into its own maximized window.
- Agent sessions — organize coding agents by project and working copy.
- Command Center — open terminals and run commands from the palette.
- Source control — review, stage, commit, and push local changes.
- Local MCP access — connect an assistant to the running environment.
- Projects → Configuration — per-project terminal type.
- SSH hosts — connect to remote hosts as terminal tabs.