Open source · macOS

A harbor for your
local dev servers.

Stop juggling a dozen terminal tabs. Register each Node project once, then start, stop and watch them all. You get live logs, automatic port detection, per-project Node versions and dependency-ordered startup for monorepos.

Free & AGPL-3.0 licensed Apple Silicon · macOS 13+ No account, fully local
Dashboard
5 apps
RUNNING
2 / 5
CPU
0.0%
MEMORY
111 MB
OPEN PORTS
3
web-storefrontRUNNING
1 task · 1 running
CPU 0.0%
52 MB
dev:3001dev:5173
api-sandboxEXITED
1 task
CPU 0.0%
0 MB
devoff
docs-portalRUNNING
2 tasks · 1 running
CPU 0.0%
59 MB
buildoffdev:4321
image-resizerEXITED
1 task
CPU 0.0%
0 MB
devoff
search-indexEXITED
1 task
CPU 0.0%
0 MB
devoff
How it works

Three steps to a calmer terminal.

No config files to hand-write. DevHarbor reads what your project already declares.

01
Add a project

Click Add project and pick a folder. No config files, no terminal. DevHarbor reads its package.json, finds your dev scripts, and detects the Node version from .nvmrc or engines.

✓ pnpm · node 20.11.1 · 4 scripts found
02
Define the run order

Add one or more tasks per app, like migrate → api → web. DevHarbor waits for each to be ready before starting the next.

migrate
api :4000
web :5173
03
Press start

Everything boots in order with real terminals under the hood. Live logs, clickable ports, CPU & memory, all in one window.

● running · 2 tasks · 112 MB
Features

Everything your dev servers need. Nothing they don't.

Real terminals under the hood, so logs look exactly like your shell, in a window built to manage many of them at once.

Searchable, color-accurate live logs

Real terminals under the hood, so every app's logs look exactly like your shell, with search, filtering and adjustable text size. Crashed app? The last lines stay pinned with one-click restart.

[vite] dev server running at http://localhost:5173
[api] listening on http://localhost:4000
GET /api/products 200 · 9ms
[vite] hmr update /src/components/ProductCard.tsx
Monorepo-aware startup

Define multiple tasks per app and DevHarbor starts them in order, waiting for each to be ready before the next.

Automatic Node versions

Reads .nvmrc & engines, then picks from your nvm / fnm / volta / asdf. No nvm use dance.

Layered env variables

Manage them global → per-app → per-task, with secret masking and .env import built in.

Live ports & resources

Auto-detects the port each app binds to with clickable links, plus live CPU & memory per app.

⌘K palette & folders

Group apps into folders, filter instantly and jump anywhere from the keyboard. Never touch the mouse.

Everything stays local

All data lives in a local database on your machine. No accounts, no cloud, no telemetry, ever.

MCP · for AI coding agents

Your coding agent runs servers here, not in a throwaway shell.

DevHarbor ships a built-in MCP server. Point Claude Code, Cursor or any MCP client at it and your agent starts, stops and inspects your real dev servers, instead of spawning npm run dev in a shell that dies when the chat ends.

Agent spins up its own
  • The process dies when the session ends
  • Output is buried in a background shell
  • Orphaned processes & colliding ports
Agent drives DevHarbor
  • Servers outlive the chat, so you keep them
  • Everything shows up in your window
  • Live logs, port detection & clean shutdown
agent session · devharbor mcp
agent get_overview()
5 apps · 2 running · ports :3001 :5173
agent add_app(~/code/acme-shop, workspaceTasks: true)
✓ registered · pnpm · 3 workspace tasks
agent start_app(acme-shop)
running · ready · web :5173 · api :3001
agent search_logs("ECONNREFUSED")
2 matches · payments-api · redis not up yet
agent set_readiness(api, http /health)
✓ probe set · next start waits for ready
Register & discover

Scan a folder or import a whole monorepo, then set the Node version, tags and env, all over MCP.

scan_folder · add_app · update_app
Start, stop, restart

Boot tasks in dependency order and wait for readiness, or control a single service.

