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 PageHomebrew
A Homebrew installation method has not been published yet. Check the download page for availability.
First Steps
After installation, you're ready in three steps.
Open a project
Open the Launchpad with ⌘⌥N and choose a project folder. The workspace brings together the panes and context for that project.
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.
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.
| Shortcut | Action |
|---|---|
| ⌘K | Open command palette |
| ⌘D | Split pane horizontally |
| ⌘⇧D | Split pane vertically |
| ⌘W | Close active pane |
| ⌘T | New terminal tab in the focused terminal pane (browser pane: new browser tab) |
| ⌘⌥↓ | Focus next pane |
| ⌘⌥↑ | Focus previous pane |
| ⌘1 | Active pane → Terminal |
| ⌘2 | Active pane → Editor |
| ⌘3 | Active pane → Browser |
| ⌘⇧1–9 | Jump to the Nth tab of the focused pane |
| ⌃⌥→ / ⌃⌥← | Cycle the active pane’s slots (Terminal · Editor · Browser) |
| ⌘⌥1–9 | Jump straight to workspace N (1-based) |
| ⌃Tab / ⌃⇧Tab | App-switcher-style workspace cycling: hold ⌃, Tab cycles, release commits |
| ⌘⌥N | Toggle the workspace launchpad (overview + create) |
| ⌘I | Toggle info panel |
| ⌘⌥A | Global Ask — query AI from any pane |
| ⌘⇧N | Toggle the global notes window |
| ⌘⇧T | Toggle the global to-do window |
| ⌘⇧F | Find in Files (editor pane) |
| ⌘⇧I | Focus Mode: hide the chrome, terminal only |
| ⌃⌘F | Native macOS fullscreen |
| ⌘⇧↑ | Jump to previous command block |
| ⌘⇧↓ | Jump to next command block |
| ⌘+ / ⌘− | Increase / decrease font size |
| ⌘0 | Reset 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.
AppTheme
Controls the app chrome: backgrounds, borders, accent color, glassmorphism, glow effects.
TerminalTheme
Defines the ANSI color palette: 8 normal + 8 bright colors, cursor, selection, background.
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:
Retro Themes
Nine historical terminals (1973–1989) as complete visual identities with scanlines and period-accurate fonts.
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 · suggestedPromptStyleLight/Dark Mode
Relay supports a light and a dark theme with automatic switching based on macOS system appearance.
Color Scheme
| Mode | Description |
|---|---|
| Dark | Uses the configured dark theme (default: Relay Dark). |
| Light | Uses the configured light theme (default: Relay Light). |
| System | Automatically 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.
| Layout | Panes | Description |
|---|---|---|
Single | 1 | Default — a single pane |
2 Side | 2 | Two panes side by side |
2 Stack | 2 | Two panes stacked |
3 Side | 3 | Three equal-width panes side by side |
4 Side | 4 | Four equal-width panes side by side |
1+2 | 3 | One large pane left, two small on the right |
1+3 | 4 | One large pane left, three small on the right |
2×2 | 4 | Four panes in a 2×2 grid |
Focus | 2 | One focused pane, one dimmed secondary pane |
Workbench | 3 | Two work areas above a single terminal dock. |
Workbench 2 | 4 | Two work areas above a split terminal dock. |
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.
| Style | Origin | Powerline |
|---|---|---|
| Relay Compact | Built-in | — |
| Robbyrussell | Oh My Zsh | — |
| Minimal | Built-in | — |
| Lambda | Oh My Zsh | — |
| Powerblocks | Built-in | ✓ |
| Pure | sindresorhus | — |
| Classic | Bash | — |
| Fish | Fish Shell | — |
| Lean | Built-in | — |
| Ops | Built-in | — |
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>.jsonOn 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
| Shell | Integration | Hooks |
|---|---|---|
zsh | ZDOTDIR → ~/.config/relay/ | precmd / preexec |
bash | --rcfile ~/.config/relay/.bashrc | PROMPT_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.
| OSC | Purpose |
|---|---|
OSC 133;A | Prompt start |
OSC 133;B | Command start (user typing) |
OSC 133;C | Output start (command submitted) |
OSC 133;D;exit | Command finished with exit code |
OSC 7 | Current working directory |
OSC 1337 | iTerm2 compatibility (CurrentDir) |
OSC 9999;ask | Relay 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 agentIn 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.pyShell 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:
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.
| Pattern | Color | Example |
|---|---|---|
| Errors | Red (bold) | error, fatal, exception |
| Warnings | Yellow | warning, deprecated |
| Success | Green | OK, Done, PASSED, ✓ |
| URLs | Blue (underline) | https://... |
| Paths | Cyan (underline) | /usr/local/bin |
| IPv4 | Yellow | 192.168.1.1 |
| Numbers + Units | Magenta | 340ms, 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.
Subtle gradient lines between commands make the terminal scannable at a glance.
Right-click in RECENT → Copy Output, Re-run, Scroll to Block, Add Favorite.
⌘⇧↑ / ⌘⇧↓ to jump between command blocks.
Inline Autocomplete
IDE-style dropdown that appears as you type, showing subcommands, flags, and descriptions.
Built-in completion specs for:
Navigate with ↑/↓, accept with Tab, dismiss with Esc.
Inline Images
Display images directly in the terminal using the Kitty Graphics Protocol.
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 connections switch to a warning theme (e.g., Obsidian). Configurable per host pattern.
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.
Regex Triggers
Automatic actions when terminal output matches a pattern. Configure in Settings → Notifications → Regex Triggers.
macOS notification when output matches (e.g., 'BUILD SUCCEEDED').
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.
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.
Detects git push from any shell (Relay, external terminal, IDE) via filesystem watching.
Steps update adaptively every 2–4 seconds with animated progress bar and pulsing status dots.
Click any step to expand its log inline below. Copy logs to clipboard with one click.
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.
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.
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.
Sidebar Cockpit
Workspaces live in the titlebar; pane topology and layout selection sit in the info panel on the right (⌘I). No modal, no popover — everything stays in view.
Switch workspaces from the title bar. In macOS fullscreen, the workspace switcher moves into the info panel so it remains accessible.
Per pane: pulsing running indicator, current or last command, exit-code badge (✓ / failure code / ⌃C), and shell-mode toggle (Relay prompt ↔ ~/.zshrc). Drag-to-swap between slots.
Header pill shows the current layout (e.g. "2×2 ▾"). Click to expand all 9 topology thumbnails — from Single to 2×2 to Focus.
The compact rail offers Project, Library, and Global. Click to expand the selected scope; ⌘I switches between the rail and expanded panel. ⌘⇧I enables Focus Mode to hide the surrounding interface.
Inline Workflow
Inputs where the command happens. Snippets, pipeline logs, and blueprints expand right inside the sidebar — with live preview and a run button.
Parameterized snippets expand with inline inputs. Live-resolved preview shows the final command. Run button is disabled while parameters are empty — no broken commands.
Click a CI/CD step to expand its log directly below. Scrollable, selectable, with copy button.
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.
Yellow spinner ring (72% filled) rotates continuously. Linear, 1.2 seconds per turn.
Full green ring with a checkmark in the center. Instantly recognizable in the step list.
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.
⌘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.
Blueprints inherit the first pane's path as the workspace root. Later splits inside a blueprint-launched workspace land there too.
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
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).
⌘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.
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.
Multiple files open at once. Tab bar with dirty indicator. Cursor and scroll position survive per file across tab switches.
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.
With a suitable language server, suggestions use project context. Without a server, language keywords and words from the open document remain available.
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
| Key | Action |
|---|---|
| ⌘S | Save active file |
| ⌘W | Close active tab |
| ⌘⇧E | Find references in the project |
| ⌘⇧F | Find in Files (editor pane) |
| ⌘F | Open find & replace |
| ⌘B | Toggle 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.
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.
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.
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.
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.
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.
Terminal search
Incremental search over the active terminal buffer with an optional regex mode. The match indicator pill shows immediately whether there are any hits.
| Key | Action |
|---|---|
| ⌘F | Open / close the search bar |
| ⌘G | Next match |
| ⌘⇧G | Previous match |
| Esc | Close search |
- Regex toggle in the bar — switch between literal search and full NSRegularExpression patterns
- Input field turns red when there are no matches left in the buffer — no guesswork
- Doesn't work in alt-screen mode (vim, less, tmux), because the app there owns the keyboard
Broadcast input
Type once — every selected pane gets the input in parallel. Perfect for multi-server operations, cluster maintenance, or comparative tests across containers.
Toggle in the workspace sidebar — the BROADCAST section appears and lists every pane in the workspace with a checkbox.
Use checkboxes to pick which panes receive input. On enable all panes are pre-selected; deselect individual ones as needed.
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.
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.
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.
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.
Retro themes get scanlines (Off/Light/Medium/Heavy configurable), a subtle edge vignette, and chromatic-aberration color fringes. Pure retro vibes, performance-neutral.
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.
| Setting | Description |
|---|---|
| Appearance → Look & Feel | Themes, light/dark appearance, fonts, prompt, and cursor. |
| Terminal → Shell | Shell, starting directory, environment, command blocks, and autocomplete. |
| Terminal → Keyboard | View and customize keyboard shortcuts. |
| Workspace Tools → Editor | Editor font, indentation, display, and language servers. |
| Workspace Tools → Browser | Browser behavior, dev servers, and web tools. |
| Workspace Tools → Notes & Todos | Notes, todos, and optional clipboard capture. |
| Intelligence → AI | AI assistant connection, model, and context. |
| Intelligence → Pipeline | Connect CI providers and configure pipeline monitoring. |
| Intelligence → Usage | Provider quotas, reset times and refresh controls. |
| Integration → Integration | Shell integration and session blueprints. |
| Integration → Memory | Project history, retention, and session restoration. |
| Integration → Notifications | Bell, long-running commands, webhooks, and regex triggers. |
| Account → License | License status and activation. |