Skip to content
Goblin Portal
Download
Goblin Portal app iconv1.17.0

Goblin Portal

A Mac terminal that takes AI agents seriously.

Run agents side by side, get pinged when one finishes, review the diff in the same window. Your agents get the full machine, without paying framework taxes.

Download v1.17.02.5 MBmacOS 14+ · Apple silicon
Free and MIT licensed. Read the source →
  • Swift and AppKit
  • Signed and notarized
  • 560 contrast assertions
Goblin Portal running agent-afk with sidebar file tree and syntax-highlighted output
agent-native

Your agent is working. You are allowed to leave.

The best agents run in a shell, not a browser tab. Goblin Portal gives them a fast native host, keeps an eye on them while you are elsewhere, and never tries to be one of them.

Pinged when it finishes

A command that runs 10 seconds or longer in a background tab sends a macOS notification when it ends: succeeded or failed, and how long it took. Watching a spinner is not a job.

Status on every tab

Long-running commands leave a green or red dot on their tab, and a dim one means still going. OSC 133 does the tracking, so nobody has to read scrollback to find out.

Four panes per tab

Split right with ⌘⇧\, down with ⌘⇧-, up to four panes, and the layout survives a relaunch. ⌘⇧H/J/K/L moves focus, because your hands were already there.

Find the one you lost

⌘⇧A fuzzy-searches every Space and tab you have open. It is tmux's ctrl-b w, minus the ctrl-b.

tmux, done properly

The vendored emulator carries twelve patches, including fixes for scrollback reflow, alt-buffer bleed across panes and DCS passthrough. The bugs that usually make tmux inside a terminal app a gamble.

Paste Guard

Pasting anything multi-line asks before it runs. Agents write a lot of scripts, and some of them are for you to read first.

Runs whatever you run
Agent AFK

Autonomous agent runtime with daemon, Telegram, and REPL surfaces.

Claude Code

Anthropic's terminal-native coding agent. Runs entirely in your shell.

Codex

OpenAI's CLI agent for code generation and multi-file edits.

Hermes

Terminal agent framework with tool use and conversation memory.

features

No AI built in, on purpose

The intelligence belongs to your agent. The terminal's job is to stay out of the way.

Zero-Overhead Host

Swift and AppKit. No Electron, no V8, no renderer process. The RAM your terminal was quietly consuming goes back to your agent.

Agent Workspaces

One Space per project, as many agent sessions inside as you like. Real macOS window tabs, not a reimplemented version of them, and every Space reopens where you left it.

Metal by Default

GPU rendering out of the box, paced to the display instead of a free-running timer, so a 60 fps spinner actually gets 60 frames. Core Text is one config line away.

Scrolls Like a Mac App

Pixel-smooth trackpad scrolling with real momentum, carried by the OS events rather than a homemade timer. Ten thousand lines of agent output feel like a web page, not a slideshow.

Settings, Both Ways

A real Settings window on ⌘, that writes plain JSON, and ⌘R reloads either one live. Click or edit, whichever you trust more.

Never Lose Agent Output

Closing a tab or window with a running process asks first, naming the jobs. A shell that exits with an error keeps its tab and scrollback, and Return restarts it in the same directory. Default scrollback is 5,000 lines. A bell or notification from a background tab bounces the Dock.

Compact Titlebar

Set "titlebar": "compact" in config.json and the terminal moves into the titlebar band, giving a default-size window two more rows. Stays clear of the traffic lights, sidebar toggle, tab bar, and warning banner. ⌘R switches live.

workspace

Review the diff where the agent wrote it

A file tree that follows your shell, a Source Control panel, side-by-side diffs and an editor for the quick fix. Enough to review and edit without switching apps, which is all most people actually need.

The sidebar does the bookkeeping

The file tree follows the focused shell's working directory by asking the kernel, so no dotfile can break it. Git status on every row, branch and ahead/behind on top.

  • New file, rename, move and duplicate, all inline
  • Move to Trash always asks first, and nothing is ever deleted outright
  • Open tabs follow a rename or a move, and a tab with unsaved changes is never closed
Goblin Portal workspace showing a project file tree with multiple terminal tabs and git status indicators

Edit without leaving the terminal

Open a file into an editor tab next to your terminals. Review what your agent wrote, make the fix, get back to work.

  • Syntax highlighting for 23 languages, no grammar bundles
  • Line numbers, indent guides, and a column guide at 80 characters
  • Auto-indent, bracket matching, and indent-rainbow coloring
Goblin Portal editor tab showing syntax-highlighted TypeScript alongside the terminal

Source Control

⌃⇧G opens a real Source Control panel: stage, unstage, discard (it asks first), commit with ⌘Enter, push and pull. A first push sets the upstream for you.

Side-by-Side Diffs

Click a changed file and get a side-by-side diff with synchronized scrolling. The agent's work, laid out for judgment.

Syntax Highlighting

23 languages from a regex tokenizer, not tree-sitter. It may mis-color a raw string literal. It will never ship a grammar binary nobody can read.

