Skip to content

Repository files navigation

TerminalApp icon

TerminalApp

Your coding agents, one native Windows workspace.

Tiled terminals, resumable projects, live usage visibility, and local worker orchestration.

Windows License: MIT Latest release

TerminalApp workspace launcher

TerminalApp is a native terminal workspace for people who use several coding agents but do not want a dashboard sitting between them and their tools. Each tile is a real ConPTY-backed terminal. Compose a layout, assign a CLI and working folder to every pane, and reopen the whole workspace later with one click.

Claude Code, Codex, Grok, OpenCode, and PowerShell are supported as launch profiles. TerminalApp does not replace those tools, proxy their conversations, or choose their models. Your installed CLI remains the authority.

Built for real multi-agent work

  • A workspace is more than a tab. Split any tile horizontally or vertically, resize gutters, rearrange panes, mix agents, and persist the complete tree—not just a fixed grid.
  • Fast return to context. Recent projects and named workspace layouts reopen with their folders and terminal assignments intact.
  • The terminal still behaves like a terminal. ConPTY, xterm.js, native clipboard access, file drag-and-drop, image-to-temp-file paste, bracket-aware multiline paste, and mouse-mode TUI handling are built in.
  • Agent readiness is visible before launch. Missing CLIs remain visible with an explanation instead of failing into a blank pane.
  • Every provider's allowance is visible together. Claude, Codex, and Grok limits, reset clocks, plans, and warning states share one compact panel.
  • Workers stay local and explicit. A provider-neutral broker lets a lead delegate bounded jobs through MCP, while TerminalApp tracks the work, artifacts, and verification state.
  • Custom agents are first-class profiles. Add, reorder, edit, and launch your own terminal commands alongside the built-in providers.

Tiled sessions

TerminalApp tiled terminal session

TerminalApp uses a recursive split tree rather than a fixed grid. Add panes where they are useful, drag them into a new order, and resize each boundary. Every pane keeps its own PTY, renderer, scrollback, folder, and profile while sharing the surrounding project workspace.

Action Shortcut
New launcher Ctrl + N
Split focused pane right Ctrl + Shift + D
Split focused pane down Ctrl + Shift + E
Close focused pane Ctrl + Shift + W
Move pane focus Ctrl + Alt + /
Insert a newline in agent composers Shift + Enter
Toggle fullscreen F11

Move the pointer to the left edge for the floating command rail: add a tile, start a session, reopen a project, inspect usage, view worker meetings, or adjust terminal settings without surrendering screen space permanently.

One usage view for every provider

TerminalApp multi-provider usage tracker

The usage panel answers the question that usually sends you through three browser tabs: how much room is left before the next reset? It presents every wired provider together, regardless of which terminal currently has focus.

  • Claude shows the five-hour session window, weekly total, and model-specific weekly allowance.
  • Codex shows its session and weekly windows, plus banked limit resets and their expiry.
  • Grok shows its current billing period and next reset.
  • Plan names, percentages, countdowns, and warning states use the same visual language across providers.

TerminalApp does not infer usage from your prompts or terminal contents. The optional tracker contacts the providers' usage endpoints using authentication already managed by their installed CLIs, caches the result locally, and backs off when a provider is unavailable or rate-limited.

Local worker orchestration

TerminalApp ships a native Rust worker broker and an MCP/CLI helper, terminalapp-worker.exe.

The orchestrator and its worker crew are independent

Your interactive tile is the orchestrator. Its provider, model, and effort stay under that CLI's control; TerminalApp never injects worker model settings into it. The worker crew is a separate per-workspace choice.

That means a Claude Code tile can orchestrate Grok workers on grok-4.5, a Codex tile can orchestrate Claude workers on a Claude model you specify, or any orchestrator can start provider-neutral with no default crew.

Layer What you choose Model authority What it does
Interactive orchestrator Claude Code, Codex, Grok, OpenCode, PowerShell, or a custom profile Choose the model inside that CLI Runs the session and decides whether work should be delegated
TerminalApp worker crew A default worker provider plus an optional model identifier Type any model identifier supported by that provider; its CLI validates it Supplies the default provider/model for bounded MCP assignments in that workspace

TerminalApp live worker crew flyout

The compact Worker Meeting flyout lets you change the crew for the active workspace without restarting its terminals. The new provider/model is used on the next delegation; running sessions are not killed or respawned. It also shows who is on the clock, completed and interrupted work, and quick actions for reports or cancellation.

Choosing None means no default crew. A delegation that does not deliberately name a provider is handed back to the orchestrator, so TerminalApp does not bias the session toward Claude, Codex, Grok, or any hidden fallback. The orchestrator can still make an explicit assignment to a provider—and specify a model for that assignment—when the task calls for it. An explicit per-assignment choice takes precedence over the workspace crew.

