Skip to main content

AI-powered design review for KiCad schematics

Project description

██████╗ ███████╗██╗   ██╗██╗      ██████╗
██╔══██╗██╔════╝██║   ██║██║     ██╔═══██╗
██████╔╝█████╗  ██║   ██║██║     ██║   ██║
██╔══██╗██╔══╝  ╚██╗ ██╔╝██║     ██║   ██║
██║  ██║███████╗ ╚████╔╝ ███████╗╚██████╔╝
╚═╝  ╚═╝╚══════╝  ╚═══╝  ╚══════╝ ╚═════╝

PyPI Python License Tests

Review your hardware before it reviews your wallet.

AI-powered design review for KiCad schematics

What is Revlo?

Revlo is a command-line tool that catches electrical engineering mistakes in KiCad schematics before they become expensive PCB respins. Point it at a .kicad_sch file and get back actionable findings -- missing decoupling caps, wrong pull-up values, unterminated pins, power rail issues -- all verified against real datasheet specifications pulled automatically from the internet.

Features

  • KiCad 7/8/9 Parser -- Extracts components, nets, connectivity, power symbols, and properties from .kicad_sch files
  • Hierarchical Sub-sheet Support -- Recursively parses sub-sheets and resolves cross-sheet nets with instance-aware references
  • Datasheet Intelligence -- Automatically fetches component datasheets, extracts specs with AI, and caches results locally
  • 6-Domain EE Review -- Claude reviews your design across decoupling, pull-ups, unused pins, reset circuits, clock/oscillator, signal integrity, power rails, grounding, ESD, and thermal concerns
  • Confidence-Scored Findings -- Every finding includes a 0.0-1.0 confidence score so you can prioritize what matters
  • Interactive TUI Browser -- Browse and filter findings in a full-screen terminal UI with severity highlighting
  • Ask Mode -- Interactive chat with Claude Opus that has live access to your schematic via built-in tools
  • Branded CLI Output -- Progress bars, colour-coded severity cards, and a summary line at a glance
  • Review History -- Every review and conversation is saved automatically; re-open past reviews without re-running
  • JSON & Markdown Export -- Pipe structured output into your CI/CD pipeline or generate human-readable reports

Quick Start

Install

pip install revlo-cli

Or with uv:

uv tool install revlo-cli

First Review

export ANTHROPIC_API_KEY="sk-ant-..."
revlo review path/to/schematic.kicad_sch

That's it. Revlo parses the schematic, fetches datasheets, runs the AI review, and launches the interactive TUI.

Example Output

CLI Progress

██████╗ ███████╗██╗   ██╗██╗      ██████╗
██╔══██╗██╔════╝██║   ██║██║     ██╔═══██╗
██████╔╝█████╗  ██║   ██║██║     ██║   ██║
██╔══██╗██╔══╝  ╚██╗ ██╔╝██║     ██║   ██║
██║  ██║███████╗ ╚████╔╝ ███████╗╚██████╔╝
╚═╝  ╚═╝╚══════╝  ╚═══╝  ╚══════╝ ╚═════╝ v0.1
AI-powered design review for KiCad schematics

■ Parsing schematic...
■ Found 47 components, 38 nets
■ Fetching datasheets... ████████████████████⢕⢕⢕⢕⢕⢕⢕⢕⢕⢕ 12/18
  U1: STM32F103CBT6 (fetched)
  U2: AMS1117-3.3 (cached)
  U3: CH340G (manual PDF)
■ Datasheets: 2 cached, 1 manual, 9 fetched, 0 failed
■ Running review...
Found 3 errors, 5 warnings, 4 suggestions
■ Review saved to .revlo/reviews/2025-01-15T10-30-00.json
■ Launching review browser...

Example Findings

