cd /news/developer-tools/show-hn-fedterm-a-claude-native-term… · home topics developer-tools article
[ARTICLE · art-77511] src=github.com ↗ pub= topic=developer-tools verified=true sentiment=· neutral

Show HN: FedTerm – a Claude-native terminal for macOS that popup like Spotlight

FedTerm, a Claude-native terminal for macOS that opens with a global shortcut like Spotlight, has been released on Show HN. The app floats above other apps, records command history, and integrates with Claude Code sessions, offering features such as fuzzy search, SSH connections, and named sessions.

read7 min views1 publishedJul 28, 2026
Show HN: FedTerm – a Claude-native terminal for macOS that popup like Spotlight
Image: source

FedTerm is a terminal for macOS that opens with a global shortcut. Press ⌥`` Space and a window appears on top of the app you are working in, including fullscreen apps and other desktops. Type a command, an SSH host or a folder path, press Enter, and the window becomes a terminal. Press the shortcut again to hide it and return focus to the previous app.

The app also records the commands you run, using a zsh hook. Because of that the same window works as a search over your command history, a list of servers you connect to, and a launcher for your Claude Code sessions.

FedTerm lives in the menu bar and has no Dock icon. The shortcut can be changed to any combination you like.

  • The shortcut is registered through Carbon, so Accessibility permissions are not needed.
  • You can rebind it in the settings. Click the field and press the keys you want. F-keys work without modifiers, other keys need at least one. If the combination is taken by another app, FedTerm says so and keeps the previous one.
  • The window floats above other apps and follows you between desktops.
  • It hides when you click outside of it. Pin it if you want it to stay open.
  • Its size and position are remembered between launches. If the saved position is off-screen, the window opens in the centre.

FedTerm looks at what you type and offers what fits:

Input Result
docker compose up -d
runs the command in a new tab
deploy@prod-1 or ssh -p 2222 host
opens an SSH connection. Flags like -p , -i , -J , -l and ssh:// links are parsed
/Users/me/projects/api or ~/work/api
opens a Claude Code session in that folder
dcup
matching commands from your history

Arrow keys move through the list, Enter runs the selected item, Esc clears the field. Matching is fuzzy, so a few letters are usually enough.

Favourite commands. Star a command and it stays at the top of the window. You can rename it and mark it to open in its own tab when the app starts.Saved SSH connections. Pin a server and give it a label. Recent connections are collected on their own and sorted by how recently and how often you used them.Command history. Commands are grouped by age: last hour, six hours, today, yesterday, this week, older. Repeats inside a group are shown once. For the last hour there is also a short summary with counts per tool (git

,docker

,ssh

,npm

and so on) and clickable server names.

Named sessions. Drop a folder on the window or paste a path, then give the session a name. FedTerm starts it with its own session id and later resumes that exact session instead of creating a new one.All past sessions. FedTerm reads~/.claude/projects

, takes the summary or first message of each transcript together with its folder, and lists your sessions grouped by project and by date, with a search field. Results are cached by file modification time, so the list opens without delay.Clean environment.CLAUDE*

andANTHROPIC*

variables are removed from new tabs. A session started from FedTerm behaves like a standalone one even if FedTerm itself was launched from Claude Code.

⌘T opens a tab,⌘W closes it,⌘1⌘9 switch between tabs,⌘[ and⌘] move left and right.- Tabs can be dragged to reorder and renamed with a double click.

  • Open tabs are restored on the next launch. SSH tabs reconnect automatically.
  • The tab title follows the shell: current folder, the title set by the running program, or the server name.
  • If something is still running, FedTerm asks for confirmation before quitting.

A command can be bound to ⌃1⌃9 together with a working directory. These shortcuts only fire while the window is open, so they do not affect other apps. Multi-line scripts are saved to a file and run through bash, so loops and conditionals work as written.

There are 13 built-in themes: the Terminal.app palette, One Dark, Dracula, Nord, Gruvbox, both Solarized variants, Tokyo Night, Catppuccin Mocha, Monokai, GitHub Light and two neutral greys. Any theme can be copied and edited: background, text, caret, selection, all 16 ANSI colours and background transparency over the blur. Font family, size and weight are configurable. There is also a thin strokes option for crisper text and a slider that darkens the glass over light wallpapers. Changes apply to open terminals immediately.

