YEN Terminal

GPU-accelerated terminal for macOS (13.0+ required). Install, configure (VT100 / xterm), and GLHF.

YEN is a personal side quest to build an easy-to-customize, fast, and incredibly performant terminal for macOS; I use it every single day.

Feedback is always welcome! Type chat or ping @yenFTW with thoughts.

Summarize via AI:

Get Started

StepAction
1. DownloadOpen the .dmg file
2. InstallDrag YEN to Applications
3. First launchRight-click YEN.app, click Open
4. UpdatesAutomatic via Sparkle (checks on launch)

Terminal History

Terminals have evolved dramatically over five decades. Each generation added capabilities — but also complexity, overhead, and distance from what makes a terminal great.

1978 — VT100

ANSI escape codes. Hardware standardization. The foundation every terminal still builds on.

1984 — xterm

Software terminal for X11. Proved the hardware could be virtualized without losing capability.

2008 — iTerm2

Tabs, profiles, split panes. macOS power users finally had options — but feature creep had begun.

2017 — Hyper

Electron. Web tech. Plugins. Beautiful themes — wrapped in 100MB+ of Chrome. Style over substance.

2021 — Warp, Fig, and others

AI assistance. Cloud sync. Account required. Your commands, sent to servers. The terminal became a product to monetize.

2026 — YEN

Back to fundamentals. GPU rendering. Native speech-to-text. No cloud lock-in. No account required for local desktop use. No AI watching what you type. Just a fast terminal that respects your privacy.

YEN doesn't reject progress — it rejects unnecessary complexity. Everything we add must make you faster without making you dependent on cloud services or AI subscriptions.

Terminal IDE

Most IDEs are text editors that bolted on a terminal panel. YEN takes the opposite approach — start with the fastest terminal on macOS, then add IDE capabilities around terminal-first workflows. No Electron. No web views. No second app to switch to.

The approach

Core actions stay in terminal context. Features that need richer UI (such as Settings, Scratchpad, and overlays) use native macOS panels anchored to active terminal workflow instead of browser-style views.

