Relay Documentation

From your first workspace to the editor, browser, AI, and pipelines: using Relay day to day.

Installation

Relay is currently announced through the waitlist. Check the download page for availability; the following chapters describe the current app development build.

Direct Download

Join the waitlist for release news. Installation instructions will appear there when a download is available.

Download Page

Homebrew

A Homebrew installation method has not been published yet. Check the download page for availability.

Requirements: macOS 15 Sequoia+, Universal Binary (Apple Silicon & Intel)

First Steps

After installation, you're ready in three steps.

1

Open a project

Open the Launchpad with ⌘⌥N and choose a project folder. The workspace brings together the panes and context for that project.

2

Set up panes

Split the view with ⌘D or ⌘⇧D. ⌘1, ⌘2, and ⌘3 switch the active pane between terminal, editor, and browser while preserving each slot’s state.

3

Use project context

Open the info panel with ⌘I for Git, tasks, and project history. Adjust themes and fonts in Look & Feel; find more actions with ⌘K.

Keyboard Shortcuts

Essential keyboard shortcuts for fast workflows.

ShortcutAction
⌘KOpen command palette
⌘DSplit pane horizontally
⌘⇧DSplit pane vertically
⌘WClose active pane
⌘TNew terminal tab in the focused terminal pane (browser pane: new browser tab)
⌘⌥↓Focus next pane
⌘⌥↑Focus previous pane
⌘1Active pane → Terminal
⌘2Active pane → Editor
⌘3Active pane → Browser
⌘⇧1–9Jump to the Nth tab of the focused pane
⌃⌥→ / ⌃⌥←Cycle the active pane’s slots (Terminal · Editor · Browser)
⌘⌥1–9Jump straight to workspace N (1-based)
⌃Tab / ⌃⇧TabApp-switcher-style workspace cycling: hold ⌃, Tab cycles, release commits
⌘⌥NToggle the workspace launchpad (overview + create)
⌘IToggle info panel
⌘⌥AGlobal Ask — query AI from any pane
⌘⇧NToggle the global notes window
⌘⇧TToggle the global to-do window
⌘⇧FFind in Files (editor pane)
⌘⇧IFocus Mode: hide the chrome, terminal only
⌃⌘FNative macOS fullscreen
⌘⇧↑Jump to previous command block
⌘⇧↓Jump to next command block
⌘+ / ⌘−Increase / decrease font size
⌘0Reset font size to default

Theme System

Relay's theme system consists of three layers that together control the entire look and feel of the app.

Three-Layer Architecture

Each theme is composed of three independent layers that work together.

Layer 1

AppTheme

Controls the app chrome: backgrounds, borders, accent color, glassmorphism, glow effects.

Layer 2

TerminalTheme

Defines the ANSI color palette: 8 normal + 8 bright colors, cursor, selection, background.

Layer 3

PromptStyle

Determines the prompt layout: symbols, colors, powerline segments, git info display.

Glass Themes

Modern themes with glassmorphism, glow effects, and unique typography — a selection:

Sumi Studio Midnight Obsidian Sunset Arctic

Retro Themes

Nine historical terminals (1973–1989) as complete visual identities with scanlines and period-accurate fonts.

BCC Micro Maple II Amstraad CPC VT100 Amber Xelox Alto Fame Boy ZX Spectra Retro DOS Cmdr 64

Design Tokens

Each theme defines 93 design tokens that control the entire visual appearance.

bg · bgElevated · surfaceTerm · surfaceTabBar accent · accent2 · accentGlow · accentDim border · borderSoft fg · fgSecond · fgTertiary glassTint · glassBorder scanlines · displayFontName · suggestedPromptStyle

Light/Dark Mode

Relay supports a light and a dark theme with automatic switching based on macOS system appearance.

Color Scheme

ModeDescription
DarkUses the configured dark theme (default: Relay Dark).
LightUses the configured light theme (default: Relay Light).
SystemAutomatically switches between light and dark when macOS changes appearance.

Configure the mode in Settings → Appearance → Color Scheme. In System mode, Relay observes the macOS appearance and switches themes instantly.

Pane Layouts

Eleven layout presets divide your workspace into up to four panes. Workbench adds a terminal dock below two work areas; Workbench 2 splits that dock into two terminals.

