Skip to main content

Features

Dashboard

Live vs History Tabs

The dashboard has two main views:

  • Live: Shows the 50 most recent errors in real-time
  • History: Searchable archive of up to 10,000 investigations

Switch between tabs using the tab buttons or keyboard shortcuts (L for Live, H for History).

Error Timeline Graph

The timeline visualization shows error frequency over time:

Error Timeline

Graph Types:

  • Stream: Flowing stacked area chart (default)
  • Area: Traditional stacked area chart
  • Bar: Grouped bar chart

Series:

  • Pending (red): Errors awaiting investigation
  • Resolved (green): Errors marked as resolved
  • With Fix (blue): Errors with a suggested fix

Click the legend items to show/hide series.

Search and Filters

Error List

Search Box:

  • Search by error message, ID, or investigation summary
  • Press / to focus the search box

Filters:

FilterOptions
StatusAll, Pending, Investigated, Resolved
TypeAll Types, or specific error types
TimeAll Time, Last Hour, Last 24 Hours, Last 7 Days

Click Reset to clear all filters.

Investigation

Starting an Investigation

  1. Click on an error to expand it
  2. Optionally add context in the text area
  3. Click Investigate

Error Expanded

Adding Context:

The context field helps the LLM understand your specific situation. Examples:

  • "This happens only when user is not logged in"
  • "Check the UserService.authenticate() method"
  • "This started after we upgraded Spring Boot"

Investigation Process

When you click Investigate, the LLM:

  1. Analyzes the error message and stack trace
  2. Searches your codebase for relevant files
  3. Reads source files to understand the code
  4. Iterates up to 3 rounds to find the root cause
  5. Suggests a fix with explanation

Investigating

Investigation Results

Investigation Complete

Investigation Steps:

Shows the LLM's reasoning process:

Step TypeDescription
thinkingLLM's analysis and reasoning
find_filesFile pattern searches (e.g., *.java)
read_fileFiles read for context
search_codeCode searches for specific patterns
list_dirDirectory listings
check_existsFile existence checks

Fix Suggestion:

The fix includes:

  • Action: What to do (MODIFY, CREATE, DELETE)
  • File: The specific file to change
  • Reason: Why this fixes the issue
  • Code: The exact code to apply

Warning Messages:

If the fix might be incomplete, you'll see a warning like:

"WARNING: This fix may be incomplete. Original file has 13 lines, but suggested fix has 1 lines."

This helps you know when to review the fix carefully before applying.

Reinvestigation

If the first investigation didn't find the right fix, click Reinvestigate:

  • The LLM explicitly avoids the same files it already checked
  • It looks for alternative causes
  • It tries a different approach

OWL Prompt

Click OWL Prompt to see the exact prompt sent to the LLM. This is useful for:

  • Understanding what context the LLM received
  • Debugging investigation issues
  • Learning how the system works

Feedback System

Rate investigation accuracy to track quality over time:

RatingWhen to Use
AccurateThe fix correctly solved the problem
PartiallyThe fix was on the right track but incomplete
InaccurateThe fix was wrong or irrelevant

Feedback is stored and can help improve future investigations.

Webhook Alerts

Send error notifications to Slack, Discord, or any webhook endpoint.

Configuration

In ~/.owl-watch/config.json:

{
"alerting": {
"webhook": "https://hooks.slack.com/services/YOUR/WEBHOOK/URL",
"severities": ["critical", "high"],
"cooldown": 300
}
}

Options

OptionDescription
webhookThe webhook URL to POST to
severitiesWhich severity levels trigger alerts
cooldownSeconds between alerts for the same error type

Payload Format

Alerts are sent as JSON POST requests:

{
"error": "NullPointerException at UserService.java:42",
"timestamp": "2024-02-11T21:00:00Z",
"severity": "high",
"investigation": {
"summary": "Missing null check in getUserById",
"fix": "Add null check before accessing user object"
}
}

Project Profiles

Profiles help the LLM understand your project structure.

Creating a Profile

owl-watch study ./my-project

What Profiles Detect

DetectedExamples
Project typemaven, gradle, npm, python, go, rust
Frameworkspring-boot, django, flask, express, react
Source directoriessrc/main/java, src, lib
Config directoriessrc/main/resources, config
Test directoriessrc/test, tests, tests

Viewing Profiles

owl-watch study --status

Shows all profiled projects with their detected types and frameworks.

Profile Storage

Profiles are stored as JSON in ~/.owl-watch/profiles/<name>.json.

Rate Limiting

The dashboard includes built-in rate limiting:

  • 60 requests per minute per client IP
  • 3 concurrent investigations maximum

This prevents accidental overload of the Ollama service.

Keyboard Shortcuts

KeyAction
LSwitch to Live tab
HSwitch to History tab
RRefresh data
/Focus search box
EscClose expanded error

Next Steps