CapabilityShortcut
GPU terminal — Metal rendering, 60 FPSAlways on
Speech-to-text — on-device, 50+ languagesOption + Space
Settings — 72 curated themes, fonts, cursor, opacity, padding, notifications, split layouts, permissionsCmd + ,
File browser — browsing, syntax-aware previews, bundled static theme / flavor defaultsCmd + Shift + O
Global Chat — built-in chat rooms (Lounge, Feedback, Show & Tell, Support)Type chat in YEN (or yen chat in any shell)
Local weather — Open-Meteo, coordinate-first with ASCII icons, 6-hour hourly forecast, and grouped outputType weather in YEN (or yen weather in any shell)
Screenshot — save window to file and clipboardCmd + Shift + S
Tab sidebar — transient left tab rail with opt-in persistent dockingCmd + Shift + B
Scratchpad — right-side quick notes panel with seeded helper copy, click-away close, Cmd + C/Cmd + V, and highlight-to-auto-copyCmd + Shift + J
Quick Terminal — global hotkey dropdownCtrl + `
Split layout presets — 10 one-click configurationsCmd + Option + 1-0
Bundled tools — fd, rg, fzf, zoxide, bat, jq, and moreZero setup — no homebrew needed
Window state restoration — splits, tabs, positionsAutomatic
IDE workflow control plane — detect / env, search, LSP / AST, share, devcontainer / vscode, explain, verify / gate, workflow / agents, PR review + evidenceyen ide ...
Shell integration — bash, zsh, fish, elvish, nushellAutomatic

New features ship weekly (sometimes daily)!

Traditional IDETerminal-First IDE (YEN)
Editor with a terminal panelTerminal with editing capabilities
Electron or web viewNative GPU rendering
Hundreds of MB at installLightweight from day one
Features you never asked forEach feature is opt-in
Cloud accounts, telemetryNo required desktop account. No desktop telemetry. Website uses anonymous aggregate analytics.

IDE Workflows

YEN ships an IDE workflow command surface in terminal context. These commands are local-first helpers for trust, search, local LSP lifecycle and diagnostics, verification, adapter orchestration, and PR review, designed to avoid context-switching to separate IDE panels.

What ships today

  • Project-scoped search and the desktop Cmd + Shift + P palette search layer on macOS
  • Schema-validated workflows, first-party adapter controls, PR review workspace, and merge-conflict workspace
  • Explicit per-project LSP trust, local runtime lifecycle, and hover / definition / references / rename requests
  • Grouped diagnostics snapshots with freshness status and bounded managed installs
  • Encrypted terminal sharing with expiry / revoke and AST-labeled fallback queries
  • Local-workspace devcontainer control and deterministic VS Code inventory / import
CommandWhat you get
yen ide detect / envProject context, trusted environment loading, and machine-readable env exports
yen ide history / replay / profilePer-project command history, replay, and timing logs
yen ide searchProject-scoped search across files, content, history, and action catalog with source-labeled ranking; the same provider contract powers non-empty desktop palette queries on macOS
yen ide lsp start / status / diagnosticsLocal LSP status and diagnostics, explicit per-project trust, resolver guidance, grouped diagnostics snapshots with fresh / stale visibility, and live request surfaces for hover / definition / references / rename
yen ide ast / devcontainer / vscodeAST fallback, local-workspace devcontainer control, and deterministic VS Code inventory / import with dry-run diff reporting
yen ide share status / host --read-onlyIntegration-first terminal sharing with encrypted tokens, passphrase auth, read-only vs interactive mode, expiry, and explicit revoke over locally installed upterm / tmate, with local token validation before join
yen ide explain (??)Failed-command explanation with project-aware hints
yen ide verify / gateVerification bundles + risk-aware approval checkpoints
yen ide workflow run --dry-runOrdered workflow plans, trust gating, and step-level logs
yen agents list / open --dry-runFirst-party adapter board status plus fail-open launch planning for Claude/Codex workflows
yen ide pr-reviewFocused PR diffs, loop / loop-script navigation, inline comments, evidence and review templates; macOS also gets a desktop workspace launched from the command palette with local inline-comment / evidence staging plus explicit posting and decision actions
yen ide timeline / pr-notifyLocal audit timeline plus GitHub review-request notifications

Quick start:

Terminal
$ yen ide detect
yen ide env list
yen ide lsp status
yen ide lsp status --format json
yen ide lsp diagnostics
yen ide lsp hover src/app.ts:12:3
yen ide lsp install status --all
yen ide share status
yen ide share host --read-only --ttl-minutes 30
yen ide share revoke
yen ide ast status
yen ide devcontainer status
yen ide vscode inventory
yen ide vscode import --dry-run
yen ide search verify
yen ide explain --last
yen ide verify --quick --no-security
yen ide workflow run quick-check --dry-run
yen agents list
yen ide gate --dry-run -- git reset --hard
yen ide pr-review 123 --loop --loop-script "e,q"
yen ide pr-review 123 --inline src/app.ts:42 --inline-body "Needs guard" --post
yen ide timeline --limit 20

On macOS, the same search contract appears in the desktop command palette. Press Cmd + Shift + P, keep the query empty for action launching, or type to search built-in actions first. When the action catalog misses, repo-backed terminals fall back to project files, content, diagnostics, and recent history, with generated / vendor trees excluded from indexing.

Empty-query action launching also exposes Review Pull Request and Resolve Merge Conflicts alongside quick IDE actions for LSP Status, LSP Diagnostics, LSP Install Matrix, Share Status, Share Host (Read-Only), Share Revoke, Devcontainer Status, VS Code Inventory, VS Code Import (Dry Run), and AST Status.

For trusted local repos, the review actions open the desktop PR review workspace and the desktop merge-conflict workspace. The merge-conflict flow is scoped to marker-based text conflicts and confirms + revalidates the file before staging. Terminal-first LSP requests, encrypted terminal sharing, bounded managed installs, devcontainer orchestration, and VS Code import all stay local-first, opt-in, and project-scoped.

Speech-to-Text

On-device speech-to-text — no AI services, no cloud. Hold Option + Space in any app.

Hold Option + Space in any app — YEN, Safari, VS Code, Notes, anything — speak, and release. Your words appear at the cursor. Audio never leaves your Mac. Read more on the blog.

Works on macOS 13+. On macOS 26+, YEN uses Apple's SpeechAnalyzer with DictationTranscriber, sessions are unlimited, and missing language packs install automatically (foreground-gated; background attempts use non-modal recovery). In-app paste restores the previous clipboard shortly after paste; cross-app synthetic paste keeps dictated text on the clipboard if delivery cannot be proven. Live Transcript Preview is available in the floating overlay, while Translate-on-Dictate remains EXPERIMENTAL and off by default. If translation assets are missing, YEN can ask macOS to prepare them only while YEN is frontmost in Settings. The translation source stays bound to the recognizer locale used for that capture session, and stop-time translation runs only for pairs that are already installed.

Recording indicator

A recording dot blinks in the menu bar while listening. Release to paste.

FeatureYEN
Privacy100% on-device (macOS Speech Recognition)
Binary sizeZero bloat — no AI models
Languages50+ (whatever macOS supports)
CompatibilityAny macOS app — Safari, VS Code, Notes, Slack, plus shell, vim, nano, ssh
CostFree forever
OfflineYes (macOS 13+, after language assets are installed)
DurationmacOS 26+: unlimited; older macOS: 60s (auto-pastes)

Pro tip: On older macOS, release and press again for longer content. Enable Launch at Login in Settings> Sounds > Speech Setup for dictation without a terminal window open.

Settings

Press Cmd + , to toggle Settings. The panel uses a left sidebar with five sections — General, Sounds, Workspace, Themes, Keyboard — plus global search and in-panel Import/Export/Reset actions. Most changes apply in real-time across every open tab.

YEN Settings panel showing font, cursor, appearance, and dictation options

72 curated bundled themes with live previews and instant apply. Comfort settings (font, cursor, opacity, padding) stay independent so you can switch themes without losing your preferred ergonomics. Window Border controls live in General > Appearance. Workspace includes instant toggles for Tab Sidebar (Cmd + Shift + B) and Scratchpad (Cmd + Shift + J).

The Sounds section includes Speech Setup with live permission status for Accessibility, Microphone, Speech Recognition, and local speech readiness. It also includes per-stream notification controls for General, Build, Chat, Mail, and Calendar events, with independent sound, volume, and delivery mode settings (Off, Banner Only, Sound Only, Banner + Sound). Translate-on-Dictate remains experimental in this section; compatible targets follow the current recognizer locale policy, and translation asset prompts stay anchored to the visible Settings flow instead of background dictation.

The Keyboard section includes reserved-shortcut disclosure, conflict detection, and inline shortcut recording with clear constraints: fixed shortcuts and duplicate-action rows stay read-only, shortcuts must include Cmd/Ctrl/Option, recording follows your active keyboard layout, Esc cancels recording, and capture times out after 10 seconds. Importing a saved settings file validates values before applying changes.

Settings export/import carries both config.yen and the Settings-managed preferences intentionally kept outside config: Workspace toggles, the Legacy Catalog theme-browser toggle, Window Border controls, dictation translation/live-preview state, and notification routing/sound selections. Machine-local state such as permission grants, Launch at Login, installed user themes, and downloaded or imported sound assets stays on the current Mac.

Notification power users also get terminal command-finish controls, focused-window behavior, and one-click sound-pack management:Download All Sound Packs relabels to Update Sound Packs once the official library is installed, and Remove Downloaded Packs reclaims local storage without touching imported custom sounds. Use Cmd + Shift + P then type settings themes to jump directly to any section.

YEN Settings panel showing 72 curated bundled themes with search and color previews

Advanced configuration:

Config path
~/Library/Application\ Support/com.yenchat.yen/config.yen

Tab Sidebar

Press Cmd + Shift + B to open the Tab Sidebar. In transient mode it appears as a floating left rail for the active terminal window. Use the header pin button, command palette, or Settings > Workspace to switch it into the persistent docked rail.

SurfaceWhat it shows
TransientFloating panel beside the active terminal. Esc dismisses it unless you are editing a title.
PersistentFixed-width rail docked inside standard terminal windows. Fullscreen and Quick Terminal fail closed instead of forcing the rail onscreen.
MetadataEach row can show working directory, git state, and recent task / build status from the focused split when local path data is trustworthy.
NavigationSelect a row to switch tabs. Addressable tabs also show native Cmd + 1-9 labels, and the footer includes a New Tab action.
Quick controlsDouble-click a title to rename it. Persistent mode edits inline; transient mode hands off to the native tab-title editor. Renamed titles restore with the window after relaunch. Use the color chip to set a tab color, click the pin to switch modes, and use the gear button to jump straight to Workspace settings.

When YEN cannot trust the focused split's local path context (terminal multiplexers, remote sessions, detached commands, or empty project state), the sidebar omits cwd and git summaries instead of showing guessed metadata.

Split Pane Labels

Each split pane can have a custom label displayed as a themed pill at the bottom-left corner. Open the command palette (Cmd + Shift + P) and search Rename Split Label to set or clear a label. Labels persist across window restores, tab switches, and session restarts.

Independent from terminal titles

Split labels are separate from tab / window titles. When no custom label is set, the pill shows the surface title, working directory leaf, or "Terminal" as a fallback. Labels adapt their foreground color to the terminal background for readable contrast in any theme.

BehaviorDetail
Set / clearCommand palette → Rename Split Label. Leave blank to revert to automatic.
PersistenceLabels survive window restore, force-quit recovery, and Quick Terminal sessions.
VisibilityHidden when a pane is too small (below 140 x 80 points), during drag / drop, or when hovering a URL.
ThemingPill background and foreground adapt to the terminal background color for readable contrast in any theme.

File Browser

Press Cmd + Shift + O to open the file browser. It launches inside the terminal — not in a floating window, not in a sidebar. Launch is scoped to the active terminal surface and does nothing when another window owns focus. Browse directories, preview files, and manage your project without leaving the terminal surface.

Terminal-native with cd-on-quit

Renders inside the terminal with async I/O — large directories load instantly. Press q to exit and your shell follows to the last directory you visited. Press Enter on code files for a colorized read-only view, or O for open-with.

FeatureDetails
Syntax-highlighted previewsCode, images, archives, videos, PDFs
Quick LookSpace for native macOS preview
Search and fuzzy find/ to search, z to jump to frequent dirs
File operationsCopy, move, delete, undo, bulk rename, archive extract
Vim + mouse navigationh / j / k / l, visual selection, click, scroll
Git status indicatorsModified, staged, untracked icons inline
cd-on-quitq to exit; shell follows to last directory
Open in editor / Findere for $EDITOR, g r for Finder
Full shortcut referencePress ? inside the file browser

Commands & Shortcuts

Keyboard shortcuts:

ActionKey
Command paletteCmd + Shift + P
SettingsCmd + ,
File browserCmd + Shift + O
Speech-to-textOption + Space
Split layout presetsCmd + Option + 1-0
Split horizontal / verticalCmd + D / Cmd + Shift + D
New tab / windowCmd + T / Cmd + N
Close tab / paneCmd + W
Quick TerminalCtrl + `
ScreenshotCmd + Shift + S
Tab sidebarCmd + Shift + B
ScratchpadCmd + Shift + J
Copy screen file pathCmd + Ctrl + Shift + U
Paste screen file pathCmd + Shift + U
Open screen fileCmd + Option + Shift + U
Copy-on-selectSelect text; hold Shift in TUI apps
Font size +/-Cmd + + / Cmd + -
Toggle fullscreenCmd + Enter
Rename split labelCommand palette → Rename Split Label