LayoutPanesDescription
Single1Default — a single pane
2 Side2Two panes side by side
2 Stack2Two panes stacked
3 Side3Three equal-width panes side by side
4 Side4Four equal-width panes side by side
1+23One large pane left, two small on the right
1+34One large pane left, three small on the right
2×24Four panes in a 2×2 grid
Focus2One focused pane, one dimmed secondary pane
Workbench3Two work areas above a single terminal dock.
Workbench 24Two work areas above a split terminal dock.
Split actions automatically adapt supported standard layouts. Select Workbench and Workbench 2 explicitly in the layout picker. ⌘J folds their dock to its titlebar while terminal processes keep running.

Prompt Styles

10 prompt styles in Relay-managed mode — Relay Compact, Robbyrussell, Minimal, Lambda, Powerblocks, Pure, Classic, Fish, Lean, Ops. In user-zshrc mode your own prompt (Powerlevel10k, Starship …) keeps running unchanged.

StyleOriginPowerline
Relay CompactBuilt-in—
RobbyrussellOh My Zsh—
MinimalBuilt-in—
LambdaOh My Zsh—
PowerblocksBuilt-in✓
Puresindresorhus—
ClassicBash—
FishFish Shell—
LeanBuilt-in—
OpsBuilt-in—
Powerline styles require a Nerd Font. Relay uses JetBrains Mono Nerd Font by default.

Workspaces

Workspaces are isolated environments with their own state. Each workspace stores:

  • Its own theme and terminal color palette
  • Its own pane layout (Single, 2×2, Focus, etc.)
  • Its own panes with individual shells
  • Persistence between sessions (tabs, CWD, layout)
  • Broadcast mode: send input to multiple panes at once
  • Optional custom shell path per workspace

Project Memory

Relay persists per-project context to disk. Commands, directories, and usage frequency survive across sessions.

  • Commands are deduplicated per project — stored with use count and last exit code
  • Visited directories are tracked with visit count and timestamp
  • Retention is configurable: 7 days, 30 days, or unlimited
  • Most-used commands appear in the sidebar under 'Project History'

Storage

One JSON file per project is stored under the configured path (default: ~/.config/relay/memory/). Max 500 commands and 200 directories per project.

~/.config/relay/memory/<hash>.json

On app launch, old entries are automatically pruned based on the retention setting. Empty project files are removed.

Shell Integration

Relay integrates deeply with the shell to track commands, exit codes, and working directories. The integration is installed automatically on every launch.

Supported Shells

ShellIntegrationHooks
zshZDOTDIR → ~/.config/relay/precmd / preexec
bash--rcfile ~/.config/relay/.bashrcPROMPT_COMMAND + DEBUG trap
fish-C source ~/.config/relay/fish/fish_preexec / fish_postexec

OSC Sequences

Relay uses Operating System Command (OSC) sequences for communication between shell and app.

OSCPurpose
OSC 133;APrompt start
OSC 133;BCommand start (user typing)
OSC 133;COutput start (command submitted)
OSC 133;D;exitCommand finished with exit code
OSC 7Current working directory
OSC 1337iTerm2 compatibility (CurrentDir)
OSC 9999;askRelay control sequence (legacy; relay ask renders directly in the terminal)

Shell Modes

Relay offers two modes for shell configuration.

Relay Prompt

Isolated shell configuration. Relay manages the prompt entirely. Ideal for consistent behavior.

User .zshrc

Loads your own ~/.zshrc with Relay hooks. Compatible with oh-my-zsh, p10k, and Starship.

Per-Pane Shell Mode

Each pane can individually switch between Relay prompt and user zshrc — directly in the pane header, without opening settings.

  • A badge in the pane header shows the active mode: 'relay' (terminal icon) or 'zshrc' (person icon)
  • Clicking asks for confirmation before switching: changing modes ends the current shell and starts a new one.
  • Each pane keeps its own mode — independent of other panes and the global setting

Info Panel

⌘I switches between the narrow rail and the expanded info panel. Project groups environment and history, Library holds reusable collections, Global contains system tools and agents. AI opens workspace chat. Git lives in the left Git perspective; pipeline details in workspace status.

Project Memory

Shows the current project context: path, git branch, runtime. Persistent between sessions.

Recent Commands

The last 8 commands with exit code badge (green/red/orange) and timestamp.

Favorites

Favorited commands and directories. Marked via star icon, persistently stored.

Working Directories

History of visited directories. Click to navigate there instantly.

Open Ports

