Preparing your workspace...

assistant-chat.tsx2.5k
utils.ts850
button.tsx720
Quick Actions
codmir
Pricing
Observability

Your app's dashcam.
Powered by AI.

Overseer silently records a 15-second rolling buffer in the browser. When an error happens, it saves the clip, creates an incident, and dispatches an AI agent to investigate — automatically.

Zero network cost until something breaks. No sessions stored on your servers. Just a tiny client-side DVR that only phones home when it matters.

Get StartedSee How It WorksDocumentation
15s DVR ReplayAuto Error CaptureAI InvestigationZero Bandwidth Until ErrorPrivacy-FirstExtension Offload
<10KB
SDK gzipped
15s
rolling DVR buffer
0 bytes
sent until error
<80ms
to flush a clip

How It Works

Think of it like a dashcam. Always recording, never uploading — until the moment it matters.

1

Silent Recording

A 15-second circular buffer runs in the browser. DOM snapshots, mouse movements, clicks, network requests, console logs — all captured locally in RAM.

2

Error Detected

Unhandled exception, promise rejection, or manual captureException() fires. The SDK flushes the 15-second buffer.

3

Clip Sent

Only now does data leave the browser. The replay clip, error context, breadcrumbs, and user info are POSTed as one incident payload.

4

AI Investigates

Overseer creates an incident, groups by fingerprint, and dispatches an AI agent to analyze the root cause, suggest files, and optionally auto-fix.

Why 15 seconds?

Most user actions leading to a crash happen within the last 10-15 seconds. A longer window wastes memory; a shorter one misses context. 15 seconds captures the full user journey to the error — the click, the navigation, the API call that failed — without storing minutes of idle browsing.

Chrome Extension

Zero performance impact with the extension

The Codmir browser extension moves all recording work into an isolated content script. Your app's main thread stays untouched — no MutationObservers, no DOM walking, no jank.

Without the extension, the SDK's built-in recorder handles everything as a fallback. Same 15-second DVR, same API. The extension just makes it faster.

Recording runs in isolated world (no main thread cost)
Auto-detects on codmir.app and localhost
Passwords and credit card fields auto-masked
Graceful fallback to in-process SDK if not installed

Architecture

Extension content script
↓ records DOM, mouse, network, console
CircularBuffer (15s, client RAM)
↓ on error: flush buffer
SDK captures clip + sends incident
↓ server stores in Redis + R2
AI agent dispatched to investigate

Overseer vs. Sentry

Same mission, fundamentally different approach

Sentry
Overseer
When it records
Always streams segments to server
Client RAM only — sends on error
Storage cost
Server-side (GB of replays)
Near-zero (15s clips only)
Bandwidth
Continuous upload
Zero until error
Replay window
Full session (minutes)
Rolling 15s DVR
Extension offload
No
Yes — isolated thread
AI investigation
No
Auto-dispatches agent
Error → Ticket
Manual triage
Auto-creates issues + tickets
Self-hostable
Paid plan
Always free

What Gets Recorded

Everything you need to reproduce a bug, nothing you don't

DOM Snapshots

Full HTML + incremental mutations via MutationObserver

Mouse & Clicks

Movement at 20fps, click targets with coordinates

Scroll & Input

Scroll position (throttled 100ms), form input values

Network

Fetch & XHR — method, URL, status code, duration

Console

log, warn, error with serialized arguments

Viewport

Window resize events and dimensions

Timestamps

Millisecond-precision timing on every event

Re-snapshots

Full DOM re-captured every 5s for safety

Privacy by Design

Overseer never records what it shouldn't. Sensitive data is handled automatically before it enters the buffer.

Passwords auto-masked

All input[type=password] fields replaced with ••••

Credit cards detected

CC patterns auto-redacted from input values

[data-private] masking

Add the attribute to any element to mask its content

[data-block-replay] exclusion

Entire element tree excluded from recording

Client-side only

Buffer lives in RAM — nothing sent until an error occurs

Self-hostable

Run on your infrastructure — data never leaves your network

AI-Powered Incident Resolution

Overseer doesn't just collect errors. It investigates them.

Fingerprint & Group

Errors are deduplicated by stack trace fingerprint. Recurring issues get their event count incremented, not duplicated.

Signal Ranking

AI ranks detected issues by severity, blast radius, and recency. Critical signals (score ≥ 80) trigger immediate alerts.

Agent Dispatch

For high-severity issues, an AI agent is auto-dispatched to analyze the codebase, identify root cause, and suggest or apply a fix.

Autofix Workflow

Critical issues can trigger an automated fix pipeline: analyze → branch → patch → PR → human review. You stay in control.

Issue → Ticket Flow

Every detected issue can become a ticket with one click. Context, replay, and suggested fix are carried over automatically.

Smart Notifications

Configurable alerts via Slack, email, or the Codmir companion. AI learns your dismiss patterns and adjusts intrusiveness.

AI Inner Thoughts

See exactly how the AI reasons about your incidents. Every investigation is transparent — you read its mind as it works.

No other tool shows you this. The reasoning chain is recorded, replayable, and searchable.

Investigating: TypeError in UserProfile.tsx
12.4s elapsed
Reading error context

Stack trace points to line 42 in UserProfile.tsx. The error is ‘Cannot read property 'email' of undefined’. This means the user object is null when the component renders.