CLI commands:

Commands run immediately inside YEN. In external shells, run yen init zsh or yen init bash once, then restart the shell so wrappers like y, chat, mail, and weather, btop, and fastfetch route to YEN.

CommandDescription
chatGlobal chat rooms (Lounge, Feedback, Show & Tell, Support)
mail (email)Gmail client (compose, reply, forward, labels, search)
calendarGoogle Calendar (agenda / month / day / week, recurring events, RSVP)
weatherLocal weather ( --city, --metric/--imperial)
btop (monitor, resources)System monitor TUI (bundled btop)
fastfetch (fetch)System info snapshot (bundled fastfetch)
biosSystem info snapshot with YEN BIOS branding
browse (files, fm)File browser
yFile browser with cd-on-quit
yengit (lazygit, gitlazy, gityen)Git TUI (bundled lazygit)
yen helpFull command reference and aliases
yen ide --helpTerminal IDE workflow commands (detect / env, LSP / AST, share, devcontainer / vscode, history / search, explain, verify / gate, workflow automation, pr-review with loop-script + inline comments, timeline)
yen agents --helpAdapter board commands for first-party Claude / Codex workflows and workspace templates
yen +list-themesList all 72 curated bundled themes
yen +edit-configOpen config in $EDITOR
yen init zshShell integration for external zsh
yen init bashShell integration for external bash
yen updateCheck for a newer release
yen --versionShow version