Relay automatically detects open ports and their associated processes on the system.

  • Automatic detection of all listening TCP ports
  • Display of port, process name, and PID
  • Process tree kill per click (getpgid + SIGKILL)
  • Sudo fallback for insufficient permissions (copies command to clipboard)

VPN Detection (planned)

Planned: Relay will detect active VPN tunnels (OpenVPN, WireGuard, Tailscale, NordVPN, Mullvad, Cisco AnyConnect and more providers) and show interface, IP, and provider in the Info Panel. Not yet shipped in the app.

AI Agent

Enable AI in Settings → AI and configure an API, a local server, or an installed agent CLI. relay ask answers in the terminal; ⌘⌥A opens the separate AI chat window with context from the active workspace.

Usage

relay ask "What does this command do?" relay ask -f README.md -k relay status relay resume relay agent

In zsh/bash, relay ask keeps the Relay interface even with a CLI connection. relay agent explicitly opens the configured CLI’s original interface. relay status shows the active connection; relay resume opens Relay’s session picker.

Use -f to attach a file (repeatable), -k to continue the latest Relay conversation, -m to select a model, and -q for less formatting. Put -- before questions that start with a dash.

Connections and models

Supported connections include OpenAI, Anthropic, Google Gemini, and local OpenAI-compatible servers. Select a model in Settings from the list available for your connection. CLI mode requires the selected CLI to be installed and signed in.

MCP bridge — drive Relay from outside

Relay can open a local MCP server (Settings → Intelligence) that exposes the agent tools to external CLI agents like Claude Code or Codex CLI: create workspaces, split panes, switch layouts and themes, manage to-dos and notes. The socket is a local Unix socket (0600); the Python shim installs automatically.

~/.config/relay/mcp.sock · ~/.config/relay/relay_mcp.py

Shell actions (run_command, write_file, git_push, write_to_terminal) ALWAYS require per-call approval in Relay — with a 120-second timeout. File-read and clipboard tools are never reachable over MCP.

DevTools in the browser pane

Every browser tab can attach a DevTools pane — with eight tabs:

ConsoleNetworkDOMStoragePerfSourcesAppAudit

Console with eval, live autocomplete, and $0/$1/$_; Network with request bodies, type filters, waterfall, throttle, HAR export, and replay (copy as fetch/cURL); Elements with a live DOM tree, toggleable CSS rules, and editable attributes. ⌥⌘I additionally opens Safari's own Web Inspector.

SSH & SFTP

Relay reads ~/.ssh/config (including ProxyJump), shows saved hosts with live latency (every 15 seconds) in the sidebar, and manages tunnels. If a connection drops, a reconnect banner appears instead of a dead session.

The SFTP browser shows local and remote files side by side: browse, rename, delete, upload, and download. The separate editor mode downloads the remote directory into a local cache on demand and uploads edits back.

Automatic Error Explain

When a command exits with a non-zero exit code, Relay offers to have the AI agent explain the error.

  • Failed commands show a red dot and an 'Explain?' badge in the sidebar on hover
  • Click to open the inline command explanation. Alternatively, use relay explain in the terminal.
  • Requires a configured AI connection in Settings.

Semantic Colorizer

Relay automatically colorizes terminal output: errors, warnings, URLs, paths, and numbers get context-aware colors — without overwriting existing ANSI output.

PatternColorExample
ErrorsRed (bold)error, fatal, exception
WarningsYellowwarning, deprecated
SuccessGreenOK, Done, PASSED, ✓
URLsBlue (underline)https://...
PathsCyan (underline)/usr/local/bin
IPv4Yellow192.168.1.1
Numbers + UnitsMagenta340ms, 18.4MB

Command Blocks

Every command and its output is treated as a discrete block with visual separators. Right-click any command in RECENT for block actions.

│
Visual Separators

Subtle gradient lines between commands make the terminal scannable at a glance.

⧉
Block Actions

Right-click in RECENT → Copy Output, Re-run, Scroll to Block, Add Favorite.

⌘⇧↑
Block Navigation

⌘⇧↑ / ⌘⇧↓ to jump between command blocks.

Inline Autocomplete

IDE-style dropdown that appears as you type, showing subcommands, flags, and descriptions.

git commit --message, --amend, --all, --no-edit...

Built-in completion specs for:

git docker npm cargo brew

Navigate with ↑/↓, accept with Tab, dismiss with Esc.

Inline Images

Display images directly in the terminal using the Kitty Graphics Protocol.

relay imgcat ~/Desktop/photo.png

