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. 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 https://claude.com/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 and ANTHROPIC 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 https://github.com/migueldeicaza/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 your claude 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 SwiftTerm https://github.com/migueldeicaza/SwiftTerm by Miguel de Icaza does the terminal emulation.- Colour schemes are taken from One Dark, Dracula, Nord, Gruvbox, Solarized, Tokyo Night, Catppuccin and Monokai.