Skip to main content

Multi-harness AI coding tool config inspector — scan, visualize, and audit AI assistant ecosystems.

Project description

ai-dev-harness

PyPI version Python 3.10+ License: MIT

Multi-harness AI coding tool config inspector.

Scan, visualize, and audit every AI coding assistant installed on your machine — from one place.


Supported Tools

Tool Harness Config Paths Instruction File
Claude Code claude_code ~/.claude/, .claude/ CLAUDE.md
Cursor cursor ~/.cursor/, .cursor/ .cursorrules, .cursor/rules/*.md
Codex CLI codex ~/.codex/ AGENTS.md, codex.json
Windsurf windsurf ~/.windsurf/, .windsurf/ .windsurfrules, .windsurf/rules/*.md
GitHub Copilot copilot ~/.config/github-copilot/, .github/ .github/copilot-instructions.md

Each tool has its own harness — a self-contained module that knows how to detect the tool, discover its config files, parse them, and run health checks.

Installation

# Install from PyPI
pip install ai-dev-harness

Or install from source in development mode:

git clone https://github.com/boricles/ai-dev-harness.git
cd ai-dev-harness
pip install -e .

The package provides two CLI commands: liteharness (primary) and claude-lens (alias, kept for backwards compatibility).

Usage

CLI Report

# Scan all detected AI tools and print a report
liteharness report

# Scan a specific harness only
liteharness report --harness claude_code

# List all supported harnesses and detection status
liteharness harnesses

JSON Output

# Full JSON scan data
liteharness scan

# Filter to one harness
liteharness scan --harness cursor

# Pretty-printed
liteharness scan | python3 -m json.tool

Web Dashboard

# Launch interactive browser UI on localhost:8500
liteharness web

# Custom port
liteharness web --port 9000

Other Commands

# Compare two scan snapshots
liteharness diff snapshot-a.json snapshot-b.json

# Export a project's config as a portable bundle
liteharness export myproject

# Clean up stale sessions and orphaned data (interactive)
liteharness clean

# Print version
liteharness version

What It Detects

For each tool, ai-dev-harness discovers:

  • Global settings — permissions, preferences, API config
  • Instruction files — system prompts and rules (CLAUDE.md, .cursorrules, etc.)
  • Rules/agents — custom agent definitions, rule files
  • Sessions — session metadata (count, size, age — never reads content)
  • Plugins/extensions — installed plugins with capabilities
  • Memory — memory files and index integrity
  • Health issues — orphaned state, stale sessions, missing instructions, config drift

Health Checks

Each harness runs its own health checks:

Check Harnesses Severity
Missing instruction file All info
Orphaned project state Claude Code warning
Stale sessions (>30 days) Claude Code info
Memory index drift Claude Code warning
Disk usage >100-200 MB Claude Code, Cursor, Windsurf warning
Outdated config (>180 days) Copilot info

Architecture

liteharness/
  harnesses/
    __init__.py        # BaseHarness ABC, schema dataclasses, registry
    claude_code.py     # Claude Code harness
    cursor.py          # Cursor harness
    codex.py           # Codex CLI harness
    windsurf.py        # Windsurf harness
    copilot.py         # GitHub Copilot harness
  scanner.py           # Orchestrator — runs all harnesses, merges results
  parser.py            # Shared parsers (frontmatter, JSON, etc.)
  report.py            # CLI text report renderer
  server.py            # HTTP server + web dashboard
  web/index.html       # Single-file web dashboard (Tailwind + vanilla JS)
  export.py            # Project config export
  diff.py              # Scan snapshot comparison
  clean.py             # Cleanup stale data
  style.py             # Shared ANSI color helpers

Adding a New Harness

  1. Create liteharness/harnesses/newtool.py
  2. Subclass BaseHarness and implement detect(), scan(), health_checks()
  3. Decorate with @register_harness
  4. Add the module name to _ensure_harnesses_loaded() in harnesses/__init__.py

Design Principles

  • Zero mandatory dependencies — stdlib only for core scanner and CLI
  • Local-first — web server binds to 127.0.0.1 only
  • Privacy-safe — never reads conversation content from session files
  • Non-destructive — never modifies user files unless in explicit clean mode
  • Self-contained harnesses — each harness module is independent

Development

# Run all tests
python3 -m unittest discover tests/ -v

# Run a specific test file
python3 -m unittest tests.test_windsurf_harness -v

# Run as module
python3 -m liteharness version

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ai_dev_harness-0.2.1.tar.gz (47.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ai_dev_harness-0.2.1-py3-none-any.whl (50.5 kB view details)

Uploaded Python 3

File details

Details for the file ai_dev_harness-0.2.1.tar.gz.

File metadata

  • Download URL: ai_dev_harness-0.2.1.tar.gz
  • Upload date:
  • Size: 47.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for ai_dev_harness-0.2.1.tar.gz
Algorithm Hash digest
SHA256 a998be9abe7421ec9e083efecbdf6896d9e6b1d0ff2a8c98ffa9d4e27bb94eff
MD5 118a3d6933465a1dd4f7f6b32fb9497c
BLAKE2b-256 a9ea119fd99b3d82450421c99f0bd4edd589945ba89ee8745ebc39f347ee20bc

See more details on using hashes here.

File details

Details for the file ai_dev_harness-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: ai_dev_harness-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 50.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for ai_dev_harness-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 dc0b3d35cb0f9fe49c817cbc856ab058fbd9bf45794500131c49ca10ccb5bd8d
MD5 5e5cd8a6aecc26d321242a218f098fd2
BLAKE2b-256 53412c300964e468e3711adbfb495005ca2eaf0db12020886e405809f59c42f4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page