start_app · stop_app · restart_app · start_task
Live logs & search

Read log tails or grep across every service to diagnose a crash. Known secrets stay redacted.

get_logs · search_logs
Ports & resources

See which service owns each port, plus pid, uptime, CPU and memory for every running task.

get_ports · list_running · get_overview
Env & Node versions

Set variables (secret values are write-only) and pick the Node from nvm / fnm / volta / asdf.

set_env_var · list_env_vars · list_node_versions
Monorepo orchestration

Order services with dependsOn, add readiness probes (port / log / http / delay), run migrations one-shot.

add_task · set_readiness · remove_task
Add it to your agent

DevHarbor serves MCP locally over HTTP. No account, no cloud, nothing leaves your machine. Destructive calls need confirm, and secret env values are write-only.

endpoint http://127.0.0.1:6872/mcp
Claude Code
claude mcp add --transport http \
  devharbor http://127.0.0.1:6872/mcp
Cursor / Claude Desktop (via mcp-remote)
{
  "devharbor": {
    "command": "npx",
    "args": ["mcp-remote", "http://127.0.0.1:6872/mcp"]
  }
}
Try it

A working window, right here.

This is the real interface. Watch the logs stream live, hit Stop to halt the server, or jump to the Dashboard from the sidebar.

web-storefrontRunning
~/Projects/web-storefront· npm
dev:3001dev:5173
LOGS· devLiveFilter
Copy SaveClear
T−T+
> web-storefront@0.0.0 dev
> concurrently -n web,api -c blue,green "npm:dev:web" "npm:dev:api"
[web]
[web] > web-storefront@0.0.0 dev:web
[web] > vite
[web]
[api]
[api] > web-storefront@0.0.0 dev:api
[api] > tsx watch --tsconfig server/tsconfig.json server/src/index.ts
[api]
[web]
[web] VITE v6.0.7 ready in 312 ms
[web]
[web] ➜ Local: http://localhost:5173/
[web] ➜ Network: use --host to expose
[api] [server] listening on http://localhost:3001

Tip: press Stop to halt web-storefront, or open Dashboard from the sidebar.

Open source

Free, AGPL-3.0 licensed, and built in the open.

No sign-up, nothing leaves your machine. Read the source, file an issue, or send a PR. DevHarbor is built by developers who got tired of the terminal-tab sprawl too.

AGPL-3.0
Licensed
0
Accounts required
0
Telemetry events
100%
Local & private
Electron· React· TypeScript
FAQ

The honest facts.

Everything we'd want to know before installing a new dev tool.

Today DevHarbor is macOS only, and built for Apple Silicon (M-series). Windows, Linux, and Intel Mac builds aren't available yet. They're on the roadmap, and being open source means they can land faster with help.
Yes. DevHarbor is free and AGPL-3.0 licensed. There's no paid tier, no account, and no telemetry. You can read every line of the source on GitHub.
Never. All projects, tasks, environment variables and logs live in a local database on your machine. DevHarbor makes no network calls about your projects. There's no cloud component at all.
Yes. DevHarbor runs a built-in MCP server locally (over HTTP), so agents like Claude Code or Cursor can register projects, start and stop servers in dependency order, read and search live logs, inspect ports and resources, and manage env vars and Node versions. They drive your real dev servers instead of spawning their own npm run dev that dies when the session ends. Secret env values are write-only through MCP, and destructive actions require explicit confirmation.
DevHarbor runs real terminals under the hood, so logs look identical to your shell. But it adds a UI for the things tmux can't: per-project Node versions, dependency-ordered startup, automatic port detection, layered env vars, and live CPU/memory per app.
No, it uses them. DevHarbor detects the Node version a project needs and picks the matching install from whichever version manager you already have. Nothing to reconfigure.
Electron, React and TypeScript. Contributions are welcome, and the codebase is structured to make adding new task runners and version managers straightforward.

Bring your dev servers into harbor.

Free, open source, and local. Download once and never count terminal tabs again.

macOS 13+ · Apple Silicon Notarized for macOS