Get Started
| Step | Action |
|---|---|
| 1. Download | Open the .dmg file |
| 2. Install | Drag YEN to Applications |
| 3. First launch | Right-click YEN.app, click Open |
| 4. Updates | Automatic via Sparkle (manual check plus optional automatic checks) |
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 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 I add must make you faster without making you dependent on cloud services or AI subscriptions.
Terminal IDE
YEN starts with a native macOS terminal and layers IDE workflows around it. No Electron, no web views, and 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.
| Capability | Shortcut |
|---|---|
| GPU terminal — Metal rendering, 60 FPS | Always on |
| Speech-to-text — on-device, 50+ languages | Option + Space |
| Settings — 72 curated themes, fonts, cursor, background image import, opacity, padding, notifications, split layouts, permissions | Cmd + , |
| File browser — browsing, syntax-aware previews, bundled static theme / flavor defaults | Cmd + 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 output | Type weather in YEN (or yen weather in any shell) |
| Screenshot — save window to file and clipboard | Cmd + Shift + S |
| Tab sidebar — transient left tab rail with opt-in persistent docking | Cmd + Shift + B |
| Scratchpad — right-side quick notes panel with seeded helper copy, click-away close, Cmd + C/Cmd + V, and highlight-to-auto-copy | Cmd + Shift + J |
| Quick Terminal — global hotkey dropdown | Ctrl + ` |
| Split layout presets — 10 one-click configurations | Cmd + Option + 1-0 |
| Bundled tools — fd, rg, fzf, zoxide, bat, jq, and more | Zero setup — no homebrew needed |
| Window state restoration — splits, tabs, positions | Automatic |
| IDE workflow control plane — detect / doctor / env, search, LSP / AST, share, devcontainer / vscode, explain, verify / gate, workflow / agents, PR review + evidence | yen ide ... |
| Shell integration — bash, zsh, fish, elvish, nushell | Automatic |
| Traditional IDE | Terminal-First IDE (YEN) |
|---|---|
| Editor with a terminal panel | Terminal with editing capabilities |
| Electron or web view | Native GPU rendering |
| Hundreds of MB at install | Lightweight from day one |
| Features you never asked for | Each feature is opt-in |
| Cloud accounts, telemetry | No required desktop account. No desktop telemetry. Website uses anonymous aggregate analytics. |
IDE Workflows
YEN adds IDE workflows directly to the terminal. The yen ide commands cover workspace trust, search, debugging, local LSP, verification, adapters, and PR review without pushing you into a separate editor UI.
What ships today
- Workspace trust center over env, LSP, debugger, devcontainer, sharing, and workflow/native-task approvals with latest local audit metadata
- Debugger status/trust summaries plus a local and SSH-backed execution baseline over shared semantic file targets, project trust, and timeline/state evidence instead of a separate debugger config system
- Project-scoped search and the desktop
Cmd + Shift + Ppalette search layer on macOS - Schema-validated workflows, first-party adapter controls, PR review workspace, and merge-conflict workspace with semantic editor targets plus delta-backed hunk previews
- Explicit per-project LSP trust, local runtime lifecycle, and hover / definition / references / code-actions / rename requests
- Grouped diagnostics snapshots with freshness status and bounded managed installs
- Encrypted terminal sharing with expiry / revoke plus parser-labeled AST fallback for Python, JS/TS, Go, and Swift
- Local devcontainer control plus explicit remote devcontainer lifecycle parity, and deterministic VS Code inventory / import with migration reports and cleanup checklists
| Command | What you get |
|---|---|
yen ide doctor | Aggregated repo health with blocker / warning findings, verify readiness / security state, debugger readiness, concrete remediation copy, and machine-readable text / json / env output over detect, env, LSP, debug, devcontainer, and verify state |
yen ide trust status / revoke / reset | Workspace trust center over env, LSP, debugger, devcontainer, terminal sharing, and workflow/native-task execution with active-state visibility, last action / run metadata, debugger summary/details report references, and wrapper-first revoke / reset controls |
yen ide debug status / start | Debugger status/trust summaries plus local and SSH-backed execution with trust gating, semantic path:line targets, explicit adapter-family reporting for Python / Node / executables, dedicated summary/log evidence for real runs, and honest blocked-topology guidance for devcontainer, attach, and full DAP-style flows |
yen ide detect / env | Project context, trusted environment loading, and machine-readable env exports |
yen ide history / replay / profile | Per-project command history, replay, and timing logs |
yen ide search | Project-scoped search across files, symbols, content, history, diagnostics, and the action catalog with source-labeled ranking; the same provider contract powers non-empty desktop palette queries on macOS, including semantic file:line targets for symbols, content, and diagnostics plus CODEOWNERS / git-history routing hints in repo-backed CLI search |
yen ide lsp start / status / diagnostics | Local 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 / code-actions / rename |
yen ide ast / devcontainer / vscode | Parser-backed AST fallback for Python, JS/TS, Go, and Swift with explicit engine labels and Rust/Zig no-fallback guidance, plus local devcontainer control, explicit remote devcontainer status / up / shell / down parity keyed by workspace identity, and deterministic VS Code inventory / import with extension/parity guidance, migration-report artifacts, and dry-run diff reporting |
yen ide share status / host --read-only | Integration-first terminal sharing with encrypted tokens, passphrase auth, read-only vs interactive mode, expiry, explicit revoke, and remote-aware execution/reconnect labels over local or SSH-backed upterm / tmate sessions, with local token validation before join |
yen ide explain (??) | Failed-command explanation with project-aware hints |
yen ide test status / run | First-class test status over the verify-backed runner contract, with grouped failure summaries, semantic file:line targets, explicit debug handoffs when the local debugger can truly launch the failing target, targeted runner scope, and rerun-failed execution |
yen ide verify status / verify / gate | Read-only verify readiness / security snapshots, verification bundles, semantic jump reports, local test-to-debug handoffs for launchable failing targets, and risk-aware approval checkpoints |
yen ide format / lint / fix status / run | Repo-native quality baseline with recommended defaults, explicit companion coverage for repo-implied polyglot surfaces, read-only dry-run planning, changed-file scoping when trustworthy, workflow trust, approval gating, desktop command-palette actions for Format/Lint/Fix Status, and dedicated summary/details/semantic reports |
yen ide workflow discover / run --native | Repo-native task discovery over package / make / just / task sources, explicit no-fallback native execution, trust gating, approval checkpoints, semantic jump reports, and explicit remote `ssh://...` discovery, dry-run preview, and authored/native execution with local-record trust; `--watch` stays local-only |
yen agents list / timeline / note / export / open --dry-run | First-party adapter board status, workspace-scoped session timeline plus local human/supervisor notes with lightweight approval/handoff templates and optional session/slot validation, including latest-session binding for slot-only validation, plus Markdown/JSON evidence export with linked local verify/test evidence, shared evidence-status labels (missing-report, stale-report, unverified, exported-with-gaps), stable JSON schema metadata plus typed event fields for automation, explicit adapter path/probe/launch/fallback metadata, workspace-keyed repo context plus shared risk summary, semantic PR-review jump targets, redacted local artifacts with short default retention, positive-day overrides, explicit risk flags/evidence gaps, linked quality / workflow report artifacts, merge-readiness, PR review evidence, decision, and inline-comment artifacts / current-branch CI / build-watch evidence, rendered in text, Markdown, and JSON, and fail-open launch planning for Claude/Codex workflows |
yen ide pr-review | Focused PR diffs, loop / loop-script navigation, inline comments, semantic hunk targets, review-routing context, and review templates; macOS also gets a desktop workspace launched from the command palette with local inline-comment / evidence staging, semantic file + hunk targets, delta-backed focused previews, latest verify readiness / security plus semantic evidence previews, and explicit posting and decision actions |
yen ide timeline / pr-notify | Local audit timeline plus GitHub review-request notifications, current-branch CI status, and the latest local build-watch snapshot |
Quick start:
$ yen ide doctor
yen ide doctor --format json
yen ide trust status
yen ide trust status --format json
yen ide debug status
yen ide debug status --format json
yen ide debug status ssh://dev@example.test/Users/dev/app
yen ide debug status --devcontainer
yen ide debug status ssh://dev@example.test/Users/dev/app --devcontainer
yen ide debug tui
yen ide debug tui --devcontainer
yen ide debug tui ssh://dev@example.test/Users/dev/app --devcontainer --format json
yen ide debug trust
yen ide debug trust ssh://dev@example.test/Users/dev/app
yen ide debug start src/app.py:12 --dry-run --format json
yen ide debug start src/app.py:12 --managed
yen ide debug start src/app.py:12 --managed --devcontainer
yen ide debug continue
yen ide debug transcript --tail 40
yen ide detect
yen ide env list
yen ide lsp status
yen ide lsp status --format json
yen ide lsp diagnostics
yen ide lsp code-actions src/app.ts:12:3
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 ast definition Widget
yen ide ast references Widget
yen ide devcontainer status
yen ide devcontainer trust ssh://dev@example.test/Users/dev/app
yen ide devcontainer status ssh://dev@example.test/Users/dev/app
yen ide devcontainer up ssh://dev@example.test/Users/dev/app
yen ide vscode inventory
yen ide vscode import --dry-run
yen ide search verify
yen ide parse --format tsv build.log
yen ide explain --last
yen ide format status
yen ide format run --dry-run --changed
yen ide lint status
yen ide fix run --trust
yen ide test status
yen ide test status --format json
yen ide test run --failed
yen ide test run --runner node-test
yen ide test run --runner node-test --watch --watch-interval 0.5 --max-runs 3
yen ide verify status
yen ide verify status --format json
yen ide verify --quick --no-security
yen ide verify --quick --no-security --watch --watch-interval 0.5 --max-runs 2
yen ide workflow discover
yen ide workflow discover ssh://dev@example.test/Users/dev/app
yen ide workflow trust ssh://dev@example.test/Users/dev/app
yen ide workflow run quick-check --dry-run
yen ide workflow run build --project ssh://dev@example.test/Users/dev/app
yen ide workflow run --native package.json:test --dry-run
yen ide workflow run --native package.json:test --watch --watch-interval 0.5 --max-runs 2
yen ide pr-notify --ci-status --watch --interval 30 --max-polls 4
yen agents list
yen agents timeline
yen agents timeline --format json
yen agents timeline --source human --event note --kind approval --tail 5
yen agents note --template review-approved --message "Reviewed manually"
yen agents note --template handoff-review --session agt-20260327T120000Z-1234-000001 --validate-link
yen agents note --template handoff-review --slot codex --validate-link
yen agents export
yen agents export --format json --output -
yen ide gate --dry-run -- git reset --hard
yen ide pr-review 123 --list-hunks
yen ide pr-review 123 --hunk src/app.ts:42:1
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 20On macOS, Cmd + Shift + P opens the command palette for actions and project search. It can jump straight to matching files and lines, and in trusted local repos it also launches dedicated PR review and merge-conflict workspaces.
YEN keeps these workflows local-first and explicit. Search, evidence, and review stay tied to the current workspace; remote ssh://... and --devcontainer targets stay clearly labeled; and local-only features such as --watch remain blocked instead of silently degrading.
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, supports unlimited sessions, and can ask macOS to install missing language packs while Settings is frontmost.
In-app paste restores your previous clipboard shortly after paste; cross-app paste keeps the dictated text on the clipboard if delivery cannot be confirmed. Live Transcript Preview is available in the overlay. Translate-on-Dictate is opt-in, off by default, tied to the recognizer locale for that capture, and runs only when the selected language pair is already installed.
When YEN Settings is frontmost, macOS can prepare missing on-device translation assets for supported pairs instead of trying to do that in the background.
Recording indicator
A recording dot blinks in the menu bar while listening. Release to paste.
| Feature | YEN |
|---|---|
| Privacy | 100% on-device (macOS Speech Recognition) |
| Binary size | Zero bloat — no AI models |
| Languages | 50+ (whatever macOS supports) |
| Compatibility | Any macOS app — Safari, VS Code, Notes, Slack, plus shell, vim, nano, ssh |
| Cost | Free forever |
| Offline | Yes (macOS 13+, after language assets are installed) |
| Duration | macOS 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 open Settings. The panel has five sections: General, Sounds, Workspace, Themes, and Keyboard. Search, import, export, and reset live in the same window, and most changes apply immediately across open tabs.

