Open source · for coding agents · macOS

Every agent, One terminal

A native Mac terminal on Ghostty's core. dino finds Claude Code, Codex and the rest wherever they run on your Mac, keeps them going after you quit, and tells you when one needs you. Free and open source, no account.

Download for Mac or brew install meetdino/tap/dino

Claude Code, Codex, OpenCode, Copilot CLI and 7 moremacOS 14 or later

On this Mac

Finds the agents you already have

Agents running in iTerm2, Terminal, Ghostty or tmux show up in the sidebar. Continue in dino brings one over, whole conversation included.

In the window: Continue a Session lists agents running in other terminals and finished ones, and shows the selected one's conversation. Continue in dino moves "Migrate billing to Stripe v3" into a new tab.

⌘Q Keep Running

Quit dino, your agents keep going

Agents live in dinod, not in the window. Quit, crash or restart, and they're still there when you come back. dino ls shows them from any terminal.

In the window: quitting asks "Keep your 7 agents running?". After Keep Running, dino closes, and in another terminal dino ls lists them: one needs you, four are working, one is done and one is idle.

tmux

Real tmux, your config

Your own tmux runs in dino, with your keys, your status bar and your plugins. dino never touches its config.

Your tmux, your config

In the window, four steps. 1: a tab named work:api runs the user's own tmux, the dev server and a shell side by side. 2: Claude Code in the tmux window claude asks a question, and dino's sidebar row "Retry with backoff, in tmux work:claude" says needs you. 3: clicking it switches tmux to the claude window, where Claude Code asks to run npm test. 4: with Show my agents in tmux on, a tmux session named dino holds dino's own agents as windows, and the status bar reads "dino: 1 needs you · 2 working".

⌘I Ask · ⌘⏎ Hand off

A terminal that knows your agents

Built on Ghostty's core. ⌘I turns plain English into a command you can check. When it's bigger than one command, ⌘⏎ hands it to an agent in a split.

In the terminal: "find every TODO added this week" becomes a git log command, which runs. Then "fix the flaky retry test in payments" is handed to Claude Code, which opens in a split below and starts working.

Sidebar

Every agent, at a glance

Working, needs you, done or idle, for every agent in every project. Type claude or codex in a dino shell and it's a session like the rest from the start. When one needs you, you get a notification.

In the window: the sidebar lists seven sessions across three projects. A Codex session needs you to approve npm install zod, and a notification says so.

Preview

A browser for every session

When an agent starts a dev server, dino offers its page. The preview sits beside the terminal, keeps its page when you switch sessions, and opens in your own browser in one click.

In the window: Claude Code starts the dev server and prints localhost:5173. dino offers "localhost:5173 · Open Preview", and the preview opens beside the terminal on the signup page, with back, forward, reload and the address.

Review

From diff to merged

Comment on lines and send them to the agent. Open the pull request with auto-fix and auto-merge on: a failed check goes back to the agent with its logs, and dino merges once every check passes.

In the window: a diff of retry.ts with an inline comment asking for jitter. Below it, the pull request goes from one failed check, to an automatic fix, to 12 of 12 checks passing, to merged.

Local proxy

Any agent, any model

Use each agent's own login, or run Claude Code, Codex, OpenCode and most others on OpenRouter, your ChatGPT plan, or a model on your Mac with Ollama, LM Studio, llama.cpp or vLLM. Every session shows its model, tokens and context.

In the window: Claude Code runs on OpenRouter through dino. Its model popover lists OpenRouter's models, with Qwen3.8 27B checked and stars on the ones recommended for Claude Code.

See it run

Linux · SSH

Same agents, any terminal

dino-tui is dino from the keyboard: the sessions sidebar beside the agent you're in, setup, Claude accounts and usage. It talks to the same dinod as the app, works over SSH, and on Linux it's dino's UI.

curl -fsSL https://meetdino.com/install.sh | sh

On Linux it installs dino and dino-tuiThen, or on a Mac with dino: dino tui

Specifications

dino 0.1.6, measured with its performance budget on a MacBook Air (M5, 16 GB).

Runtimedinod, in Rust · agents outlive the app and resume after a restart
AgentsClaude Code, Codex, OpenCode, GitHub Copilot CLI, Cursor Agent, Amp, Kimi Code, Qwen Code, Pi, Hermes, CodeWhale · and your shells
ModelsEach agent's own login · or OpenRouter, ChatGPT plan, Ollama, LM Studio, llama.cpp, vLLM
tmuxYour own tmux and config
Enginelibghostty and Metal · reads your Ghostty config
App at idle0.07% CPU · eight sessions open, window in the background
100 MB through dinod1.18 s · 1.53 CPU-seconds in dinod
Added per keystroke0.29 ms median · 0.53 ms p95, echo through dinod
PlatformsmacOS 14 or later on Apple silicon · Linux on x86_64 and arm64, with dino-tui
LicenseMIT

Open source · MIT

Bring your agents
Keep them running

Rust and Swift on libghostty. Type dino . in any shell to open that folder in dino.

Download for Mac or brew install meetdino/tap/dino

Linux or any terminal: curl -fsSL https://meetdino.com/install.sh | sh, then dino tui