✗ ERROR U1: Missing decoupling capacitors on VDDA
  STM32F103CBT6 pin 13 (VDDA) requires a 1uF + 10nF decoupling capacitor
  pair per datasheet section 6.1.6, but no capacitors are connected to
  the VDDA net.
  Add a 1uF ceramic + 10nF ceramic capacitor between VDDA (pin 13)
  and GND, placed as close to the pin as possible.

▲ WARN  R3: I2C pull-up resistor value too high for 400kHz operation
  R3 (10kΩ) on the I2C_SCL net exceeds the recommended maximum of
  4.7kΩ for Fast-mode (400kHz) I2C. With a bus capacitance of ~50pF,
  the rise time will be approximately 500ns, violating the 300ns spec.
  Replace R3 with a 2.2kΩ or 4.7kΩ resistor to meet I2C Fast-mode
  rise time requirements.

◆ INFO  U1: Unused GPIO pins left floating
  U1 pins PA8, PA11, PA12 (GPIO) are unconnected and not configured
  as inputs with internal pull-ups in the schematic. Floating inputs
  increase power consumption and may cause spurious interrupts.
  Configure unused GPIOs as outputs driven low, or connect to GND/VCC
  via 10kΩ resistors. Alternatively, ensure firmware enables internal
  pull-ups on these pins.

Ask Mode

Press a in the TUI to enter Ask Mode -- an interactive chat with Claude Opus that has live access to your schematic. Ask complex EE questions and get answers grounded in your actual design.

Schematic Tools

Opus can actively explore your design using 4 built-in tools:

Tool What it does
lookup_component(ref) Get full component details: pins, nets, properties, datasheet specs
trace_net(net_name) See every component/pin connected to a net
find_unconnected_pins(ref?) Find floating pins, optionally filtered by component
list_power_rails() List all power nets with connection counts

Example

You: Is my reset circuit correct for U1?

Revlo: [looks up U1, traces the NRST net] The STM32F103 datasheet (p.47) requires a 100nF filter cap on NRST. Your circuit has C3 (100nF) to GND and R5 (10k) pull-up to VCC. RC time constant: 10k x 100nF = 1ms -- well above the 20us minimum.

Toggle extended thinking with t for deeper analysis on complex questions.

TUI Keyboard Shortcuts

Key Action
Up/Down or j/k Navigate findings
e Filter: errors only
w Filter: warnings only
s Filter: suggestions only
f Filter: show all
a Enter Ask Mode
t Toggle extended thinking (in Ask Mode)
m Export markdown report
o Open datasheet PDF
Esc Exit Ask Mode
q Quit

Review History

Revlo saves every review and Ask Mode conversation automatically.

# List past reviews for a schematic
revlo history board.kicad_sch

# Re-open last review in TUI (no re-run needed)
revlo open board.kicad_sch

# Load a specific past review
revlo history board.kicad_sch --load 2

How It Works

  .kicad_sch file
       │
       ▼
 ┌─────────────┐
 │   Parser    │  Extract components, nets, connectivity,
 │             │  hierarchical sub-sheets, power symbols
 └──────┬──────┘
        │
        ▼
 ┌─────────────┐
 │  Datasheet  │  Resolve MPN → fetch PDF → extract specs
 │  Pipeline   │  (normalize, cache, smart page selection)
 └──────┬──────┘
        │
        ▼
 ┌─────────────┐
 │  Chunker    │  Split into IC-context + power-rail chunks
 └──────┬──────┘
        │
        ▼
 ┌─────────────┐
 │  EE Review  │  Claude reviews each chunk against
 │  Engine     │  domain-specific checklists + datasheet specs
 └──────┬──────┘
        │
        ▼
 ┌─────────────┐
 │  Output     │  TUI browser, CLI cards, JSON, Markdown
 └──────┬──────┘
        │
        ▼
 ┌─────────────┐
 │  Ask Mode   │  Interactive chat with schematic tools
 │  (optional) │  Extended thinking for deep EE analysis
 └─────────────┘

Datasheet Intelligence

