Thirteen Mac apps I use every day as a developer — from terminals and editors to voice input, remote access, and credential management. Each one solves a specific problem.
I've been developing on Mac for a few years now, and the toolset has gone through many iterations. What I've settled on in 2026 is the stack I actually use every day — no filler, no "top 100" list. Just thirteen apps: some help me write and review code, some connect my machines, and one keeps the credentials behind all of it under control. Each has a clear reason to be here.
Ghostty — Terminal
Ghostty↗︎ is a terminal emulator written in Zig by Mitchell Hashimoto (founder of HashiCorp). It's fast — GPU-accelerated rendering, near-instant cold start. Configuration is dead simple: one ~/.config/ghostty/config file, no YAML/TOML/JSON debates.
I switched from iTerm2 and never looked back. iTerm2 is feature-rich but slow to launch and complex to configure. Ghostty takes the opposite approach — it does less, but everything it does is polished. Native macOS rendering, perfect font fallback, decent splits.
A terminal should get out of your way. Ghostty does exactly that.
Zed — Code Editor
Zed↗︎ is the editor built by the original Atom team, rewritten in Rust. It opens instantly and handles large files without stuttering — that alone is a win.
I use Zed for most lightweight editing: quick config changes, reading logs, writing Markdown. VS Code is still around for its plugin ecosystem (Remote SSH, language-specific debuggers). But for the "open a file, change a few lines" workflow, Zed is significantly faster.
Real-time collaborative editing is a core Zed feature, though I haven't used it much. The AI integration is solid. Built-in terminal, file tree, and search all work well. It's a modern editor without the bloat — everything you need, nothing you don't.
Warp — AI Terminal
Wait — why another terminal when Ghostty exists?
Because they solve different problems. Ghostty is a pure terminal emulator — fast and stable. Warp↗︎ is a terminal-IDE hybrid. Its input area is a real editor with free cursor movement, multi-line editing, and command history search. Each command's output is an independent block that you can collapse, copy, or scroll through without it bleeding into surrounding context.
I use Ghostty for long-running processes (dev servers, docker compose) and Warp for interactive work (git, debugging, ad-hoc scripts). They complement each other well.
Warp also has AI-powered command explanation and generation. I don't use it often (Claude Code handles that), but it's handy when I forget some obscure ffmpeg flag.
Typeless — Voice Input for Coding Agents
Typeless↗︎ is system-wide AI dictation. I speak naturally, including pauses and corrections, and it turns that into clean text in whichever app has focus instead of preserving every filler word and repeated phrase.
The place it has changed my workflow most is agentic coding. A useful request for Codex or Claude Code is rarely a one-line command: I need to explain the result I want, the current context, the constraints, and how I will judge the finished work. Saying that brief aloud is faster and more natural than typing a long prompt, especially for the first task in a session, review feedback, or a follow-up after reading an agent's plan.
I still type code, shell commands, paths, and credentials. Voice is for intent; the keyboard is for exact syntax. That boundary makes Typeless genuinely useful instead of turning it into a novelty input method.
DataGrip — Database IDE
DataGrip↗︎ is JetBrains' database IDE. At work I connect to SQL Server 2025, personal projects use Supabase (PostgreSQL) — DataGrip handles both in one tool.
SQL autocompletion, schema visualization, query result export, simultaneous multi-source connections — these features sound standard, but DataGrip's completion quality is the best I've used across any database tool. It genuinely understands your schema, not just keyword matching.
The only downside is the classic JetBrains problem: memory consumption. But for database work, there's no better alternative. DBeaver is free but noticeably rougher.
Typora — Markdown Editor
Typora↗︎ is a WYSIWYG Markdown editor, and it's been my go-to for long-form writing.
Many people say "VS Code / Zed can do Markdown too," and they can — but the experience is completely different. Typora's live preview isn't a split pane; it renders inline right where you type. You never get pulled out of your writing flow by syntax symbols.
I use Typora for blog drafts, project docs, and meeting notes, then copy the content into MDX files. Maybe it's an "extra step," but for writing, how a tool feels matters more than raw efficiency. Typora feels the best.
Drag-and-drop images, table editing, theme customization, PDF export — it has everything and remains rock-solid stable.
PDF Expert — PDF Reading & Annotation
PDF Expert↗︎ is the best PDF tool on macOS, period.
Preview.app handles basic viewing, but the moment you need annotations, signatures, text editing, or file merging, it falls short. PDF Expert launches fast, renders accurately, and has a complete annotation toolkit. I use it daily for technical docs and papers — the highlight + annotate workflow is seamless.
Form filling and signing are also frequent use cases. Much lighter than Adobe Acrobat, and reasonably priced (one-time purchase).
Docker Desktop — Containers
Docker Desktop↗︎ needs no introduction. When local development requires databases, message queues, or various services, Docker Compose handles it in one command.
My main uses:
Running PostgreSQL, Redis locally
Testing multi-service architectures
Reproducing production environment issues
Docker Desktop's performance on macOS has long been criticized (it runs a Linux VM under the hood), but recent versions have improved significantly. VirtioFS makes bind mount speeds acceptable.
OrbStack is a lighter alternative, but Docker Desktop works well enough for me, and its VS Code Dev Containers integration is more mature.
Tailscale — A Private Link Between My Laptops
Tailscale↗︎ connects my two laptops even when they are not on the same local network. Each machine gets a stable private address and MagicDNS name, so the laptop at home remains reachable from the other one without router port-forwarding or exposing a service to the public internet.
I use that private connection for SSH, development servers, dashboards, and the occasional file transfer. The service still has to be running on the destination machine — Tailscale supplies the network path, not the service itself — but once both laptops are in the same tailnet, changing Wi-Fi networks stops changing how I reach them.
Most of the time the connection is direct. When the surrounding networks make that impossible, Tailscale can relay it automatically. I do not have to care which path it took; I use the same private hostname either way.
1Password — Accounts and Project Secrets
1Password↗︎ holds the personal side of my AI workflow: the ChatGPT and Claude logins, passkeys, recovery codes, and related account details. They do not live in browser notes, shell history, or a text file that eventually gets copied into the wrong place.
It also became the source of truth for this project's credentials. The repository can commit a value-free reference such as:
LLM_API_KEY=op://.../LLM_API_KEY
The actual value stays in 1Password. For local development, op run resolves the reference and exposes it only to the child process. Production uses the same idea immediately before deployment, so the runtime receives the credential without turning GitHub or the repository into the canonical secret store.
This matters more now that Codex and Claude Code can run commands on my behalf. I do not give an agent broad access to a vault; I inject only the variables needed by the command it is running. 1Password is not just where I save passwords — it is the boundary between an agent that can do useful work and an agent that can see every credential I own.
Raycast — Spotlight Replacement
Raycast↗︎ is the first app I set up on any new Mac. Once installed, I never open Spotlight again.
Why Replace Spotlight
Spotlight's problem isn't that it's broken — it's slow and imprecise. App search rankings are often wrong, and file search is even worse. Raycast's fuzzy matching is fast and accurate — two or three characters and you're at the app you want. But Raycast isn't just a launcher — it's a programmable command palette that replaces a whole collection of standalone utilities.
I bind Raycast to Cmd+Space, completely replacing the system Spotlight.
Snippets — My Most-Used Feature
Snippets is the Raycast feature I use the most. The concept is simple: define a keyword that auto-expands into full content when typed.
My commonly used Snippets:
Keyword
Expands To
Use Case
;phone
My phone number
Forms, account signups
;email
Primary email address
Logins, contact forms
;addr
Home address
Deliveries, registrations
;waddr
Office address
Work-related forms
;card
Bank card last 4 digits (never full number)
Reminding myself which card to use
;sig
Email signature
Writing emails
;zoom
Zoom meeting link
Scheduling meetings
I type this information multiple times daily. Before Snippets, it was either manual typing or copy-pasting from Notes. Now ;phone expands instantly, and it works in any application.
You can also use it for code templates (e.g., ;log expanding to console.log()), but I personally leave code completion to my editor and Claude Code. Snippets are for personal info and frequently used text.
Clipboard History — Never Lose Copied Content Again
macOS's native clipboard only keeps the last item. Copy some code, then copy a URL, and the code is gone.
Search: Cmd+Shift+V opens the history panel, search by keyword instantly
Pin: Pin frequently used items for quick access anytime
This feature sounds simple, but once you've used it, there's no going back. Especially during development when you're constantly copying between multiple code snippets — history means no more switching back and forth between windows.
Other Useful Features
Window management: Hotkeys to snap windows left/right/fullscreen — no need for Magnet or Rectangle
Calculator: Quick math right in the search bar, with unit conversion and exchange rates
Plugin ecosystem: Jira, GitHub, Linear, Notion all have quality community plugins
The free tier covers 90% of use cases. The Pro AI features are nice but not essential.
macOS's built-in screenshot (Cmd+Shift+4) works, but Shottr adds several key features:
Scrolling capture: Full-page screenshots of long webpages or conversations
Annotations: Arrows, boxes, text, blur — annotate immediately after capture
OCR: Extract text from screenshots instantly
Measurement: Pixel distances, color picking — great for UI development
Pin to screen: Pin a screenshot on top of everything for easy reference
Free, lightweight, native macOS feel. CleanShot X has more features but costs money. Shottr hits the sweet spot for me.
Bob — Translation
Bob↗︎ is a macOS translation tool that supports text selection translation, screenshot translation, and manual input translation.
As a developer who constantly switches between Chinese and English, Bob is essential. When reading English docs and hitting an unfamiliar term, just select the text and the translation appears — no need to switch to a browser and open Google Translate.
Bob's strength is its multi-source support: it can display results from DeepL, OpenAI, and Google Translate simultaneously, letting you compare which translation is most accurate. I currently use a DeepL + OpenAI combination.
Screenshot translation is also practical — when encountering text in images (UI screenshots, scanned PDFs), just capture the area and it translates directly, no manual typing needed.
Summary
These thirteen apps cover the parts of my daily development workflow where the choice of tool genuinely changes the experience:
Use Case
Tool
Terminal
Ghostty (pure) + Warp (interactive)
Code editing
Zed (lightweight) + VS Code (heavy-duty)
Database
DataGrip
Writing
Typora
PDF
PDF Expert
Containers
Docker Desktop
Launcher
Raycast
Screenshots
Shottr
Translation
Bob
Voice input
Typeless
Remote connection
Tailscale
Passwords & project secrets
1Password
My principle for choosing tools remains simple: solve one problem, and solve it completely. I do not care whether an app is the biggest or the newest. What stays installed is what I reach for repeatedly and can explain in one sentence. These thirteen now form the practical layer around my Mac workflow: express the intent, let the agents work, connect the machines, protect the credentials, and handle everything around the code.