Appearance
Files, Folder and Links
📸 TL;DR
- Paths and URLs in terminal output are interactive — you can open them by command + click, or from context menu.
- Otty has built-in text editor, file previewer and web browser. You can also edit or preview directly in otty's tab or in split views.
Path and Links in Terminal Output
What gets detected
In live terminal output and scrollback, Otty detects:
- Absolute paths:
/usr/local/bin/foo,/Users/me/project - Tilde paths:
~/project/file.swift - Relative paths:
./src/lib.rs,../config/foo.toml - Paths with line / column suffixes:
src/lib.rs:42,src/lib.rs:42:5 - URLs:
http://,https://,file:// - OSC 8 hyperlinks emitted by programs — see Shell Integration
Relative paths resolve against the pane's last-known working directory (from OSC 7).
You can press command key to get clickable path and links being wrapped by underline.
Click actions
| Click | Path action | URL action |
|---|---|---|
Click | (nothing — prevents accidental opens) | (nothing) |
⌘click | Open in best handler — file pane for text, default app otherwise | Open in URL pane (or system browser, per config) |
⌘⇧click | Reveal in Finder | Copy URL |
| Right-click | Context menu — "Open With…", "Copy Path", "Reveal" | "Copy", "Open in Browser" |
Other Actions
Right-click a detected path or URL for a context menu. The items depend on what you clicked.
- Open Link / Open File / Open Folder — open it with default behavior (configured in Settings → Controls → Open With).
- Open with — a submenu of installed apps.
- Copy Path / Copy URL — copy the resolved absolute path.
- Reveal in Finder.
- Change Directory Here —
cdthe focused terminal to the path (or its parent folder). - Open in Otty — a submenu to open the target in the current pane, a new tab, or a split.
Quick Preview
- You can press command and hover on links and paths to check its full path in left bottom area.

- You can use macOS lookup to quickly preview file content or target url link.
Handle Paths and URLs without mouse
You can use following keyboard-only equivalent to interact with clickable Paths and Links:
Jump To
These actions are also reachable without the mouse. Press ⌘J to open the jump-to panel — an Open Quickly view scoped to the current pane, listing its paths, links, and commands. Type to filter, then press ⌘K to open the Actions popover for the highlighted item, which offers the same set of actions as the right-click menu.
Hint Mode
Hint Mode is also a keyboard-only equivalent — open any detected link without the mouse.
Hint Mode (Open Links)

Inline Images
See Images.
File Pane / Editor
Otty has the capability to open and preview common file types. It also embeds a text editor to quickly check and edit code files.


Opening a file
| Way | Result |
|---|---|
| Drag a file from Finder onto the window's "New Tab" drag zone | New file pane in a new tab |
| Context menu → Open in Otty | View pane in the Otty |
otty view <file> | Open <file> in preview / readonly mode |
otty edit <file> | Open <file> in edit mode |
Syntax highlighting
Highlighting is powered by syntect (Sublime / TextMate grammars). Language detection is by file extension, with a small fallback to first-line shebang. The active theme follows the terminal theme — see Themes.
Saving and reloading
⌘S— save (Edit mode).⌘R— reload from disk, discarding unsaved changes.- Files modified outside Otty trigger a banner: Reload / Keep my changes.
Supported Files
Otty picks how to show a file from its extension (with a content sniff as a fallback, so unknown-but-textual files still open in the editor). Expand the sections below to see what's covered.
Markup with live preview (Source ⇄ Preview)
These formats open with both a source view and a rendered preview, and you can flip between them with the Source / Preview control in the pane toolbar, ⌘E, or right-click → Toggle Preview:
| Format | Extensions | Rendered as |
|---|---|---|
| Markdown | .md, .markdown | GitHub-flavored HTML; fenced code blocks are syntax-highlighted and follow the terminal theme |
| reStructuredText | .rst, .rest | HTML |
| SVG | .svg | Live image with trackpad pinch-to-zoom |
| HTML | .html, .htm | Rendered locally (JavaScript is off for these for safety) |
These open in preview mode by default. Edits on the source side refresh the preview as you type, and switching sides keeps your cursor and unsaved changes.
Syntax-highlighted languages
Highlighting covers ~120 bundled grammars. A few of the languages recognized:
- Systems / compiled — Rust, C, C++, Objective-C / Objective-C++, C#, Go, Zig, D, Pascal, Fortran, Ada, Swift, ARM & x86 Assembly, Verilog, WGSL
- JavaScript & web — JavaScript (+ Babel), TypeScript / TSX, CoffeeScript, LiveScript, Dart, Elm, Vue, HTML (+ Twig), CSS, Less, Stylus, QML, Slim, ActionScript
- JVM — Java, Kotlin, Scala, Groovy
- Functional — Haskell, OCaml, F#, Erlang, Elixir, Clojure, Lisp, Scheme, Racket, Standard ML, Lean
- Scripting & dynamic — Python, Ruby, PHP, Perl, Lua, R, Julia, Crystal, Nim, MATLAB, Tcl, AppleScript
- Shell & build — Shell (bash / zsh), Fish, PowerShell, Batch, Makefile, CMake, Ninja, Dockerfile, Terraform, Nix, Robot Framework, Gnuplot
- Data & config — JSON, JSON Lines, YAML, TOML, XML, INI,
.env, Java Properties, Apache conf, Cabal, Protocol Buffers, GraphQL, Rego, SQL - Markup & docs — Markdown, reStructuredText, AsciiDoc, Textile, Org Mode, LaTeX, BibTeX
- Other — Diff / patch, regular expressions
Language is detected by extension (with a shebang fallback). When an extension is ambiguous (.m → Objective-C, .h → C, .v → Verilog, .pl → Perl), pick the right one from the language dropdown in the toolbar; choose Auto-detect to undo the override.
Other file types
| Kind | Extensions | Behavior |
|---|---|---|
| Images | .png, .jpg/.jpeg, .gif, .webp, .heic/.heif, .bmp, .tiff/.tif, .ico | Zoom (⌘+ / ⌘- / fit / 1:1), drag to pan, animated GIF / APNG play |
| PDF & rich docs | .pdf, video, office docs, fonts, … | Quick Look preview (read-only); PageUp / PageDown to page a PDF |
| Diff / patch | .diff, .patch | Unified diff with colored hunks (read-only) |
| Binary | anything non-textual | Opens as a read-only hex view |
Plain-text files with no dedicated grammar still open in the editor — you get the toolbar, shortcuts, and terminal-matching theme, just without highlighting.
Agent session history