Supports PNG, JPEG, GIF. Uses Kitty protocol with chunked base64 transmission for large files.

Automatic Profile Switching

Theme changes automatically based on context — visual safety net for dangerous environments.

🔴
SSH

SSH connections switch to a warning theme (e.g., Obsidian). Configurable per host pattern.

📁
Directory Rules

Switch theme when entering specific directories. Match with regex patterns.

Clickable Paths & URLs

File links in terminal output open in Relay’s editor; web URLs open through macOS. Relay recognizes OSC 8 links as well as paths and URLs in ordinary output, including already colored text.

⌘+Click → /usr/local/bin/node → opens in Finder

Regex Triggers

Automatic actions when terminal output matches a pattern. Configure in Settings → Notifications → Regex Triggers.

🔔
Notifications

macOS notification when output matches (e.g., 'BUILD SUCCEEDED').

🔊
Sound

Play a sound on pattern match (e.g., 'BUILD FAILED').

Parameterized Snippets

Reusable command templates with placeholder parameters. Double-click in the sidebar to run.

deploy {{service}} to {{env}}

When executed, a form appears for each placeholder. Live preview shows the resolved command before running.

Session Blueprints

Save workspace layouts as reusable templates. Each blueprint defines panes, starting directories, and auto-start commands.

Configure in Settings → Integration → Session Blueprints. Launch from the sidebar BLUEPRINTS section.

Pane Coloring

Assign colors via a click on the pane name pill. Choose from 7 preset colors (green, red, yellow, blue, purple, orange, cyan) to visually distinguish environments.

CI/CD Pipeline Monitor

Monitor GitHub Actions directly in Relay. The workspace status opens pipeline details with jobs and steps.

⚡
Auto-Detection

Detects git push from any shell (Relay, external terminal, IDE) via filesystem watching.

📊
Live Updates

Steps update adaptively every 2–4 seconds with animated progress bar and pulsing status dots.

📋
Job Logs

Click any step to expand its log inline below. Copy logs to clipboard with one click.

Settings → CI/CD Pipeline → GitHub Token

Docker containers

The Docker section under Global lists local containers with image, status and mapped ports.

Each container offers start, stop, and restart buttons. Clicking the log icon streams the container's logs live into the active terminal; clicking a mapped port opens the service in the browser pane.

docker logs -f --tail 100 <container>

Relay detects when Docker isn't installed or the daemon is stopped and shows a clear hint instead of an empty list. It only refreshes while the section is visible — no background load.

AI usage dashboard

Relay shows provider-reported quotas and reset times. Codex supplies them through its CLI account interface; Claude through captured limit events from runs started by Relay.

These are not cost estimates derived from token prices. A manual Claude refresh makes a small model request and counts towards quota. Unavailable or stale data is labelled accordingly.

Settings → Intelligence → AI (Usage)

Browser downloads

The browser pane supports user-initiated downloads: download links land in a download manager with its own info-panel section, and PDFs open right in the built-in viewer.

Device emulation

Responsive design mode renders the page in the browser pane inside iPhone and iPad frames — including Dynamic Island and home indicator. Test responsive layouts without leaving Relay.

Inline Workflow

Inputs where the command happens. Snippets, pipeline logs, and blueprints expand right inside the sidebar — with live preview and a run button.

📝
Snippet inline form

Parameterized snippets expand with inline inputs. Live-resolved preview shows the final command. Run button is disabled while parameters are empty — no broken commands.

📋
Pipeline step log inline

Click a CI/CD step to expand its log directly below. Scrollable, selectable, with copy button.

📁
Blueprint folder picker

Pick pane directories via the native macOS dialog instead of typing them. Paths are stored home-relative (~/project) for cross-machine portability.

Pipeline Step Rings

CI/CD steps render as animated progress rings — no more linear bars. Status legible at a glance.

⏳
Running

Yellow spinner ring (72% filled) rotates continuously. Linear, 1.2 seconds per turn.

✓
Success

Full green ring with a checkmark in the center. Instantly recognizable in the step list.

✗
Failed

Full red ring with an X in the center. Plus red step name for extra visibility.

Workspace directory inheritance

When you open a workspace at a specific path, every new split lands in the same project — not the home directory.

📂
Split inheritance

⌘D and ⌘⇧D open new panes in the workspace root path. If you `cd` somewhere else inside a pane, it doesn't affect the next split.

🧩
Blueprint inheritance