Every new workspace begins with None, and a crew selected for one workspace is never silently carried into the next one.

The Meeting Room is the audit trail

TerminalApp full worker Meeting Room

The Meeting Room is a monitor, not another prompt form. The lead agent creates bounded assignments through MCP; TerminalApp gives you one place to inspect who ran them, with which provider and permission policy, what they returned, and whether the result has been verified.

  1. Choose a default worker provider and any provider-supported model identifier—or leave None selected for provider-neutral behavior.
  2. The interactive lead decides whether a task benefits from delegation and submits bounded work through MCP.
  3. The broker applies concurrency, timeout, depth, isolation, and permission policy.
  4. Results, attempts, artifact paths, and verification state are written to a local append-only ledger and surfaced in the Meeting Room.

Running work can be cancelled; completed sessions can be opened in a tile, resumed, retried, or reassigned. A meeting stays in awaiting_verification until the lead explicitly marks it verified.

Provider CLIs own authentication. TerminalApp does not collect API keys, silently substitute another provider, or grant unrestricted worker permissions through the UI.

Terminal behavior, finished properly

TerminalApp is not a web dashboard styled to resemble a console. Each pane is a native ConPTY session with independent scrollback, rendering, working directory, and process lifecycle.

  • Drag files into a pane, paste images as temporary file paths, and use bracket-aware multiline paste without mangling shell input.
  • Middle-click autoscroll and mouse-wheel routing work per pane, including terminal applications that own their alternate screen.
  • Clipboard handling remains predictable in mouse-mode TUIs, where an ordinary browser-style right-click can otherwise paste twice.
  • Provider-specific launchers share the same application and configuration while opening directly into Claude Code, Codex, Grok, OpenCode, or the general workspace launcher.
  • Availability checks explain a missing CLI before launch; customized commands remain usable without pretending the stock executable exists.

Download

Download the latest Windows archive from Releases, extract it, and run Terminal.exe.

The archive also contains profile launchers—ClaudeCode.exe, Codex.exe, Grok.exe, and OpenCode.exe—plus terminalapp-worker.exe. The launchers share one application and select a starting profile from their filename. Install and sign in to any provider CLI you want to use separately.

Windows 10/11 x64 and the Microsoft Edge WebView2 Runtime are required. Windows 11 includes WebView2. Community builds are not code-signed, so SmartScreen may show a notice on first launch.

Build from source

Requirements:

  • Node.js 20 or newer
  • Rust stable with Cargo
  • Visual Studio 2022 Build Tools with Desktop development with C++
  • Microsoft Edge WebView2 Runtime
git clone https://github.com/crossps/TerminalApp.git
cd TerminalApp
npm ci
scripts\build-windows.bat

The release-ready executables are written to dist\.

Verification

npm run verify:frontend
npm test

The frontend verifier renders the production UI with deterministic native-command fixtures and exercises the launcher, recursive pane tree, workspace persistence, usage surfaces, worker meetings, and permission behavior. Rust tests cover the broker ledger, scheduling, provider selection, delegation depth, cancellation, timeout, and named-pipe control plane.

Windows-only CDP verifiers under scripts\ exercise the compiled binary's clipboard, file drop, renderer, wheel behavior, autoscroll, tab titles, usage display, and Codex cursor handling.

Privacy and security

TerminalApp has no telemetry, account system, or cloud synchronization. Configuration and broker records stay under the current user's application-data directories.

The optional usage panel reads the local credential files created by the provider CLIs and contacts those providers' usage endpoints directly. It may refresh an expiring OAuth token and write the rotated token back to the same local credential file. Disable usageBar.enabled in the config if you do not want this behavior. See SECURITY.md for the trust boundaries and reporting process.

Configuration

On first launch, TerminalApp writes config.json under %APPDATA%\com.crossps.terminalapp\. The embedded config.default.json documents profiles, rendering, scrollback, workspace history, worker policy, and themes. Existing user values are preserved when newer defaults add fields.

Custom profiles can point at any terminal command. Built-in agent profiles never inject model or effort flags; choose models inside the CLI that owns them.

Contributing

Focused issues and pull requests are welcome. Read CONTRIBUTING.md before changing PTY, clipboard, broker, or provider behavior—those surfaces carry important regression tests and security boundaries.

TerminalApp shares a Windows-tool line with TerminalShot, a local-first screenshot and annotation studio.

License and trademarks

TerminalApp's original source code is available under the MIT License. Provider names and marks belong to their respective owners. TerminalApp is independent and is not endorsed by Anthropic, OpenAI, xAI, or the OpenCode project. See TRADEMARKS.md.

About

Native Windows workspace for tiled coding-agent terminals and local worker orchestration

Topics

Resources

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages