Local web UI for inspecting Docker containers and tailing logs from the selected container.
- Lists containers in separate
RunningandStoppedtabs - Filters both tabs by image name substring
- Streams a recent log backlog plus live updates for running containers
- Shows saved Docker logs for stopped containers, including containers opened after they already stopped
- Preserves the last viewed logs when the selected container stops
- Keeps the log pane scroll position unless you are already near the bottom
- Node.js 24+
- Docker running on the same machine
- Access to the local Docker socket at
/var/run/docker.sock
If docker ps fails with a permission error, fix Docker socket access for the user running the app before starting this project.
npm installRun both the backend and the Vite frontend:
npm run devThis starts:
- UI:
http://127.0.0.1:5173 - API:
http://127.0.0.1:3001
The Vite dev server proxies /api requests to the backend.
If you want to open the UI from another machine, bind both processes to all interfaces:
HOST=0.0.0.0 npm run dev:server
npm run dev:ui -- --host 0.0.0.0Then open:
http://YOUR_SERVER_IP:5173
Port 3001 is the backend API, not the UI.
To serve the built frontend from the Node backend on one port:
npm run build
HOST=0.0.0.0 npm startThen open:
http://YOUR_SERVER_IP:3001
npm run dev- start backend and frontend for local developmentnpm run dev:server- start only the Node backendnpm run dev:ui- start only the Vite frontendnpm run build- build the frontend intodist/npm start- run the backend and serve the built frontend if presentnpm test- run backend unit tests
- The backend currently talks to Docker through the hard-coded default socket path
/var/run/docker.sock. - The backend default bind host is
127.0.0.1, unless overridden withHOST. - The frontend filter matches image names, not container names, across both tabs.
- Removing a stopped container from the sidebar only clears it from the UI; it does not delete anything in Docker.