
AI-Powered Performance Analysis
Capture V8 heap snapshots, Chrome runtime traces, and CPU profiles — hand them to a Deep Agent that finds bottlenecks and suggests code-level fixes.
npx zeitzeuge https://zeitzeuge.devFeatures
Page-Load Analysis
Launch Chrome, capture heap snapshots, performance traces, runtime traces, and all network assets in a single page load.
Vitest Integration
Drop-in Vitest plugin that profiles your test suite with V8 CPU profiling and analyzes your application code performance.
Deep Agent Investigation
A LangChain Deep Agent autonomously browses a virtual filesystem, reads source code, and correlates heap + trace + runtime data.
Code-Level Fixes
Get actionable suggestions — memory leaks, frame-blocking functions, listener leaks, render-blocking scripts — with line-number precision.
Runtime Trace Analysis
Captures every function call, event dispatch, layout, paint, and GC event on the main thread via the Chrome Tracing domain.
Zero Config
Set an API key, run npx zeitzeuge <url> — done. For Vitest, add one plugin line to your config.
How It Works
- 1
Launches Chrome via WebdriverIO with DevTools Protocol access
- 2
Captures heap snapshot + performance trace + runtime trace + network assets
- 3
Builds a VFS workspace with all captured data
- 4
Deep Agent explores the workspace and correlates findings
- 5
Markdown report written to disk with code-level fixes
What It Finds
🌐 Page Load
- •Memory leaks, detached DOM nodes, closure leaks
- •Render-blocking scripts & stylesheets
- •Long main-thread tasks (> 50ms)
- •Frame-blocking functions with exact source locations
- •Event listener leaks
- •GC pressure & layout thrashing
⚡ Vitest
- •Hot functions with high self time in your source code
- •Expensive algorithms (O(n²) loops, redundant computation)
- •Dependency bottlenecks
- •GC pressure from short-lived allocations
- •Event listener leaks
- •Blocking I/O in hot paths
Quick Start
CLI
# Set your API key
export OPENAI_API_KEY=sk-...
# Analyze any URL
npx zeitzeuge http://localhost:3000Vitest
// vitest.config.ts
import { defineConfig } from 'vitest/config';
import { zeitzeuge } from '@zeitzeuge/vitest';
export default defineConfig({
plugins: [zeitzeuge()],
});