dev3000 is a free, open source frameworks & platforms project written in TypeScript and released under MIT. It has 1,583 GitHub stars, 97 forks and 7 open issues, and was last pushed 9 hours ago. On this registry it ranks #84 of 105 tracked projects in Frameworks & Platforms, with 5 head-to-head comparisons available.

What is dev3000?

dev3000 (d3k) is an agent-first local web debugging runtime for developers who want their coding agent to own the dev server, browser, and evidence stream while debugging a web application.

What it is

dev3000, referred to as d3k, is a local runtime written in TypeScript that starts your development server, opens a monitored browser with a project-stable Chrome profile, and collects server logs, browser console messages and exceptions, network activity, user interactions, and automatic screenshots into a single timestamped feed. It ships with a terminal user interface for people who want a standalone dashboard, but the primary interface is the d3k skill, which teaches a coding agent to start d3k non-interactively, retain the background process, reuse the managed browser, and inspect the unified evidence.

The concrete problem it solves is fragmented debugging evidence: a developer debugging a checkout flow normally reasons from a disconnected terminal, a separate browser session, and scattered snapshots, unable to see which interaction preceded an error. d3k also replaces the unstable localhost URL pattern, giving every app a stable Portless HTTPS URL such as https://my-app.localhost so browser state and callbacks do not move when the underlying development port changes, and it owns the dev server for the session so npm run dev or bun run dev are never run alongside it.

Key capabilities

  • Captures one unified, timestamped timeline of development-server output, browser console messages and exceptions, network activity, interactions, and screenshots.
  • Provides a genuinely port-free HTTPS URL through d3k portless setup, which generates and trusts a local HTTPS CA and installs a root-owned startup service on port 443 behind which every d3k server registers.
  • Keeps a persistent Chrome profile under ~/.d3k/chrome-profile/ per project, so login state, cookies, and local storage survive across debugging sessions.
  • Exposes agent inspection commands including d3k status --json, d3k portless status --json, d3k errors --context, d3k logs -n 200, d3k logs --type browser, and d3k logs --type server.
  • Drives the exact browser d3k is monitoring through d3k agent-browser with commands such as snapshot -i, click @e2, fill @e3 "text", and open https://my-app.localhost guarded by --require-d3k-browser.
  • Distinguishes handoff mode ("Let me test") from autonomous mode ("Test this"), where the agent prepares a headed monitored browser for the developer or drives it itself.
  • Ships a d3k skill installable for coding agents so they learn to start the runtime non-interactively instead of launching a separate dev server or browser.

Who uses it and how

  • Developers working with a coding agent follow a fixed workflow: check d3k portless status --json and d3k status --json, start d3k -t in a retained background tool session, wait for the port-free HTTPS URL, then read d3k errors --context after reproducing a bug.
  • Teams debugging auth-sensitive flows such as OAuth rely on d3k to launch Chrome, since a separate Playwright, browser MCP, raw Chrome, or custom agent-browser --profile session is a different browser identity and can break sign-in.
  • Individual developers reproduce an issue manually in the handed-over headed browser while d3k records the interaction that preceded the error, then inspect the captured evidence.
  • Projects with changing development ports use Portless so callbacks and browser state stay fixed behind one canonical URL across edits and retests.

Getting started

With Node.js 24 or newer installed, run bun install -g dev3000 (or npm install -g dev3000), then install the skill with bunx skills add vercel-labs/dev3000 --skill d3k --agent '*' -g -y and complete d3k portless setup once for administrator authorization.

How it compares

d3k sits alongside tools such as Playwright and browser MCP sessions rather than substituting for them, because those launch a different browser identity that does not share the project-stable Chrome profile d3k maintains. Its distinguishing position is as the dev-server owner and unified evidence source for an agent session, with the optional TUI covering standalone terminal use.

When to use it — and when not

Portless requires one-time administrator authorization to trust a local HTTPS CA and install a root-owned service on port 443, so a self-hoster must be willing to grant elevated privileges, or fall back to --no-portless when direct localhost routing is specifically required. You should not pick it if you need to run npm run dev or bun run dev alongside it, since d3k is the dev-server owner for the session, and note the project currently carries 7 open issues.

project readme (upstream, from github) — read inline

d3k (dev3000)

d3k is an agent-first local web debugging runtime. It starts your dev server, opens a monitored browser with a project-stable Chrome profile, and gives your coding agent one timeline of server logs, browser errors, network activity, interactions, and screenshots.

Every app gets a stable Portless URL by default, so browser state and callbacks do not move when the underlying development port changes.

The primary interface is the d3k skill: tell your agent what you want, and let it own the runtime.

"Let me test this project with d3k."

"Debug the checkout flow with d3k."

"Run this app with d3k and watch for errors while I reproduce the bug."

The TUI is still available for people who want a standalone terminal dashboard, but it is not required for the agent workflow.

Install

Node.js 24 or newer is required.

Install the runtime globally:

bun install -g dev3000

npm also works:

npm install -g dev3000

Install the d3k skill for your coding agents:

bunx skills add vercel-labs/dev3000 --skill d3k --agent '*' -g -y