Coding-agent session logs render as a readable transcript instead of raw JSON. Otty recognizes three agents by their session paths:
| Agent | Session files |
|---|---|
| Claude Code | ~/.claude/projects/<project>/*.jsonl |
| Codex | ~/.codex/sessions/YYYY/MM/DD/*.jsonl |
| OpenCode | ~/.local/share/opencode/storage/session/<project>/*.json |
The transcript lays out user and assistant turns with Markdown-rendered text, tool calls, reasoning, and attachments — you can select and Copy or Send to Chat from the context menu. A Resume button in the toolbar continues that session: it jumps to the live tab if it's still running, otherwise spawns a fresh one with the agent's --resume.
- Open one from Open Quickly — it lists the current project's sessions across all three agents — or just open the file.
- Toggle the view with right-click → View as → <Agent> History ⇄ JSONL (Syntax Highlight) to drop back to the raw log.
Only session files under a known agent's directory auto-open as a transcript; any other .jsonl stays plain text.
Editor Configuration
The editor follows your terminal theme and font automatically — there's no separate editor font setting. Everything else lives under Settings → Editor:

| Setting | Default | What it does |
|---|---|---|
| Soft Wrap | On | Wrap long lines instead of scrolling horizontally |
| Show Line Numbers | On | Display the line-number gutter in text panes |
| Show Whitespace | Off | Render spaces, tabs, and newlines as visible glyphs |
| Tab Size | 4 | Visual width of a tab character, in columns (1–16) |
| Scroll Past Last Line | On | Let the file pane scroll past its last line so it can sit at the top of the viewport (the terminal's own scroll-past-end is set separately under Controls) |
| Default to Preview / Read-Only | On | Open Markdown / SVG / HTML in preview and start file panes read-only — turn it off to open in source mode with editing enabled |
These apply to every file pane. To override a couple of them just for the pane you're in, without changing the defaults:
| Shortcut | Action |
|---|---|
⌘⌥W | Toggle soft wrap for the focused pane |
⌘E | Toggle Source / Preview (Markdown / SVG / HTML) |
Limits
- File panes are designed for text up to a few MB. Very large files fall back to a streamed view (no in-place edit).
- Binary files open as hex (read-only).
Folder Pane
A folder pane is a directory browser — click to open files, drag rows out to move them into terminal or file panes. otty view <dir> or right click a folder and select open in Otty opens a folder pane.

Web Browser
Otty has a built-in web browser (a native WKWebView pane), so a link from your terminal can be opened right next to your work — in the current pane, a new tab, or a split — instead of pulling you out to Safari or Chrome.
You could config the default handler for http(s) links, by default it is opened by your default web browser, and you can open in Otty from its context menu. You could also change default handler to Otty, so command + click will open links directly in your terminal.

Keyboard
| Shortcut | Action |
|---|---|
⌘[ / ⌘] | Back / Forward (two-finger swipe also works) |
⌘R | Reload |
⌘⇧R | Reload, bypassing the cache |
⌘F | Find in page |
Private by default
URL panes use a non-persistent data store — cookies and local storage never bleed across panes or survive a restart. Audio and video won't autoplay until you interact with the page.
Configuration
Default Open App
You can config default options for opening files, folders and links from Settings → Controls → Open With:

Config Which links are detected
Local file path is always detected.
By default Otty links any scheme:// URL — including custom app schemes like codex://, vscode://, or ssh:// — plus mailto: addresses.
Under Settings → Controls → Link Schemes, set Auto-Detect Link Schemes to Custom to restrict detection to a list you control: http(s), file, and mailto stay on, and you add only the extra schemes you want (e.g. codex, ssh).

TIP
Most CLIs print links as plain text, so Otty's auto-detection is what makes them clickable. Tools that emit proper OSC 8 hyperlinks are always underlined regardless of this setting.
Security
Opening a non-standard scheme, or executable binaries still asks for confirmation the first time; the Reset Security Warnings button (in the same Link Schemes card) clears every remembered "always allow" choice so those prompts return.
Advanced Configuration
link-cmd-click = open # open | copy | nothing
link-cmd-shift-click = reveal-finder # reveal-finder | open-system-default
link-detection = on # on | off — turn off if interfering with TUI mouseSee also
- Drag and Drop — moving files between panes, tabs, and apps.
- Hint Mode — open detected links from the keyboard.
- Window, Tab and Split — where panes live.