Documentation
Install, configure, and live inside Dune — a native workbench with a Monaco editor, Open VSX extensions, and a built-in coding agent.
Dune Documentation
Dune is an AI-first desktop IDE: a native workbench, a Monaco editor, a built-in coding agent, and Open VSX extensions. It ships as Dune.app.
The app itself is proprietary — you download binaries via Homebrew or GitHub releases. You extend it by building and publishing Open VSX–compatible extensions (themes, languages, and more) and by adding agent plugins under .dune/.
Install
Dune ships through one Homebrew tap — duneyou/homebrew-dune. Tap it once, then install any of the three packages it publishes. They all ride the same vX.Y.Z release, so a single brew upgrade moves them together.
brew tap duneyou/duneWhat the tap installs
brew install --cask duneyou/dune/dune-ide
# -> Dune.app
brew install duneyou/dune/dune-ide-cli
# -> dune
brew install duneyou/dune/dune-server
# -> dune-serverAfter the tap is added you can drop the duneyou/dune prefix — brew install --cask dune-ide and brew install dune-server resolve the same way.
The app — dune-ide
Installs Dune.app into /Applications. The cask does not put dune on your PATH — install dune-ide-cli alongside it for the terminal command.
The launcher — dune-ide-cli
A VS Code–style code shim: it locates Dune.app and forwards your arguments. The formula is named dune-ide-cli so it never shadows Homebrew core's OCaml dune — the installed binary is still dune. If you use both, decide which wins on PATH (for example brew unlink dune).
It looks for the app at $DUNE_IDE_BIN first, then inside a sibling Dune.app, then /Applications/Dune.app. Point it at a build elsewhere with:
export DUNE_IDE_BIN="/Applications/Dune.app/Contents/MacOS/Dune"
dune .The server — dune-server
Serves a folder's files, git, .dune/ config, and an interactive terminal over HTTP + WebSocket, so the desktop app can attach to a workspace on another machine. The interactive /pty endpoint requires the hyper HTTP backend:
brew install duneyou/dune/dune-server
TISH_HTTP_BACKEND=hyper dune-server --workspace "$PWD" --port 8787 --token secret
curl localhost:8787/health # {"ok":true}Upgrade and uninstall
brew update && brew upgrade dune-ide-cli dune-server
brew upgrade --cask dune-ide
brew uninstall dune-ide-cli dune-server
brew uninstall --cask dune-ide # add --zap to remove app support files
brew untap duneyou/duneOr skip Homebrew entirely: drag Dune.app from a release DMG into /Applications. Releases are published on duneyou/dune.
First 10 minutes
- 1
Open a folder. Welcome screen, or File ▸ Open Folder. Dune treats that folder as the workspace.
- 2
Command palette. Cmd+Shift+P (macOS) / Ctrl+Shift+P. Almost every action is listed there — search “theme”, “terminal”, “git”, “extensions”, “remote”.
- 3
Sign in to Hypery. Open the account / agent side of the workbench and complete sign-in. Without a Hypery account the editor, git, and extensions still work; the agent does not.
- 4
Install a language extension. Open Extensions, search Open VSX (for example a Python or TypeScript pack), and install. Grammar-only and declarative extensions (themes, languages, settings, commands) work immediately.
- 5
Talk to the agent. Open chat, pick Agent or Ask, and describe a change. Use @ to attach files or web search. Plan mode writes a checklist you can review before it edits.
- 6
Optional CLI. From a terminal, dune . opens the current folder.
What you can do
The workbench is a set of internal modules — Explorer, Terminal, Git, Agent, Extensions, Remote, and more. You can disable non-core ones like a feature flag; core modules always stay on. Here's the short tour.
Themes
VS Code color themes work as-is. Dune adds extra chrome tokens — window frame, floating cards, traffic lights — so a theme can style the whole app, not only the editor. Bundled Dune themes seed into your user extensions on first launch: four Desert times of day (Daybreak, Sunset, Dusk, Midnight) and four Dessert flavors (Macaron, Blackberry, Boysenberry, Blackcurrant).
To write or publish your own theme — including optional dune.* chrome keys — see Theme authoring.
"statusBar.background": "#E0A968",
"statusBar.foreground": "#1A0F05",
"editor.foreground": "#EADCBF"Useful chrome keys
Highest-value dune.* keys for most themes. Dotted and hyphenated forms are equivalent except for the eight macOS dune.titleBar.* controls, which require exact dotted spelling.
Plugins
Dune has three extension layers, and they compose — a VS Code theme, an MCP server, and a project skill can all be active in the same workspace.
Built-in features
The workbench itself is a set of internal modules (Explorer, Terminal, Git, Agent, Extensions, Remote, and others). You can disable non-core ones like a feature flag — they stay installed, they just do not activate. Core modules always stay on.
VS Code extensions
Install from Open VSX in the Extensions view, or drop a VSIX into ~/.dune/extensions. Dune also scans ~/.vscode/extensions and ~/.cursor/extensions, so packs you already have are picked up.
What works today:
- Declarative
package.jsoncontributions: languages, TextMate grammars, themes, commands, keybindings, settings. - Extensions with a
mainentry run in a Node or Bun extension host. Setdune.ide.extensionHost.runtimetoauto(default),node, orbun. Native.nodeaddons need Node.
The vscode API surface is still growing toward VS Code 1.96-line parity. Grammars, themes, and many commands are solid; arbitrary marketplace extensions that depend on the full Electron host are not a guarantee yet. Building and publishing your own extensions for Open VSX is supported.
Agent plugins
These live next to your code under .dune/ (project) and ~/.dune/ (user). Project wins on name conflict.
The agent is also an MCP client: configure stdio servers in .dune/mcp.json (or user MCP settings) and their tools show up in chat.
Project config
Dune reads VS Code JSON where it already exists, and prefers .dune/ when both are present.
User settings live in Dune's user directory (same idea as VS Code's User settings.json).
Command-line tools
The desktop launcher and the headless binaries share one agent loop. Put dune on your PATH and open any folder from the terminal.
dune . # open the current folder
dune -g src/main.rs:42:5 # jump to line 42, column 5
dune --wait CHANGELOG.md # block until closed (good for $EDITOR)
TISH_HTTP_BACKEND=hyper dune-server \
--workspace ./workspace --port 8787 # headless workspacedune and dune-server are the two binaries the Homebrew tap ships — see Homebrew packages. dune-headless, dune-cloud-agent, and dune-cloud-run are not distributed through the tap; they ship inside Dune.app and on cloud workers.
Ready to write code in golden hour?
Download Dune.app and open your first folder.