The skill teaches agents to start d3k non-interactively, retain the background process, reuse the managed browser, and inspect the unified evidence instead of launching a separate dev server or browser.

The Agent Workflow

When you ask to use d3k, the agent should:

  1. Run d3k portless status --json and complete d3k portless setup if required.
  2. Run d3k status --json and reuse only a ready Portless project session.
  3. Start d3k -t in a retained background tool session when needed.
  4. Wait for d3k to report a port-free HTTPS URL and managed browser.
  5. Either hand the headed browser to you or drive it with d3k agent-browser, depending on your request.
  6. Read d3k errors --context and the unified logs after reproduction.
  7. Keep the same runtime and project-stable Chrome profile alive across edits and retests.

That gives the user one stable URL, one browser, one evidence stream, and one dev server.

"Let me test" vs. "Test this"

"Let me test with d3k" means the agent prepares the headed monitored browser and hands control to you. It should wait while you reproduce the issue, then inspect what d3k captured.

"Test/debug this with d3k" means the agent can drive the managed browser and investigate autonomously.

Agent Commands

# Is this project's runtime ready?
d3k status --json

# Is canonical Portless HTTPS ready?
d3k portless status --json

# Start the runtime manually in agent-safe mode (non-TUI default)
d3k -t

# Inspect unified evidence
d3k errors --context
d3k logs -n 200
d3k logs --type browser
d3k logs --type server

# Drive the exact browser d3k is monitoring
d3k agent-browser snapshot -i
d3k agent-browser click @e2
d3k agent-browser fill @e3 "text"
d3k agent-browser --require-d3k-browser open https://my-app.localhost

Do not run npm run dev or bun run dev alongside d3k. d3k is the dev-server owner for the session.

Portless is required by default and only counts as ready when it provides a genuinely port-free URL such as https://my-app.localhost. d3k portless setup performs one-time administrator authorization to generate/trust the local HTTPS CA and install a root-owned startup service on port 443. After setup, every d3k server registers behind that proxy and the managed browser opens the Portless URL. d3k fails before starting the app when canonical Portless is unavailable; use --no-portless only when direct localhost routing is specifically required.

Why the Managed Browser Matters

Each project gets a persistent Chrome profile under ~/.d3k//chrome-profile/. Login state, cookies, and local storage survive across debugging sessions.

d3k also connects browser activity to server output, so an agent can see the interaction that preceded an error instead of reasoning from disconnected terminal and browser snapshots.

For OAuth and other auth-sensitive flows, let d3k launch Chrome. A separate Playwright, browser MCP, raw Chrome, or custom agent-browser --profile session is a different browser identity and can break sign-in flows.

What d3k Captures

  • Development-server output
  • Browser console messages and exceptions
  • Network requests and responses
  • User interactions
  • Navigation and error screenshots
  • Chrome DevTools Protocol events
  • A session manifest that agents can discover with d3k status --json

Artifacts are stored per project:

Artifact Location
Active session ~/.d3k//session.json
Consolidated log ~/.d3k//d3k.log or logs/
Screenshots ~/.d3k//screenshots/
Chrome profile ~/.d3k//chrome-profile/
Crash log ~/.d3k/crash.log

Standalone TUI

Run d3k directly when you want the interactive terminal experience:

d3k

You can also launch an agent beside the TUI in tmux:

d3k --with-agent claude
d3k --with-agent codex
d3k --with-agent opencode

The split-screen workflow requires tmux. The agent-first background workflow does not.

Runtime Options

d3k --help
Option Purpose
-p, --port Override the detected dev-server port
-s, --script Override the detected package script
-c, --command Run a custom dev-server command
--app-url Open a specific URL in the managed browser
--profile-dir Override the project Chrome profile
--no-portless Disable the default stable Portless URL
--headless Run Chrome headlessly for CI
--servers-only Intentionally disable browser monitoring
--tui Enable the interactive dashboard (off by default)
--no-agent Skip the standalone agent-selection prompt
-t, --tail Stream the consolidated log
--debug Print verbose runtime diagnostics

Prefer auto-detection. Use overrides only when the project has an unusual dev command, port, or target URL.

Diagnostic Commands

d3k errors
d3k errors --context
d3k errors --all

d3k logs
d3k logs --type browser
d3k logs --type server
d3k logs --json

d3k fix
d3k fix --focus build

d3k crawl
d3k crawl --depth all

Supported Projects

d3k detects common web projects, including:

  • Next.js, Vite, React, Vue, Svelte, and Astro
  • Django, Flask, and FastAPI
  • Rails
  • Custom servers supplied through --command

Development

Use d3k itself as the local runtime for this repository:

d3k -t

After code changes:

bun run lint
bun run typecheck

For CLI or TUI changes under src/:

bun run canary

License

MIT

Frequently asked questions

Is dev3000 free to use?

dev3000 is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does dev3000 do?

Captures your web app's complete development timeline - server logs, browser events, console messages, network requests, and automatic screenshots - in a unifie

What is dev3000 written in?

dev3000 is primarily written in TypeScript. Its source is publicly available at https://github.com/vercel-labs/dev3000, and it has 1,583 GitHub stars.