App keys (Chat / Gmail / Google Calendar defaults):

ActionKey
Chat
Switch roomsTab / Shift + Tab / /
Scroll timeline / / Page Up / Page Down
Jump to top / latestHome / End
Send / new lineEnter / Option + Enter
Quit / change handle/q / /h
Paste imageCtrl + V or drag file
Mail
Open / archive / trashEnter / e / #
Reply all / undoa / z
Next / previous email (reader)j / k
Calendar
Create / open eventc / Enter
Navigate / todayj / k / t
Switch viewsa / m / d / w

Need the complete command + alias reference? Run yen help. For full file browser shortcuts, press ? inside the file browser.

Custom keybindings:

Open Settings > Keyboard to view all shortcuts, detect conflicts with popular apps, and re-record editable shortcuts inline. Fixed app shortcuts remain locked, duplicate-action rows stay read-only, and layout presets only target a foreground terminal window. For advanced config, edit the config file directly.

Troubleshooting

  • App won't open: Right-click YEN.app → Open, or allow in System Settings → Privacy & Security.
  • Commands not found: YEN commands only work inside YEN terminal, not Terminal.app.
  • Speech-to-text not working: Grant Accessibility, Microphone, and Speech Recognition permissions in System Settings → Privacy & Security. Dictation listens to exact Option + Space only (no Cmd/Ctrl/Shift). Check the menu bar dropdown for blocked-state recovery actions.
  • Permissions granted but still blocked: In Settings > Sounds > Speech Setup, check Local Speech status and use Re-check.
  • Option + Space conflicts: Check for conflicts with input source, Spotlight, Alfred, or Raycast shortcuts. Use Settings > Keyboard for fixed-shortcut conflict guidance.
  • Layout shortcut not firing: Use exact Cmd + Option + 1-0 with no extra modifiers, and keep a terminal window focused. YEN blocks layout presets while Settings or another utility window is key instead of retargeting a background terminal.
  • Cursor style / blink not previewing: Changes are applied, but preview appears after you refocus a terminal window (unfocused terminals show a hollow block cursor).
  • Opacity slider looks unchanged: Background opacity applies after app restart. Use Window Border for an immediate focus cue.
  • Dictation menu shows blocked: Check the menu bar dropdown for recovery actions. In Settings > Sounds > Speech Setup, use Re-check to verify local speech service status.
  • Layout shortcuts not working in Settings: Cmd + Option + 1-0 is intentionally ignored while Settings is focused. Click a terminal window first, because layout presets only target a foreground terminal window.
  • File browser not opening: Verify the terminal window is focused, not the Settings panel or another window.
  • "command not found: y": Shell integration isn't active in this shell. In external shells, run yen init zsh (or bash) and restart that shell. In YEN, this usually means integration was disabled; use browse instead.
  • mail / chat / weather / btop / fastfetch runs a system command: Your shell integration is missing / outdated. Re-run yen init zsh (or bash) in external shells, then restart the shell.

Reset config to defaults:

Terminal
$ rm ~/Library/Application\ Support/com.yenchat.yen/config.yen