Checking the replay clip

The 15s replay shows the user navigated from /settings to /profile. The network tab shows GET /api/user returned 200 but with an empty body. So the API returned success but no data. That’s the real bug — it’s not a frontend issue.

Searching codebase for /api/user handler

Found src/app/api/user/route.ts. The handler returns {} when the session token is expired instead of a 401. The frontend trusts the 200 status and tries to read user.email from an empty object. Two bugs: the API should return 401, and the frontend should handle empty responses.

Checking related incidents

Found 3 similar incidents in the last 48 hours, all after the auth token refactor in commit a3f8c2d. This is a regression. Confidence: 94%.

Generating fix

Two changes needed. 1) In route.ts, check session validity before returning — return 401 if expired. 2) In UserProfile.tsx, add a null guard. The API fix is the root cause; the frontend fix is defense in depth.

Investigation Complete
2 files
to fix
94%
confidence
12.4s
total time

Every thought is stored in the Reasoning Ledger — a tamper-evident chain of AI decisions you can audit, search, and replay at any time.

Everything You Need

Comprehensive observability built for modern development

Automatic Error Tracking

Capture unhandled errors, promise rejections, and console errors automatically with full stack traces and breadcrumbs.

Session Replay

Replay the 15-second clip before any error. See DOM changes, mouse movements, clicks, network calls, and console output.

Performance Metrics

Track Core Web Vitals (LCP, FID, CLS) and custom metrics out of the box. Correlate slowdowns with errors.

Lightweight SDK

Under 10KB gzipped. Tree-shakeable and optimized for minimal bundle impact. Works with any framework.

Privacy-First

Passwords and credit cards auto-masked. Block any element with data-block-replay. All data stays client-side until an error occurs.

Self-Hostable

Run Overseer on your own infrastructure. Redis for hot storage, R2/S3 for cold archives. Your data never leaves your network.

Installation

Get started in under 5 minutes with any framework

Choose your framework:

1Install the package

bash
npm install @codmir/sdk

2Initialize Overseer

typescript
// instrumentation-client.ts
import * as Codmir from '@codmir/sdk/nextjs';

Codmir.init({
  dsn: process.env.NEXT_PUBLIC_OVERSEER_DSN,
  environment: process.env.NODE_ENV,
  release: process.env.NEXT_PUBLIC_APP_VERSION,
  
  // Session replay sampling
  replaysSessionSampleRate: 0.1,
  replaysOnErrorSampleRate: 1.0,
});

3Capture errors

typescript
// In your error boundary or anywhere
import { captureException, captureMessage } from '@codmir/sdk/nextjs';

// Capture an error
try {
  await riskyOperation();
} catch (error) {
  captureException(error);
}

// Capture a message
captureMessage('User completed onboarding', 'info');

// Set user context
import { setUser } from '@codmir/sdk/nextjs';
setUser({ id: user.id, email: user.email });

Core API

Simple, familiar API inspired by the best in the industry

captureException()

Capture an error with optional context

captureException(error, {
  tags: { feature: 'checkout' },
  extra: { orderId: '123' }
});
captureMessage()

Log a message with severity level

captureMessage('Payment processed', 'info');
setUser()

Set user context for errors

setUser({
  id: user.id,
  email: user.email,
  username: user.name
});
addBreadcrumb()

Add navigation/action context

addBreadcrumb({
  category: 'navigation',
  message: 'Opened settings',
  level: 'info'
});
View Full API Reference

Simple Pricing

Free to start. Pay only when you scale.

Free
$0
forever
  • 5,000 errors/month
  • 15s session replay
  • Error grouping & fingerprinting
  • 7-day retention
  • 1 project
Get Started
Most Popular
Pro
$29/mo
per project
  • 100,000 errors/month
  • 15s session replay
  • AI investigation & autofix
  • 90-day retention
  • Unlimited projects
  • Slack & email alerts
Start Pro Trial
Enterprise
Custom
volume pricing
  • Unlimited errors
  • Self-hosted option
  • Custom retention
  • SSO & audit logs
  • Dedicated support
Contact Sales

Ready to get started?

Start capturing errors and understanding your users in minutes. Free for small projects, scales with your team.

Create Free AccountRead the Docs
codmir
Products
Desktop AppMobile AppIDE ExtensionAI AgentsOverseerVoice ModeCortex ProtocolHive MindGame Dev (Godat)PricingDownload
Solutions
AI Code AgentsCode ReviewError TrackingSelf-HealingDeploy TrackingAI Tracking SDKWorkflow AutomationTesting FrameworkTime TrackingVoice Control
Platform
ProjectsTickets & BoardsAgent MarketplaceIntegrationsTemplatesApp HubAdmin PanelAnalytics
Integrations
GitHubSlackDiscordVercelSentryRailwayLinearAll Integrations
Developers
DocumentationAPI ReferenceSDKCLIDeveloper PortalMarketplaceMCP ConnectorsWebhooksExamplesnpm Packages
Resources
BlogChangelogCommunityTutorialsGet StartedSupportStatusFeedback
Company
AboutCareersContact SalesKickstarterReferral Program
Legal
Terms of UsePrivacy PolicyEULATrademarkSecurity
Download on the App StoreGet it on Google Play

Codmir™ 2026. All rights reserved.

Free & open source SDK — Apache 2.0 License