Terminal and Activity tab
Every agent session in Kangentic has a dedicated terminal powered by xterm.js. You can watch agents work in real-time, review their output, and interact when needed.
Bottom panel
Section titled “Bottom panel”The bottom panel is your primary monitoring interface for the current project’s sessions; for every project’s agents at once, open the Agent Monitor. It has two types of tabs:
Session tabs
Section titled “Session tabs”Each running agent gets its own terminal tab. Click a tab to switch between sessions; double-click one to open the task’s detail window. The active tab is highlighted, and each tab carries a state indicator:
- Green spinner - the agent is actively working
- Amber dot - the agent is idle or waiting for input; it pulses on tabs you have not viewed since the agent went idle
- Green dot - the session is running but has no activity data yet
- Gray dot - the session is not running
A task’s terminal is only ever in one place. While its detail window is open - on the board, inside the Agent Monitor, or in a detached pop-out - the session’s tab leaves the panel and returns when that window closes. Once no tabs remain, the panel collapses.
Activity tab
Section titled “Activity tab”The leftmost tab is the Activity tab - a structured list of events from all sessions. Unlike the terminal tabs which show raw PTY output, the Activity tab shows clean, readable entries:
- Tool calls (which tool, which file)
- Idle events (agent stopped or is waiting)
- Session state changes (spawned, suspended, resumed)
The Activity tab is a plain DOM list (not a terminal emulator), so it’s lightweight and easy to scan. It’s the best way to get an overview of what all your agents are doing without switching between individual terminal tabs.
Resize
Section titled “Resize”Drag the panel divider to resize the bottom panel. The terminal resizes to match.
Per-session terminals
Section titled “Per-session terminals”Each running agent gets its own terminal tab showing:
- The agent’s conversation output
- Any commands the agent runs
- File modifications and tool usage
- Agent thinking and decision-making
You can have multiple terminal tabs open simultaneously and switch between them to monitor different agents.
While a session’s CLI boots - a fresh spawn, a resume after a restart, or a move that restarts the session - a shimmer overlay covers the terminal with a context-aware label saying what is happening, then lifts the moment real output arrives. The Command Terminal shows the same overlay while its CLI initializes.
Task detail window
Section titled “Task detail window”Click a task card to open its detail window, which takes ownership of the session’s terminal from the bottom panel while it is open. The same handoff happens when a detail window opens inside the Agent Monitor: wherever the detail is, that is where the terminal lives. When you close the window, the bottom panel reclaims the terminal and the agent keeps running.
Features
Section titled “Features”Scrollback
Section titled “Scrollback”Terminal sessions maintain a full scrollback buffer. Scroll up to review earlier agent output without losing your place. The buffer persists for the lifetime of the session.
WebGL acceleration
Section titled “WebGL acceleration”Terminal rendering uses WebGL for hardware-accelerated text drawing. If WebGL is unavailable (e.g., in some VM environments) or the GPU drops the WebGL context, xterm.js falls back to its DOM renderer while Kangentic keeps retrying WebGL on a slowing schedule - since v0.41.0 there is no permanent fallback, because Chromium refuses WebGL for up to two minutes after a GPU-process crash, and the old couple-of-retries gave up inside exactly that window. A terminal that lost its context comes back to WebGL on its own once the GPU allows it.
One launch does not retry at all: the one that came up with graphics acceleration off after a graphics failure killed the previous run. There is no graphics process to come back to, so every terminal reports the DOM renderer and arms nothing.
File drop
Section titled “File drop”Drag files from your file manager onto the terminal to insert their file paths into the active session. Since v0.42.0 every dropped path is delivered as a paste, the same way a native terminal delivers a drop, which is what lets an agent TUI attach an image from its path. With Claude Code in the foreground, a PNG, JPEG, GIF, or WebP file becomes an [Image #N] chip, one per file, and the images land in your next message directly. Gemini CLI and OpenCode attach PNG, JPEG, and GIF drops the same way. An image in a format the agent does not attach from a path (a BMP, an ICO) is converted to a PNG copy first, saved next to the clipboard captures, and that copy is what gets pasted, so it attaches too. An SVG, or a file whose bytes are not an image, gets an explicit “Read this image: …” instruction under Claude Code (Claude reads SVG markup with its Read tool) and the bare path under other agents. Any other file is inserted as its bare path. Paths containing spaces are automatically quoted. Dropping several files inserts them separated by spaces. A visual overlay appears when files are dragged over the terminal area.
Copy, paste, and select
Section titled “Copy, paste, and select”Select text in the terminal to copy it. Copying is routed through the main process, so it works reliably regardless of window focus, and soft-wrapped lines are rejoined so long paths and commands copy cleanly. On all platforms, you can also right-click in the terminal to paste from the clipboard. TUI agents that emit OSC 52 clipboard sequences (for example, copying a mouse selection inside Claude Code’s TUI) can set your system clipboard directly; for safety, Kangentic honors these writes but never lets a TUI read your clipboard back.
Ctrl+V / Cmd+V pastes clipboard text directly. If the clipboard holds an image instead - a screenshot, say - Kangentic saves it to a temporary PNG and pastes the file’s path into the terminal the way a native terminal delivers a dropped file: as a bracketed paste when the program in the terminal asked for one, as plain text otherwise. With Claude Code in the foreground, the pasted path becomes an [Image #1] chip and the image lands in your next message directly, with no Read tool call and no extra model round trip; Claude still knows the file’s path on disk. Kangentic’s own capture is more reliable than the CLI’s clipboard reader, which can silently miss a Windows Snipping Tool image. Gemini CLI and OpenCode attach the pasted capture the same way. Agents that do not attach from a pasted path receive the quoted path as text. At a plain shell prompt the quoted path is inserted as text and nothing runs. Paths are quoted for the active shell.
Two shell-specific limits apply to a dropped or pasted image on Windows. Under Git Bash the path is converted to /c/..., which Claude Code (a Windows process) cannot open, so the image arrives as text; WSL’s /mnt/c/... form reads fine. Under a Unix-style shell a file name containing an apostrophe is quoted with '\'', which the path scan cannot undo, so that file also arrives as text.
The saved image gets the same 2000 px long-edge cap as a pasted attachment. The temp directory is pruned on each paste: files older than 24 hours go, and only the 40 most recent are kept regardless of age. Pruning is best-effort, so a file another process is holding open is retried on the next paste rather than turning into a failed paste.
Copyable output blocks
Section titled “Copyable output blocks”Per-message and per-tool-output copy buttons live in the read-only conversation viewer - opened from a task detail window’s View conversation pill or a Conversation Memory search hit: hover a turn to reveal a copy button that grabs that block’s clean content. In the live terminal, use plain selection copy (above).
Voice dictation
Section titled “Voice dictation”Kangentic can transcribe speech into the terminal input with local push-to-talk voice-to-text. Enable it in Settings > Dictation, then hold the push-to-talk key (bound under Hotkeys) and speak; on release the transcription is inserted and, by default, submitted to the agent. Transcription runs on-device (a live preview model, and in some modes a refinement pass on release), with the mode, language, and a trailing-capture buffer all configurable, and an optional Cloud endpoint for the final pass.
A terminal is one of several destinations. Since v0.36.0 a focused text field anywhere in the app outranks every terminal, so dictation also fills a task title, a search box, or a field on a page loaded in the Browser pane. See Where the text goes for the full resolution order, and Dictation for the feature.
Terminal colors
Section titled “Terminal colors”The Terminal settings tab (Settings > Terminal) styles every terminal surface at once - the bottom panel, the task-detail terminal, and the Command Terminal window. These are global, machine-level cosmetics, not per-project.
Colors
Section titled “Colors”Set the terminal background, foreground, and cursor color with individual color swatches. Any slot you leave alone falls back to the built-in default: a near-black #0c0c0c background with #e4e4e7 foreground and cursor. Reset to default clears every customization at once.
Presets
Section titled “Presets”A preset grid seeds the swatches in one click. The built-in default comes first, followed by a theme-match preset that mirrors your current app theme (skipped when it would just duplicate the default), then a set of curated schemes. Picking a preset fills the swatches, which you can then fine-tune.
ANSI palette
Section titled “ANSI palette”The 16-color ANSI palette agents use for colored output (git diff, ls --color, and TUI chrome) is a fixed built-in based on Windows Terminal’s Campbell scheme. It is not individually editable - only background, foreground, and cursor are user-set - so colored CLI output stays legible against whatever background you choose.
Font family is a system-font picker: start typing and choose from the fonts installed on your machine via an autocomplete field. Font size (8 to 32 pixels) and Cursor style (block, underline, or bar) sit alongside it, and a Word delete on Backspace toggle makes plain Backspace delete the previous whole word. Like colors, these apply to every terminal surface.
Context bar
Section titled “Context bar”An info strip sits beneath the terminal, in the bottom panel and in the task detail window, showing live session telemetry:
- Shell and agent version the session was launched with
- Elapsed time - a ticking wall-clock timer since the session started
- Model, session cost, and token usage (input + output)
- Tool calls - a live count of completed tool calls. Click the pill to open the per-tool table (calls, time, average, and, for Claude, the tokens each tool’s output took up), the same one each run on a completed task’s Usage tab opens. The count covers every run of the session, so it does not drop to 0 when the session resumes after an app restart or a pause. A column that runs in its own isolated session, such as a Code Review column, keeps its own count.
- Context window fraction (e.g.
28k / 200k) with a progress bar. The tooltip breaks this down into cache vs. conversation tokens. - Rate-limit bars (Claude only) - two bars show your current 5-hour session window and weekly plan-usage quota, with a reset-time hint on hover. These only appear when Claude reports quota usage in its
status.json.
Most pills are individually toggleable under Settings > Task (the Context bar card) or the contextBar.* keys - see Configuration reference. The model and effort pills always show when the adapter reports them and double as click-targets for the per-task model/effort picker, so they have no show/hide toggles.
Model picker
Section titled “Model picker”The model dropdown (in the context bar picker and in per-task and per-column override dialogs) is fed by two sources: the models the agent CLI advertises, plus a persistent cache of every model ID Kangentic has seen you actually use. New models are discovered automatically - switch to one via the CLI’s /model command and it appears in the dropdowns from then on, surviving restarts, with no app update needed.
No adapter ships a list of model names (since v0.41.0). Every list is either asked of the CLI - Cursor through cursor-agent --list-models, Antigravity through agy models, Ollama through ollama list, Grok from the models cache the CLI maintains itself, Claude from its own /model picker - or scanned out of the agent’s own session history, which is how Codex, Copilot, Gemini, Qwen, and Kimi report what they can run. Either way the answer is read fresh rather than accumulated, so a model your CLI stops serving leaves the dropdown instead of lingering. The half that does persist is narrower than it sounds: it holds only models you have actually run, learned from a live session’s usage report.
The reason for the change is that a list kept in Kangentic is stale the day a vendor ships. Cursor’s was still offering GPT-4o and Claude 3.5 Sonnet while the CLI served 223 models, none of them those. Deleting it was not enough on its own, because the stale names had already been written into every config on disk, so upgrading to v0.41.0 clears the remembered-models cache once. Nothing is lost that the CLI still reports, and a model you run again is remembered again on its first usage tick.
When a CLI cannot be asked - an auth failure, a listing command that errors - the dropdown reports no models rather than a guess, and the picker falls back to a free-form text field so you can still type an exact model ID.
To keep the list readable, near-duplicate IDs are grouped and given friendly, humanized labels. Each base model gets one row; a 1M chip on the row selects its [1m] long-context variant; and a small context-window badge (like 200K or 1M) shows the model’s context size, learned from real usage rather than hardcoded.
Since v0.44.0, when the agent offers floating aliases, the dropdown leads with a Latest group: one row per model family, each with the version it runs today beside it. Pick one and the task or column follows each new release of that family, with no edit when a vendor ships. Today Claude is the agent that offers them, read from its own /model picker. The versions those aliases run, older generations, and dated pins then sit in one collapsed Specific versions section, grouped by model with the newest first. A current version with no alias stays in the main list. For an agent without aliases, whole superseded generations and dated snapshot builds (like claude-haiku-4-5-20251001) collapse into an Older versions section instead. Either section auto-expands when your search only matches inside it. A pinned version that a newer one has superseded says so in the picker (“Sonnet 5.5 available”). Opening the dropdown also rescans for newly installed models, so a model you just gained access to shows up without a restart. Every exact model string stays selectable - grouping is display-only and the chosen ID is passed verbatim at spawn time.
Agent messages on cards
Section titled “Agent messages on cards”A running agent’s newest message also shows on its task card, in place of the description. The message trail under Card indicators describes it and the Card preview setting that picks what the card shows.
Terminal and session state
Section titled “Terminal and session state”The terminal state is tied to the agent session:
- Running sessions - Terminal is live, showing real-time output
- Suspended sessions - Terminal shows the last output before suspension. When resumed, new output continues from where it left off.
- Completed sessions - Terminal is read-only, showing the full session history
Keyboard shortcuts
Section titled “Keyboard shortcuts”Standard terminal keyboard shortcuts work within Kangentic’s terminal:
| Shortcut | Action |
|---|---|
| Ctrl+C | Send interrupt to the agent process (Ctrl on every platform) |
| Ctrl+C / Cmd+C (also Ctrl+Shift+C / Cmd+Shift+C) | Copy selected text - on Windows and Linux, plain Ctrl+C copies only while text is selected, so Ctrl+Shift+C always copies |
| Ctrl+V / Cmd+V (also Ctrl+Shift+V / Cmd+Shift+V) | Paste from clipboard |
| Right-click | Paste from clipboard |
See also
Section titled “See also”- Activity detection - the activity state shown next to each terminal
- Task detail window - the window that takes ownership of a session’s terminal
- Notifications - desktop alerts when terminals go idle
- Agent Monitor - every project’s sessions in one surface
- Session persistence - how terminal scrollback survives restarts
Kangentic is free and open source. A star helps other people find it.
Star on GitHub