Real-time browser UI for Python, JavaScript, TypeScript, and Rust debuggers — with 40+ MCP tools so Claude can step through your code, inspect live values, and annotate the UI.
Source viewer with syntax highlighting, breakpoint gutters, execution arrow, tabbed file navigation, and collapsible panels.
Expose your full debug session to Claude. The LLM can step code, inspect live values, evaluate expressions, and annotate the UI — all visible in real-time.
get_debug_contextEvery stop recorded with file, line, stack summary, and changed variables. Query with get_variable_history to trace when a value went wrong.
Add expressions that are evaluated automatically at every breakpoint and shown in a dedicated Watch panel.
LLM (or you) pin colored notes to source lines and record structured conclusions in the Findings panel — visible to both human and AI.
Expand nested objects, filter by name, edit values inline, and see diff highlighting on what changed at each stop.
Debug multiple programs simultaneously. Each session has its own panels, timeline, breakpoints, and call stack.
Break only when a condition expression is true. Set per-line conditions via the UI or via set_breakpoint MCP tool.
The UI reconnects automatically after a dropped WebSocket. The status bar shows connection state and last LLM query at a glance.
F5 continue, F10 step over, F11 step in, Shift+F11 step out. Full keyboard control without leaving your browser.
Toggle with Ctrl+D or the toolbar button. Preference is saved across sessions.
Inspect all threads by ID, switch frames, and auto-attach to child processes spawned during a debug session.
Add Debugium to your project's .mcp.json and Claude gains access to 40+ tools covering every aspect of a debug session.
console_line_countfrom_line)step_over, step_in, and step_out wait for the adapter to pause before returning — safe to chain back-to-back without sleeps.continue_execution returns console_line_count. Pass it as from_line to wait_for_output to only match output printed after the resume.
Always start with get_debug_context — paused location, locals, call stack, and a source window in a single call. Never guess from source alone.
Call get_annotations and get_findings at session start — avoids re-investigating lines you've already marked and re-stating conclusions you've already recorded.
Use evaluate to check expressions before stepping — cheaper than advancing line by line. Drill nested variables with get_variables recursively.
Chain step_over calls freely — each one waits for the adapter to pause. Follow with get_debug_context to re-orient.
Grab console_line_count from continue_execution, then pass it as from_line to wait_for_output — only output printed after the resume is matched.
Use get_variable_history("x") to see every value a variable held across all stops. Use get_timeline to see which variables changed at each one.
Pin findings with annotate and add_finding — the human sees them immediately in the UI, and you can read them back on the next invocation.
.mcp.json to your project