Run every dev server from one pane: click to start, stop and restart, and watch live status, CPU,
memory and logs. Then let your AI agents drive the same daemon over MCP.
No more bun run dev babysitting across a dozen terminal tabs.
Website · Quick start · .devwebui files · MCP · Changelog
DevWebUI is a GUI and MCP control plane for local dev servers that lets developers start, stop,
restart, and monitor every dev process in a project from one dashboard, and lets AI coding agents
drive the same daemon over MCP, replacing a dozen terminal tabs of manual bun run dev babysitting.
The good local-dev GUIs (hotel, exo) are abandoned. PM2's web UI is paid. Everything else that's still maintained is a TUI or a heavy container/k8s tool. Nobody ships the one thing you actually want for a fleet of dev servers: a GUI and MCP over one daemon, so you click, your agents automate, and everyone works off a single source of truth.
- vs. hotel and exo: both are local dev-server GUIs, but neither has shipped a release in a while. DevWebUI is actively maintained and pairs its GUI with an MCP server, which neither offers.
- vs. PM2's web UI (PM2 Plus / PM2.io): PM2 itself is free from the CLI, but its hosted monitoring dashboard is a paid product beyond a limited free tier. DevWebUI's GUI is free and runs entirely on your machine, no account needed for core functionality.
- vs. Docker Compose / devcontainers: these give you full container isolation, which is more
infrastructure than most local dev-server juggling needs. DevWebUI runs your existing commands
(
npm run dev,bun run dev, etc.) directly, no containers or config rewrite required.
Prebuilt Windows app: download devwebui-windows-x64.exe from
Releases and run it directly. It is an
icon-bearing GUI executable with the dashboard embedded and no console window or sidecar folders.
The plain ZIP beside it is reserved for automatic updates.
Want the same tray icon a source checkout gets? Take devwebui-windows-x64-with-tray.zip instead,
run misc\Create-Shortcut.ps1 once, and launch from the shortcut it creates. The icon comes from a
small separate launcher (misc\lunarwerx-tray.exe), so running devwebui.exe on its own has none.
Windows source checkout: double-click the DevWebUI shortcut. It runs hidden with a tray
icon: right-click for Open / Rebuild & Restart / Restart / Stop all processes / Quit
(Stop all processes halts every dev server and leaves DevWebUI running). The first launch builds once;
after that it's instant. Changed the GUI? Hit Rebuild & Restart.
Any OS: from a terminal:
bun install
bun run dev # daemon on :4000 + GUI on http://localhost:4010On its first launch DevWebUI scans once for .devwebui files and recognizable
dev-script projects. After that, startup scanning stays off unless you enable it in Settings; use
Add project, drop a folder or .devwebui file onto the Windows launcher, or run
devwebui open <path> whenever you want to register something new. Want a dependency-free sample?
Add server/examples/extra.devwebui. The GUI and API share one port (default 4000); if it's
taken, the daemon hops to the next free one and opens the URL it actually bound.
- One-click control: start / stop / restart any dev server; live status, CPU, memory, logs.
- One panel per repo: a
.devwebuifile groups every process under one collapsible header; your projects auto-reload next launch. - Runtime-aware launches: automatic mode follows each project's lockfile, and compatible Bun/Node commands launch without a permanent shell wrapper.
- Port-conflict rescue: detects a taken port, tells you which process is holding it, and frees it on request.
- Persistent error log: de-duplicated stderr / crashes / error-looking stdout that survives restarts.
- Desktop shortcuts (Windows): send any server (or a whole repo) to your Desktop from the ⋮ menu; double-click starts it, linked servers and all, in a small window with a Stop button.
- Built for agents: a full set of MCP tools drives the same daemon you click, off one shared state.
- Localized & themed: full i18n (English base; add a language), light/dark.
- Lives in your tray: a Windows tray app runs the daemon hidden; Open / Rebuild / Restart / Quit.
|
Live logs, streamed Tail any process without leaving the pane.
|
De-duplicated error log Repeats collapse into one entry with a count, and it survives restarts.
|
Dark by default, a light theme ships too.
One small file per repo lists the servers to run. Drop it in the repo root and click Add project:
Per-process: id, name, command, plus optional cwd, port, url, color, env,
autostart, waitForPort, links, companion. You can also add and edit processes right in the
GUI, and DevWebUI writes them back to the file. links groups servers that run as one unit
(starting or stopping one starts or stops them all); companion marks a process, like a shared
database, that starts alongside any other process in the project you start by hand.
Full field spec + a copy-paste prompt that writes the file for you → AI_GUIDE.md
The MCP server is a thin stdio client over the running daemon, so the GUI and your agents share one state. Start the daemon, then register:
{
"mcpServers": {
"devwebui": {
"command": "bun",
"args": ["server/src/mcp.ts"],
"cwd": "/absolute/path/to/devwebui",
"env": { "DEVWEBUI_URL": "http://localhost:4000" }
}
}
}31 tools cover projects, processes (start/stop/restart, enable/disable, all), logs and the error
log. Full list → AI_GUIDE.md
devwebui start | stop | status | list # boot / stop the daemon, inspect state
devwebui start-process | stop-process | restart-process <id|name>
devwebui start-all | stop-all
devwebui open <folder|file.devwebui> # add/drop a project; starts it if already added
devwebui mcp # the stdio MCP server for agentsA thin client over the same REST API the GUI and MCP use. Run devwebui --help for the rest;
DEVWEBUI_URL / DEVWEBUI_PORT point it at another daemon.
Bun + Hono daemon (HTTP + SSE) with a zero-dependency stdio MCP engine; Vue 3 + Vite, shadcn-vue on Reka UI, Tailwind v4 (zinc + indigo, light/dark). See the changelog for what's landed.
DevWebUI runs entirely on your machine: a single daemon on your localhost, open source under the MIT License. Core functionality needs no account and no cloud. Two optional extras:
- Settings sync: sign in with a LunarWerx Connections account to sync a small allowlist of
portable prefs + theme across machines. Off by default; only runs after you explicitly enable it
in Settings, and
@cnct/connect(the SDK it needs, which also ships the settings-store locker client) is an optional dependency that is installed but never imported or initialized unless you do. - Anonymous install ping: the update check (
GET /api/updates, cached 5 minutes, fired when the GUI loads or on the opt-in auto-update timer) is answered by an install counter atstudio.connections.icuthat proxies GitHub's own releases feed, and the request carries a random per-install id plus your app version and OS family (Windows / macOS / Linux) so we know roughly how many installs exist. From that request, the server also derives and stores a coarse location (country, region, city, timezone), your network's ASN, locale, and a truncated user agent, but never an IP address. No hostname, username, path, or account info is ever sent. The request also fails silently and never blocks anything if it can't reach the network. SetDEVWEBUI_NO_PING=1to turn it off (the olderDEVWEBUI_PULSE_DISABLE=1/CONNECTIONS_PULSE_DISABLE=1still work too); it's already off automatically in dev/test/CI runs.
Is DevWebUI free? Yes. DevWebUI is open source under the MIT License, and core functionality, starting, stopping, and monitoring your dev servers from the GUI or over MCP, needs no account and no cloud. The only optional extras are cross-machine settings sync and an anonymous install ping, both off unless you enable them.
Does it work offline?
Yes. The daemon and GUI run entirely on your local machine, and starting, stopping, and monitoring
dev servers works with no network connection at all. The only features that reach the internet are
optional: settings sync (off by default) and a lightweight install ping used for update checks,
which you can disable with DEVWEBUI_NO_PING=1.
Is my data sent anywhere?
No project data, commands, logs, or file paths leave your machine. If you enable it, settings sync
shares a small allowlist of prefs and theme via a LunarWerx Connections account. A separate
anonymous install ping (disable with DEVWEBUI_NO_PING=1) sends a random install id, app version,
and OS family, but never your IP address, hostname, username, or file paths.
What are the system requirements?
On Windows, download the prebuilt devwebui-windows-x64.exe and run it directly, no dependencies.
On any OS, run it from source with Bun installed: bun install then bun run dev starts the
daemon on port 4000 and the GUI on port 4010. macOS and Linux tray support is on the roadmap.
How is DevWebUI different from PM2's web UI, hotel, or exo? Hotel and exo are local dev-server GUIs that haven't shipped a release in a while, and PM2's web dashboard (PM2 Plus / PM2.io) is a paid product beyond its free tier. DevWebUI is actively maintained, free, and local-first, and pairs its GUI with a 31-tool MCP server so AI agents can drive the same daemon you click.
Can AI agents control DevWebUI directly?
Yes. DevWebUI ships a stdio MCP server (devwebui mcp, or server/src/mcp.ts) with 31 tools
covering projects, starting/stopping/restarting processes, enabling/disabling them, logs, and the
error log. It's a thin client over the same running daemon the GUI uses, so an agent and a human
see and change the same state.
How do I add a project?
Drop a .devwebui file (one per repo, listing its dev servers) in the repo root and click Add
project in the GUI, or run devwebui open <path> from the CLI. On first launch DevWebUI also
scans once for .devwebui files and recognizable dev-script projects automatically.
Can I use DevWebUI without the GUI?
Yes. The devwebui CLI is a thin client over the same REST API the GUI and MCP server use:
devwebui start / stop / status / list manage the daemon, and start-process /
stop-process / restart-process control individual servers by id or name.
On the roadmap: macOS / Linux tray, an in-GUI env editor, and multi-host.
Made by LunarWerx Studios, also behind RepoYeti, AgentHydra, and SageThumbs.



{ "name": "Connections", "processes": [ { "id": "main", "name": "Main SPA", "command": "bun run dev:main", "autostart": true }, { "id": "pay", "name": "Pay plane", "command": "bun run dev:pay", "port": 4020 } ] }