Blueprints inherit the first pane's path as the workspace root. Later splits inside a blueprint-launched workspace land there too.

🎯
Auto-fit layout

When a blueprint has more panes than the chosen layout allows (e.g. "single" with 4 BlueprintPanes), the layout auto-upgrades to one that fits (twoByTwo).

CardSections & components

Your project on the left. Its context on the right. Room to work in between. Explore the cards, components and tools in detail.

Workspace & components

Workspace navigation

Switch projects from the titlebar or workspace overview. The project root, Git context and its panes stay together.

Panes & layouts

Eleven layouts for terminal, editor and browser. Workbench and Workbench 2 add a collapsible terminal dock (⌘J) whose processes keep running. Remote Files and the separate DevTools pane extend your workspace.

Git & pipeline

The left Git perspective shows branches, changes and staging. Open diffs, create commits, push or pull. GitHub Actions appears in the workspace status with expandable pipeline details.

Editor & file tree

Edit project files in tabs, search the project and navigate the file tree. Syntax colours follow the app theme. Changes and diffs stay in project context.

Browser & inspector

Open local previews and websites alongside your code. DevTools, responsive device views, downloads and screenshots complement the browser.

Project · environment & history

Stack & dependencies

Detected runtimes, frameworks and project scripts expose your stack. The npm check starts only on click and sends eligible package names to registry.npmjs.org.

Shell scripts & dev server

Find shell scripts in the project and run them in the workspace terminal. Detected dev-server offers lead to the matching local preview.

Broadcast & SSH context

Send input to selected terminal sessions. When an SSH connection is present, its contextual card shows connection information.

Recent commands & directories

Review recent commands and their results, rerun them or save favourites. Directory history follows terminal navigation.

Project history

With Project Memory enabled, command history stays associated with the project. Reuse earlier commands in the current workspace.

Notes & to-dos

Capture inline

Notes and to-dos have separate icons in the left sidebar, each with a plus button and an independent search. Input opens directly in the selected section.

Read & organise notes

In list view, notes open beside the list. Edit Markdown, use the formatted preview or open the reader. Narrow windows offer a back action to return to the list.

Tasks & bulk deletion

Completing a task turns its circle into a green checkmark, strikes through its text and hides the row after a short pause. Completed tasks remain accessible. The delete menu removes all shown tasks or completed shown tasks after confirmation.

Optional clipboard capture

Optionally capture copied text and images as notes. Choose Relay as the source or deliberately enable system-wide capture in settings.

Agents & AI

Individually expandable agent cards

Follow detected Claude, Codex and other runs. Expand a card for the captured current or last question, activity, related runs and changed files. Available details depend on the integration.

Reply in context

Reply from the card when a linked terminal session is waiting for text input. Chat runs support follow-up questions when available. Approvals remain separate actions; you can also jump to the session.

Agent dashboard

The Agents card in Global shows detected runs, active agents and waiting sessions. Expand individual cards to inspect their details.

AI chat & connections

The AI area in the info panel connects conversations to the workspace. Use configured CLI connections, your own API access or a compatible local server. Available models and tools depend on the connection.

Quotas & reset times

Provider reports show available quota windows and reset times. Codex reads account information through its CLI; Claude uses captured limit events. A manual Claude refresh starts a small request and counts towards quota.

Library · reuse

Favourites & bookmarks

Star recurring commands and open saved URLs in a browser pane. Collections are available across projects.

Snippets with parameters

Command templates contain placeholders such as {{name}}. Relay asks for values before execution and sends the resolved command to the workspace terminal.

Workspace blueprints

Save a workspace as a template and use it to start recurring work environments. Your blueprints live in the library.

Saved AI responses

Keep responses from relay ask with /save and find them in the library’s AI history. Remove individual entries or clear the collection.

Global · your Mac at a glance

Ports & databases

See listening ports and detected database instances. Connect through the matching CLI in the terminal, or copy the command when no terminal is available.

Docker

Containers with image, state and ports: start, stop or restart, open logs in the terminal and visit mapped services in the browser. Docker must be available locally.

SSH & SFTP / FTP

Use quick terminal and SSH access alongside saved file connections. Open remote folders for editing; connections require your configured credentials.

Downloads & browser shots

Track browser downloads and find captured screenshots in one place. Browser Shots collects captures independently of the active project.

Events

Warnings and errors remain available as events after their brief notification disappears, so you can revisit the message later.