Palette, Symbols, Multi-Cursor

⌘⇧P for every command, ⌘⇧O for symbols, ⌘L for a line, ⌘D for the next occurrence. Same muscle memory as VS Code, without VS Code.

release

New in v1.17.0

October 22, 2026

Smart Tab Titles

Tabs now show what is actually happening: the current directory basename when your shell is idle, "command — dir" while a command runs, the remote host when you are connected over SSH, and the multiplexer name inside tmux or screen. Titles update live as you work, with no configuration required.

Progress Bars on Tabs and Dock

Commands that report progress — package managers, build tools, and anything that emits OSC 9;4 — now show a coloured bar at the bottom of their tab pill and on the Dock icon. Green for determinate progress, blue for indeterminate, red for error, yellow for paused.

Safer Inline Images

Inline image rendering (OSC 1337 and sixel) is now bounded: payload size is capped, multipart transfers are supported, and malformed input cannot crash the terminal. Unterminated transfers are freed automatically after 120 seconds.

Split Pane Focus Fixes

Clicking a split pane now reliably moves focus to it and lights its accent border. Moving focus to the sidebar — file tree or filter field — no longer dims the last-focused terminal pane, so you always know where keyboard input will go.

Better Terminal Protocol Support

Modern CLI tools that query terminal capabilities via XTVERSION or use DEC alternate scroll mode now get the right answers. Expect better out-of-the-box behaviour from tools that previously felt slightly off.

Download v1.17.0 →Full release notes →
color

Measured themes

Ten palettes ship out of the box. Each one has been run through 560 contrast assertions, because "it looks fine" is not a QA strategy.

✓ goblin-portal ~/Projects/goblin-portal (main)
$ swift run GoblinPortal
Build complete (0.3s)
◆ agent · refactor ThemeValues.swift
● read_file ×4 done
- let accent = Color(red: 0.18, green: 0.82, blue: 0.4)
+ let accent = palette.accent
✓ 560 assertions passed · 0 failed
❯ ▊
Download v1.17.0Ships with all ten. Pick one in Settings.
reference

Mouse optional

The ones worth learning on day one. ⌘⇧P finds everything else.

Spaces & Documents
Spaces & Documents keyboard shortcuts
ShortcutAction
⌘NNew Space (window tab)
⌘TNew document in current Space
⌘⇧[Previous Space
⌘⇧]Next Space
⌘⌥←Previous document
⌘⌥→Next document
⌘1-⌘9Jump to document by index
⌘⇧AChoose window: fuzzy-search every Space and tab
⌘⇧PCommand palette: every menu action, searchable
⌘KClear buffer: screen and scrollback of the focused pane
View & Splits
View & Splits keyboard shortcuts
ShortcutAction
⌘BToggle sidebar
⌘⇧EShow Explorer (file tree)
⌃⇧GShow Source Control
⌘⇧\Split pane right
⌘⇧-Split pane down
⌘⇧H/J/K/LFocus pane left / down / up / right
⌃⌘FFull screen
⌘RReload config
⌘,Open Settings
⌘MMinimize window
⌥⌘HHide other apps
⌘?Help (opens the README)
Font Size
Font Size keyboard shortcuts
ShortcutAction
⌘+Zoom in (persists across tabs and relaunches)
⌘-Zoom out
⌘0Reset zoom to config font.size
Line Editing
Line Editing keyboard shortcuts
ShortcutAction
⌘⌫Delete to start of line (^U)
⌘⌦Delete to end of line (^K)
⌘←Jump to start of line (^A)
⌘→Jump to end of line (^E)
⌥←Jump back one word
⌥→Jump forward one word
questions

Reasonable objections

  • Does it have AI built in?

    No, on purpose. Bring Claude Code, Codex, Hermes, Agent AFK or whatever ships next week. The terminal hosts your agent; it does not compete with it.

  • What does it cost?

    Nothing. It is MIT licensed and the source is on GitHub. No account, no login, and nobody will ask you to "jump on a quick call".

  • Will it run on my Mac?

    If it runs macOS 14 Sonoma or later on Apple silicon, yes. The release build is arm64 only, so Intel Macs are not supported.

  • Is there a Windows version?

    Absolutely not. Native Mac, on purpose. Windows is someone else's problem.

  • Will macOS let me open it?

    Yes. Releases are signed with a Developer ID and notarized by Apple, so it opens like any other app. No terminal incantations required.

  • How do updates work?

    It checks GitHub Releases on launch, at most once a day, and Check for Updates… in the Goblin Portal menu (or the ⌘⇧P palette) checks on demand. No Sparkle, no background updater, nothing phoning home in between.

  • Where are the testimonials?

    We do not have any yet. We have 560 contrast assertions instead, and they have never once asked for a quote tweet.

get started

Two and a half megabytes. No account.

Download it, drag it to Applications, open it. That is the whole onboarding.

Download Goblin Portal v1.17.0

macOS 14+ · Apple silicon · MIT

or

You read the FAQ. Nobody reads the FAQ.