Local browser dashboard for Codex tasks and Claude Code sessions. Requires Node.js 22.16 or newer. The application has no external runtime dependencies and keeps its processing local.
Built by software architects, the team behind time cockpit, which connects AI assistants to time tracking via MCP.
From the project directory:
node bin/vibecoded-task-board.mjsThe browser opens http://127.0.0.1:4318. Press Ctrl+C to stop the server. Options include --port 4320, --no-open, --codex-home "C:\Path\.codex", --claude-home "C:\Path\.claude", and --help. You can also use the CODEX_HOME, CLAUDE_HOME, and VIBECODED_TASK_BOARD_PORT environment variables; CLAUDE_DESKTOP_DATA can point to the Claude Desktop data directory.
On Windows, Start.cmd or Start.ps1 starts the server in the background (Start.ps1 -Port 4320 for another port, -NoBrowser to skip opening the browser), and Stop.ps1 stops that instance (Stop.ps1 -Port 4320 for an instance on another port; each port has its own PID file). If the port is already used by another process, Start.ps1 reports that process instead of starting a second server.
To create and run a local package:
npm pack
npx --yes --offline --package ./vibecoded-task-board-<version>.tgz vibecoded-task-boardStart-Npx.ps1 selects the archive matching the version in package.json. Replace <version> with the version printed by npm pack. Running npx vibecoded-task-board without a local package path may download a package from the registry and is not the documented way to start this project.
The standard view groups tasks into STARRED, TODAY, THIS WEEK, OLDER, and DISMISSED. NEEDS YOU shows open questions, RUNNING shows active turns, and READY shows completed or unclear turns. The details view shows the status derived from the local session events.
- Click a row to open its details and visible results.
- ☆ pins a task; ✓ acknowledges the current result as read.
- ✕ moves a finished task to DISMISSED; ↩ restores it.
- ↗, REPLY, and “Open in Codex/Claude” open the session in its desktop app. Opening a session does not mark it as read.
- SETTINGS controls animation, the color palette, and the light/dark theme. Reduced-motion preferences are respected.
On the first visit, results from the previous 24 hours are considered new. A later result from the same session becomes unread again. Preferences and acknowledgements are stored in the local browser profile; different profiles, ports, and localhost/127.0.0.1 origins use separate storage.
The standard view receives changes through Server-Sent Events and checks for updates every two seconds. It falls back to five-second polling if the stream is unavailable. /?mock displays entirely fictional sample data. Fonts come from the local system; no web fonts are downloaded.
The earlier card-based view remains available at /classic with search, project, and date filters. Its default filter is “Today”, its refresh interval is five seconds, and its initial result lookback is seven days.
The server binds only to 127.0.0.1, checks the Host and Origin headers as well as cross-site requests, and exposes read-only GET endpoints. The Codex database is opened read-only; sessions are never modified. There is no telemetry and no automatically loaded external resource. Links in results and links to desktop apps open only after a user action.
The board reads local session files and selected project and desktop metadata. It may display titles, project and file paths, messages, answers, questions, and short tool targets. These values can contain personal data, company data, or credentials. Recognisable credential patterns in tool targets are hidden before truncation, but this is only best-effort filtering, not complete anonymisation or secret detection. Messages and results are not automatically redacted. Do not treat the application as a safe presentation mode for screen sharing.
Raw tool results and blocks marked as thinking or reasoning are not displayed as such. An agent can still repeat their contents in a visible answer. Result messages are limited to 64,000 characters; truncation is indicated.
The local API has no authentication. Local processes and, depending on the machine configuration, other users of the same machine may be able to access it. Use the board only on a trusted local machine; do not expose it through a tunnel or reverse proxy on a network.
Codex tasks are limited to supported local sources and non-archived entries. Claude JSONL files are read directly from the project directories; desktop sessions known to be archived are filtered out. If desktop metadata is missing, the archive state and desktop link may be unavailable. Cloud chats are not loaded.
Runtime status is derived from local events. After five minutes without new events, an unfinished turn may be shown as unclear. “Ready” does not mean that the entire project is complete. Internal data formats and the Claude Desktop route may change. The project has been practically tested on Windows.
node --experimental-sqlite --test test/*.test.mjs
npm pack --dry-runThe npm package contains only the runtime files, browser assets, README, and LICENSE listed in package.json. This project is released under the MIT License; see LICENSE.