YEN includes 72 bundled themes with live previews and instant apply. Font, cursor, background image, opacity, and padding stay independent from theme selection. General also includes Window Border plus a background-image picker that imports PNG and JPEG assets into app-managed storage. The scope toggle below the import button sets whether the wallpaper renders per split (Each Split, the default) or as one shared backdrop behind the entire split tree (Whole Window). Workspace also exposes Tab Sidebar (Cmd + Shift + B) and Scratchpad (Cmd + Shift + J).
Sounds combines speech permissions, local speech readiness, Translate-on-Dictate controls, and per-stream notifications for General, Build, Chat, Chat Summaries, Mail, Mail Summaries, Calendar Reminders, Calendar Changes, and Calendar Actions. Each stream has its own sound, volume, and delivery mode (Off, Banner Only, Sound Only, Banner + Sound).
Keyboard lets you inspect conflicts and re-record editable shortcuts inline. Fixed shortcuts and duplicate-action rows stay read-only, and imported settings are validated before they apply.
Export and import include both config.yen and the Settings-managed preferences kept outside it, including workspace toggles, theme-browser mode, Window Border, dictation preview/translation state, and notification routing. Portable exports intentionally exclude machine-local assets such as background images.
Machine-local state such as permission grants, Launch at Login, background images, installed user themes, and downloaded or imported sound assets stays on the current Mac.
Sounds also includes command-finish notifications, focused-window behavior, and official sound-pack management: Download All Sound Packs becomes Update Sound Packs after install, and Remove Downloaded Packs leaves imported custom sounds alone.
In the command palette, search Settings: Themes, Settings: Sounds, Settings: Workspace, or Settings: Keyboard to open a specific tab.

