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.
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.