The terminal is SwiftTerm: xterm-256color, truecolor and mouse support. -click opens links, file paths and OSC 8 hyperlinks. The scrollbar gutter is removed, so full-width programs like mc

and htop

use the entire width. ⌃C is written directly to the pty, so it always interrupts. Shortcuts are matched by physical key code and keep working on Cyrillic and other non-Latin layouts. The interface is in Russian on Russian systems and in English everywhere else.

  • macOS 13 Ventura or newer, Apple Silicon or Intel
  • Xcode Command Line Tools with Swift 5.9 or newer
  • zsh, the default shell on macOS. Command history is captured through it
  • The CLI in yourclaude

PATH

for the Claude Code features

git clone https://github.com/feddot2517/fedterm.git
cd fedterm
make bundle          # builds the release binary and assembles dist/FedTerm.app
open dist/FedTerm.app

make run

does both steps at once. make dev

runs the app from source without building a bundle.

The binary is signed ad-hoc, so Gatekeeper will block the first launch. Right-click the app and choose Open, or remove the quarantine flag:

xattr -dr com.apple.quarantine dist/FedTerm.app

Move the app to /Applications

and add it to System Settings → General → Login Items to have it running all the time.

Shortcut Action
⌥Space
show or hide the window (rebindable)
Enter
run the selected item
↑ ↓
move through results and history
Esc
clear the field
⌘T / ⌘W
open or close a tab
⌘1–⌘9
switch to a tab
⌘[ / ⌘]
previous or next tab
⌃1–⌃9
run a custom command
⌘+ / ⌘- / ⌘0
font size up, down, reset
⌘-click
open a link or path from the output
⌃C
interrupt the running program

All files are local, in ~/Library/Application Support/FedTerm/

:

File Contents
history.jsonl
commands with timestamp and working directory
pins.json , favorites.json
saved servers and favourite commands
state.json
open tabs for the next launch
automations.json , scripts/
custom ⌃1–⌃9 commands and generated scripts
claude_sessions.json , claude_index.json
named Claude sessions and the transcript title cache
custom_themes.json
user themes
zdotdir/
generated zsh files that source your own config and add the history hook

The app has no networking code, so nothing is uploaded and there is no telemetry. History is a plain text file and can be deleted at any time.

Note that commands are stored exactly as typed. If you paste a token or password inline, it will be in the file. Treat it like ~/.zsh_history

.

Sources/FedTerm/
├─ main.swift, AppDelegate.swift        startup, menu bar, window shortcuts
├─ SpotlightPanel.swift                 floating window, blur, saved position
├─ ContentView.swift, TabsModel.swift   tab bar, reordering, persisted state
├─ HomeView.swift                       search field, results, history
├─ TerminalSession.swift                SwiftTerm subclass, shell process, ⌘-click
├─ HistoryStore.swift                   reading and watching history.jsonl
├─ ShellIntegration.swift               generated zsh config with the preexec hook
├─ ClaudeStore.swift, ClaudeUI.swift    Claude Code sessions and their browser
├─ AutomationsStore.swift, AutomationEditor.swift   custom ⌃1–9 commands
├─ FavoritesStore.swift                 favourite commands and autostart
├─ Theme.swift, ThemeEditor.swift, SettingsUI.swift   themes, fonts, settings
├─ HotkeyManager.swift, HotkeyRecorder.swift   global shortcut and rebinding
├─ Models.swift                         SSH parsing and command classification
└─ L10n.swift                           Russian and English strings

SwiftTermby Miguel de Icaza does the terminal emulation.- Colour schemes are taken from One Dark, Dracula, Nord, Gruvbox, Solarized, Tokyo Night, Catppuccin and Monokai.

── more in #developer-tools 4 stories · sorted by recency
── more on @fedterm 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/show-hn-fedterm-a-cl…] indexed:0 read:7min 2026-07-28 ·