Browser

⌘3 opens the active pane’s browser slot. Multiple tabs, bookmarks, history, and a configurable search engine are built in. Cookies and website data are isolated per workspace; private mode uses a non-persistent data store.

Open your local dev server in a browser pane beside the editor. Automatic reload on save is configurable per workspace. Use the Inspector button to open DevTools for the current browser tab.

Screenshots capture the viewport or full page, save to Downloads, and copy to the clipboard. They also appear under Global → Browser Shots. ⌘+/⌘− change page zoom; ⌘0 resets both zoom and trackpad magnification.

Git and changes

The left Git perspective shows branches, changes and staging. Click a file to open its diff. Commit, push and pull operate on the workspace project root.

Git actions use the workspace’s project folder. Browsing a different folder in the Explorer does not change that project folder. If an operation fails, Relay shows the actual Git output.

Notes & to-dos

Notes and to-dos each have their own icon on the left. ⌘⇧N opens the planning window at notes; ⌘⇧T opens it at tasks. In list view, a note opens beside the list. Narrow windows offer a Notes button to return to the list. Use the pencil and preview controls to edit Markdown or read its formatted output.

The plus button in each sidebar section opens an inline input. Both views keep their own search. Completing a task briefly shows a green checkmark and strikethrough before hiding it. Show completed to-dos to review, reopen or bulk-delete them after confirmation. Search and filters limit which tasks are deleted.

Clipboard Note Capture is optional. Under Notes & Todos, choose whether copied text and images become notes only from Relay or system-wide.

Agent dashboard

The Agents card in Global shows detected runs, active agents and waiting sessions. Expand individual cards to inspect their details.

Read the captured task, latest activity and changed files. Respond to supported approvals and text prompts in the card, or jump to the linked session.

Start a new agent opens a terminal tab for a configured CLI. The active workspace needs a terminal pane. Sign-in and available features depend on your setup.

Code Editor

Every pane carries terminal, editor & co. as slots — ⌘2 switches the active pane to the editor, ⌘1 back to the terminal, state preserved. File tree on the left, tabbed editor on the right. Powered by CodeEditSourceEditor (tree-sitter).

🔀
Pane conversion

⌘1/⌘2/⌘3 switch the active pane between terminal, editor, and browser; ⌃⌥→/← cycles through all allocated slots. The folder root is the git repo root of the current cwd.

🎨
Tree-sitter highlighting

Languages are auto-detected by file extension. Supported: Swift, TS/JS/TSX, Rust, Python, Go, Ruby, Java, Kotlin, C/C++, JSON, TOML, YAML, Markdown, Shell, CSS, HTML, SQL, Dockerfile and many more.

📑
Multi-tab + cursor memory

Multiple files open at once. Tab bar with dirty indicator. Cursor and scroll position survive per file across tab switches.

🗂️
File tree context menu

Right-click an entry: Reveal in Finder, Copy Path, New File, New Folder, Rename, Duplicate, Move to Trash. Input sheets for names, trash with confirmation.

✨
Autocomplete

With a suitable language server, suggestions use project context. Without a server, language keywords and words from the open document remain available.

🎭
6 editor themes

The editor automatically adopts the active app theme — background, selection and syntax colors are derived from it. All 22 themes (modern + retro + favorite) stay consistent, with no separate editor-theme picker.

Code intelligence and file previews

In Settings → Editor, the Language-Server Doctor checks available servers and offers installation help. ⌘-click jumps to a definition and ⌘⇧E finds references. Hover shows documentation or diagnostics; error and warning counts open the diagnostics list. Without a server, Relay uses text-based fallbacks.

⌘F opens Find & Replace; ⌘⇧F searches the project. The editor also displays images, PDFs, SVG, CSV/TSV, and Markdown, plus read-only Office previews. Git gutter markers show local changes; file history opens earlier revisions read-only.

Keyboard shortcuts

KeyAction
⌘SSave active file
⌘WClose active tab
⌘⇧EFind references in the project
⌘⇧FFind in Files (editor pane)
⌘FOpen find & replace
⌘BToggle file explorer

Stack Detector

As soon as the active terminal pane is inside a git repository, Relay scans all manifest files and shows detected stacks in the STACK section of the right sidebar.

🔍
Repo scan via `git ls-files`

Uses `git ls-files --cached --others --exclude-standard` for the file list — all .gitignore rules are honored correctly. Tool folders like `.github`, `.vscode`, `node_modules` are additionally filtered.

