Visual, interactive Docker infrastructure debugger.
A browser-based 3D dependency graph of your Docker services with live health status, log streams, metrics, and container actions. Think of it as a mission control dashboard for your Docker Compose stacks.
/ search, F zoom-to-fit, R reset camera, Esc close, ? helpnpx dockscope up
Or install globally:
npm install -g dockscope
dockscope up
Requires Docker to be running. Opens a browser at http://localhost:4681.
dockscope up [options]
-p, --port <port> Server port (default: 4681, auto-increments if in use)
--no-open Don't open browser automatically
Docker Compose files are auto-detected (compose.yml, docker-compose.yml, etc.) and dependencies are read from container labels at runtime — no configuration needed.
Output the container graph as JSON (no UI):
dockscope scan
git clone https://github.com/ManuelR-T/dockscope.git
cd dockscope
npm install
npm run dev
This starts the server on port 4681 with Vite HMR embedded — single port, same as production.
| Command | Description |
|---|---|
npm run dev |
Start dev server (backend + frontend with HMR) |
npm run build |
Production build |
npm run start |
Run production build |
npm run lint |
ESLint check |
npm run lint:fix |
ESLint auto-fix |
npm run format |
Prettier format all files |
npm run format:check |
Prettier check |
npm run typecheck |
TypeScript type check |
| Layer | Technology |
|---|---|
| Frontend | Svelte 5 (runes), Three.js, 3d-force-graph, three-spritetext |
| Backend | Express, WebSocket (ws), dockerode |
| Build | Vite, TypeScript (ESNext) |
| CLI | Commander |
| Linting | ESLint, Prettier, commitlint (conventional commits) |
| CI/CD | GitHub Actions (lint, typecheck, build, auto-release to npm) |
Docker daemon
|
+--> dockerode (client.ts, metrics.ts, logs.ts, links.ts)
| |
| +--> Express REST API (routes.ts)
| +--> WebSocket broadcasts (server/index.ts)
| |
| +--> Svelte 5 store (docker.svelte.ts)
| |
| +--> GraphView.svelte (3d-force-graph + Three.js)
| +--> Sidebar (Info / Env / Logs tabs)
| +--> StatusBar (event stream + system info)
|
+--> Compose parser (compose.ts)
|
+--> depends_on + network link extraction
| Method | Path | Description |
|---|---|---|
| GET | /api/graph |
Full graph data (nodes + links) |
| GET | /api/containers/:id/stats |
CPU, memory, network I/O |
| GET | /api/containers/:id/logs |
Container logs |
| GET | /api/containers/:id/inspect |
Env, labels, mounts, config |
| GET | /api/containers/:id/history |
Metric history (sparkline data) |
| POST | /api/containers/:id/start|stop|restart |
Container actions |
| GET | /api/projects |
List compose projects |
| POST | /api/projects/:name/up|down|stop|start|restart |
Project actions |
| GET | /api/system |
Docker version, CPUs, memory |
| WS | /ws |
Real-time graph, stats, events, log streaming |
| Key | Action |
|---|---|
/ or Ctrl+K |
Focus search |
Escape |
Close panel / clear search |
F |
Zoom to fit |
R |
Reset camera |
? |
Toggle shortcut help |
This project uses Conventional Commits. All commit messages must follow the format:
type(scope): description
feat: add new feature
fix: fix a bug
docs: update documentation
refactor: code restructuring
chore: maintenance tasks
git clone https://github.com/<your-username>/dockscope.gitnpm installgit checkout -b feat/my-featurenpm run dev to start developmentnpm run lint && npm run format:check && npm run build to verifygit commit -m "feat: add my feature"git push origin feat/my-featuremain on the upstream repo