Flutvio
A terminal-first macOS workspace for Flutter — run any AI coding agent, wired to the iOS Simulator.
Download for macOS · Website · Features · Install · The flutvio command · Roadmap
Why Flutvio
AI coding agents — Claude Code, OpenCode, Codex, Gemini CLI, Aider — live in the terminal. Flutter development lives in a simulator. Today those are two separate windows, and the agent is blind: it edits your Dart code but cannot see the screen it just changed, tap a button, or read the app's logs.
Flutvio puts them in one window and connects them:
- The terminal is the main pane, not a small panel at the bottom of an editor. Whatever agent you run in it is the "AI" of the workspace — nothing is hard-coded to one vendor.
- The iOS Simulator sits beside it, mirrored live at 60 fps, and you can touch it.
- A
flutvio command is on the PATH of every terminal, so the agent can hot reload, take a screenshot, read what is on screen, tap, type, and read the logs — and check its own work.
Everything else an IDE has (files, an editor, git, diffs) is there, but out of the way until you ask for it.
Features
Terminal first
- Full terminal (xterm.js + a real PTY): tabs, up to four split panes, 10,000 lines of scrollback.
- Tabs name themselves after what runs in them —
zsh → claude → zsh — with the agent's colour and a pulse while it works.
- Mac editing keys work the way you expect: hold ⌫, ⌥⌫ word, ⌘⌫ line, ⌥←/→, ⌘←/→, ⇧↩ for a new line in agent prompts.
- Arabic and other right-to-left text reads correctly in the terminal — a first-class concern, not an afterthought.
Any agent, connected to the simulator
- Works with any CLI agent: Claude Code, OpenCode, Codex, Gemini CLI, Aider, Cursor Agent, Amp, Goose…
- The
flutvio command lets the agent see and drive the simulator and the running app.
- One click adds a short section about it to your project's
AGENTS.md.
- Sessions: browse and resume past Claude Code, OpenCode, Codex and Gemini sessions for the project.
Agent panel
- For Claude Code: how full the context window is, model, plan, prompts sent, compactions, and "limit reached — resets at …".
- A small context meter in the tab strip, visible while you type.
- MCP servers and connectors with their real status (connected / needs sign-in / failed).
- Read from the agent's own local files. Nothing is sent anywhere.
Notifications
- When an agent finishes its turn, or asks for you, while you are in another tab or another app: a dot on the tab, a bell with a count, a toast, a macOS notification and a Dock badge. Click to jump to that terminal.
- Long commands (builds, tests) that end in the background notify too.
Flutter built in
- Run, stop, hot reload and hot restart from the title bar or the keyboard; hot reload on save.
- Embedded iOS Simulator: Xcode's own simulator mirrored in the window (H.264 over
idb_companion), with touch, keyboard, hardware buttons, rotation and screenshots. Off until you open it — closed means nothing runs.
- Flutter tab: a dedicated shell with
pub get, upgrade, outdated, clean, analyze, test, doctor, builds and "add package" one click away, plus the running app's output.
- Device picker for every device
flutter lists.
The rest of an IDE, when you want it
- Changes: a live "Files changed" view — watch an agent's edits appear as diffs while it works.
- Git: stage, commit, push, pull, branches, history graph, git worktrees, and GitHub pull requests (list, review, create, merge) through the
gh CLI.
- Editor: Monaco with Dart completion, errors, hover, go-to-definition and format on save (Dart language server).
- File tree, built-in browser pane, five themes, a searchable keyboard-shortcut list.
Screenshots
| |
|---|
| Flutter tab — everyday commands and the app's output | Driving the app from the terminal with flutvio |
| Notifications when an agent finishes elsewhere | Editor with Dart completion |
| Split terminals | Themes |
Install
- Download
Flutvio-<version>-mac-arm64.dmg from the latest release.
- Open it and drag Flutvio to Applications.
- Launch it. The app is signed with a Developer ID and notarized by Apple, so it opens without warnings.
The app is open source and built from this repository; you can also build it yourself. Each release lists SHA-256 checksums.
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