📦
Supported stacks

Node.js (package.json), Rust (Cargo.toml), Python (pyproject.toml/requirements.txt), Go (go.mod), Swift (Package.swift/xcodeproj), Ruby (Gemfile), Docker (Dockerfile/compose), Hugo, Jekyll, Zola, mdBook, Supabase.

🏷️
Framework detection

For Node.js: Next.js, Nuxt, Astro, SvelteKit, Remix, Gatsby, Eleventy, Qwik, Solid, Vue, React, Angular, Tauri, Electron, Vite and more. For Python: FastAPI, Django, Flask, Streamlit, PyTorch.

🧩
Monorepo-aware

Workspace markers (pnpm-workspace.yaml, turbo.json, nx.json, lerna.json, Cargo [workspace]) are handled specially. Otherwise every subdirectory stack appears as its own card.

▶️
Clickable scripts

Every detected script appears with a ▶ button. Click writes the command into the active terminal pane — with a `cd <subdir>` prefix in multi-stack repos.

Broadcast input

Type once — every selected pane gets the input in parallel. Perfect for multi-server operations, cluster maintenance, or comparative tests across containers.

📡
Enable

Toggle in the workspace sidebar — the BROADCAST section appears and lists every pane in the workspace with a checkbox.

✅
Pane selection

Use checkboxes to pick which panes receive input. On enable all panes are pre-selected; deselect individual ones as needed.

🖥️
Typical use cases

SSH to four servers, run `apt update` once. Inspect three Docker containers in parallel. Pull multiple branches at the same time.

VPN detection (planned)

Planned feature: Relay will scan all `utun*` interfaces on macOS and identify the active VPN provider via the process list. The VPN section would only appear in the sidebar when a tunnel is actually up — no visual noise when nothing's running. This feature is not yet shipped in the current app.

Planned provider detection

Planned: OpenVPN, WireGuard, Tailscale, NordVPN, Mullvad, Cloudflare WARP, Cisco AnyConnect, ExpressVPN, ProtonVPN, Surfshark, PIA, Windscribe, Hotspot Shield, ZeroTier — each identified by its process name. Not yet shipped in the app.

What's shown

Tunnel interface (utun0/utun1/…), assigned local IP, provider name with status badge.

When visible

Only when at least one utun interface is up and its owning process is running. Auto-refreshes on cwd change.

Polish & atmosphere

Small details that make the difference — from notifications for long-running commands to the animated background.

🔔
Visual + audible bell

When a program sends `BEL` (e.g. `printf '\a'` or on tab-completion conflict), the pane flashes white briefly. Optional system sound. Configurable per workspace.

⏱️
Long-command notification

Commands taking longer than N seconds (default 10 s) trigger a macOS notification when they finish — even if Relay is in the background. No more staring at the screen.

🪝
Webhook notifications

Optionally configure a webhook URL (Slack, Discord, ntfy.sh, …). Long commands also fire to that URL — perfect for builds running in the office while you're at lunch.

📺
CRT effects

Retro themes get scanlines (Off/Light/Medium/Heavy configurable), a subtle edge vignette, and chromatic-aberration color fringes. Pure retro vibes, performance-neutral.

🔄
Auto-updates via Sparkle

Relay updates itself automatically — new versions appear with a changelog preview and install button. Check manually via menu "Relay → Check for Updates".

Settings

Open Settings with ⌘,. Pages are arranged in six groups. The overview below uses the interface’s page names; use search to find individual options.

SettingDescription
Appearance → Look & FeelThemes, light/dark appearance, fonts, prompt, and cursor.
Terminal → ShellShell, starting directory, environment, command blocks, and autocomplete.
Terminal → KeyboardView and customize keyboard shortcuts.
Workspace Tools → EditorEditor font, indentation, display, and language servers.
Workspace Tools → BrowserBrowser behavior, dev servers, and web tools.
Workspace Tools → Notes & TodosNotes, todos, and optional clipboard capture.
Intelligence → AIAI assistant connection, model, and context.
Intelligence → PipelineConnect CI providers and configure pipeline monitoring.
Intelligence → UsageProvider quotas, reset times and refresh controls.
Integration → IntegrationShell integration and session blueprints.
Integration → MemoryProject history, retention, and session restoration.
Integration → NotificationsBell, long-running commands, webhooks, and regex triggers.
Account → LicenseLicense status and activation.