Advanced configuration:
~/Library/Application\ Support/com.yenchat.yen/config.yen
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.
| Behavior | Detail |
|---|---|
| Set / clear | Command palette → Rename Split Label. Leave blank to revert to automatic. |
| Persistence | Labels survive window restore, force-quit recovery, and Quick Terminal sessions. |
| Visibility | Hidden when a pane is too small (below 140 x 80 points), during drag / drop, or when hovering a URL. |
| Theming | Pill 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 in the active terminal. It does not open as a floating window or global sidebar, and it will not steal focus from another window. Browse directories, preview files, and manage the project without leaving the terminal.
Terminal-native with cd-on-quit
It runs inside the terminal with async I/O, so large directories stay responsive. Press q to exit and your shell follows the last directory you visited. Press Enter on a code file for a colorized read-only preview, or O for open-with.
| Feature | Details |
|---|---|
| Syntax-highlighted previews | Code, images, archives, videos, PDFs |
| Quick Look | Space for native macOS preview |
| Search and fuzzy find | / to search, z to jump to frequent dirs |
| File operations | Copy, move, delete, undo, bulk rename, archive extract |
| Vim + mouse navigation | h / j / k / l, visual selection, click, scroll |
| Git status indicators | Modified, staged, untracked icons inline |
| cd-on-quit | q to exit; shell follows to last directory |
| Open in editor / Finder | e for $EDITOR, g r for Finder |
| Full shortcut reference | Press ? inside the file browser |
Commands & Shortcuts
Keyboard shortcuts:
| Action | Key |
|---|---|
| Command palette | Cmd + Shift + P |
| Settings | Cmd + , |
| File browser | Cmd + Shift + O |
| Speech-to-text | Option + Space |
| Split layout presets | Cmd + Option + 1-0 |
| Split horizontal / vertical | Cmd + D / Cmd + Shift + D |
| New tab / window | Cmd + T / Cmd + N |
| Close tab / pane | Cmd + W |
| Quick Terminal | Ctrl + ` |
| Screenshot | Cmd + Shift + S |
| Tab sidebar | Cmd + Shift + B |
| Scratchpad | Cmd + Shift + J |
| Copy screen file path | Cmd + Ctrl + Shift + U |
| Paste screen file path | Cmd + Shift + U |
| Open screen file | Cmd + Option + Shift + U |
| Copy-on-select | Select text; hold Shift in TUI apps |
| Font size +/- | Cmd + + / Cmd + - |
| Toggle fullscreen | Cmd + Enter |
| Rename split label | Command palette → Rename Split Label |
CLI commands:
Commands run immediately inside YEN because bundled shell integration is already active there. In external shells, run yen init zsh or yen init bash once, then restart that shell so wrappers like y, chat, mail, and weather, btop, and fastfetch route to YEN.
| Command | Description |
|---|---|
chat | Global chat rooms (Lounge, Feedback, Show & Tell, Support) |
mail (email) | Gmail client (compose, reply, forward, labels, search) |
calendar | Google Calendar (agenda / month / day / week, recurring events, RSVP) |
weather | Local weather ( --city, --metric/--imperial) |
btop (monitor, resources) | System monitor TUI (bundled btop) |
fastfetch (fetch) | System info snapshot (bundled fastfetch) |
bios | System info snapshot with YEN BIOS branding |
browse (files, fm) | File browser |
y | File browser with cd-on-quit |
yengit (lazygit, gitlazy, gityen) | Git TUI (bundled lazygit) |
yen help | Full command reference and aliases |
yen ide --help | Terminal IDE workflow commands (detect / doctor / env, LSP / AST, share, devcontainer / vscode, history / search / benchmark, explain, verify / gate / merge-readiness, workflow automation, pr-review with loop-script + inline comments, and timeline) |
yen agents --help | Adapter board commands for first-party Claude / Codex workflows, local session timeline/export output, linked IDE evidence, and workspace templates |
yen +list-themes | List all 72 curated bundled themes |
yen +edit-config | Open config in $EDITOR |
yen init zsh | Install shell integration for external zsh |
yen init bash | Install shell integration for external bash |
yen update | Check for a newer release |
yen --version | Show version |
App keys (Chat / Gmail / Google Calendar defaults):
| Action | Key |
|---|---|
| Chat | |
| Switch rooms | Tab / Shift + Tab / ← / → |
| Scroll timeline | ↑ / ↓ / Page Up / Page Down |
| Jump to top / latest | Home / End |
| Send / new line | Enter / Option + Enter |
| Quit / change handle | /q / /h |
| Paste image | Ctrl + V or drag file |
| Open / archive / trash | Enter / e / # |
| Reply all / undo | a / z |
| Next / previous email (reader) | j / k |
| Calendar | |
| Create / open event | c / Enter |
| Navigate / today | j / k / t |
| Switch views | a / m / d / w |
Need the complete command + alias reference? Run yen help. For full file browser shortcuts, press ? inside the file browser.
Custom keybindings:
Shortcut editing lives in Settings > Keyboard. For advanced changes, 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 + Spaceonly (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 Speechstatus and useRe-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-0with 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-checkto verify local speech service status. - Layout shortcuts not working in Settings:
Cmd + Option + 1-0is 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 points to disabled or stale bundled integration; usebrowseas a fallback and fix the app build rather than editing dotfiles. mail/chat/weather/btop/fastfetchruns a system command: In external shells, re-runyen init zsh(or bash), then restart that shell. In YEN, this points to missing or stale bundled integration rather than a dotfile problem.
Reset config to defaults:
$ rm ~/Library/Application\ Support/com.yenchat.yen/config.yen