Revlo automatically fetches and analyzes component datasheets to make reviews more accurate. It resolves datasheet PDFs in this order:

  1. Schematic-embedded URL -- If your KiCad component has a Datasheet property, Revlo validates it with a HEAD request and downloads it directly.
  2. Mouser API -- Searches by manufacturer part number using the Mouser Search API.
  3. Farnell/Element14 API -- Falls back to the Farnell Product Search API.
  4. Manual PDF -- If all automated sources fail, you can drop a PDF into the datasheets/ directory next to your schematic.

API Keys (Optional)

Mouser and Farnell lookups require free API keys. Without them, Revlo still works using schematic-embedded URLs and manual PDFs.

# Get a free key at https://www.mouser.com/api-hub/
export MOUSER_API_KEY="your-mouser-api-key"

# Get a free key at https://partner.element14.com/
export FARNELL_API_KEY="your-farnell-api-key"

You can also add these to a .env file in the project root -- Revlo loads it automatically via python-dotenv.

Manual PDF Fallback

If a datasheet can't be fetched (e.g. vendor blocks programmatic downloads), place the PDF in the datasheets/ directory next to your schematic. Revlo matches PDFs by manufacturer part number:

my-project/
  board.kicad_sch
  datasheets/
    MSPM0G3507SPTR.pdf      # matched by MPN substring
    www.ti.com/              # or in vendor subdirectory
      mspm0g3507.pdf

Caching

Downloaded datasheets and extracted specs are cached in datasheets/cache.json with a 90-day TTL. Delete the cache file to force re-fetching.

CLI Reference

# Full review with interactive TUI (default)
revlo review board.kicad_sch

# CLI output only (no TUI)
revlo review board.kicad_sch --no-tui

# JSON output to stdout
revlo review board.kicad_sch --json

# Save markdown report to file
revlo review board.kicad_sch --output report.md

# Skip datasheet enrichment (faster, less accurate)
revlo review board.kicad_sch --skip-datasheet

# Filter low-confidence findings
revlo review board.kicad_sch --min-confidence 0.7

# Use Opus model for deeper review
revlo review board.kicad_sch --model opus

# Verbose output (show debug info)
revlo review board.kicad_sch --verbose

# Re-open last review without re-running
revlo open board.kicad_sch

# List past reviews for a schematic
revlo history board.kicad_sch

# Load a specific past review in the TUI
revlo history board.kicad_sch --load 2

Development

Setup

cd backend && uv sync

Run Tests

cd backend && uv run pytest tests/ -v

Lint

cd backend && uv run ruff check revlo/

Verify Install

cd backend && uv run python -c "from revlo.parser import parse_schematic; print('OK')"

License

Apache 2.0 -- see LICENSE for details.

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

revlo_cli-0.1.1.tar.gz (81.8 kB view details)

Uploaded Source

Built Distribution

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

revlo_cli-0.1.1-py3-none-any.whl (109.2 kB view details)

Uploaded Python 3

File details

Details for the file revlo_cli-0.1.1.tar.gz.

File metadata

  • Download URL: revlo_cli-0.1.1.tar.gz
  • Upload date:
  • Size: 81.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for revlo_cli-0.1.1.tar.gz
Algorithm Hash digest
SHA256 7d99bc896af2c7fcbce4321f376dafcd4b036e7ed891c1e3e4c92d55e3974ca5
MD5 a68bb180e518e08ca9e288635765676a
BLAKE2b-256 b27d205f47e0dfe44a60ff3960340dcf51a0a15f400a478e43e0d19423d5a4a6

See more details on using hashes here.

File details

Details for the file revlo_cli-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: revlo_cli-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 109.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for revlo_cli-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7d7cdee84bb1d420d038014fe3db576e0fe3b88bb6f88cf630bd822eb87a65a6
MD5 fe85777e57617c37d21eb1de3d85b1b3
BLAKE2b-256 59cc3bd230b9b78d43d8545e97547050ed12ebbe57177655b66f7ddcf4849d19

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