Repository navigation
Releases: aitakemyjob/sheetdiver
Release list
SheetDiver v0.1.1
What's new in 0.1.1
Added
- Schematic symbols on the block diagram. A part with a pin table in its datasheet is drawn as a symbol generated from it: every pin, with its number outside the body and its name inside, on a side by what it is (supplies on top, grounds and the thermal pad along the bottom, outputs on the right, inputs and everything else on the left), in pin-number order. Wires attach to the pin ends; unconnected pins are dimmed, and All pins / Connected pins only on the diagram hides them (but supplies and grounds) on a big microcontroller. Pins on one net next to each other (VDD 24, 36 and 48) share a wire with a jog to each. A block without a pin table is still a box of its connected pins. Two-terminals are drawn with their standard symbol (ANSI: zigzag resistor, plates, humps, triangle and bar…) hanging off their nets, with the right terminal at each end: as the connections name the pins, else by default for the shape (a diode conducts into ground, a Zener or TVS clamps the rail with its cathode on it, a polarised capacitor's + is on the net), the other way round when the far end is a rail. New block kinds for them: capacitor-polarised, schottky, zener, led, tvs, fuse, ferrite, crystal, battery, switch; and mosfet-n, mosfet-p, npn, pnp, drawn as transistors with their pins at G, D, S or B, C, E. A BOM entry's category maps to its symbol the same way, so a part categorised LED or crystal is drawn as one. The connections text for agents names each part's shape and each passive's symbol and terminals. A resistor or capacitor from the library shows its value under its name, from its role ("BOOT0 10k pull-down") or its part's description. (#74)
- Wired like a schematic. Inside a group, what stays wired at a pin is what a reader needs there: a crystal and its load capacitors, a series resistor, the pin's own pull-up or capacitor. A rail nothing in the group drives (3V3 in the MCU group, made in the Power group) isn't wired at all: each pin on it gets a power port with its name, and its decoupling capacitors stand in a row beside the part under the rail's name. A signal reaching three parts, or two parts more than a column apart, is a net label at each pin instead of a wire round everything between. Switches, buttons, LEDs and batteries stand aside under their net's name. Passives sit beside the pin they feed, in pin order, and the layout keeps every node level with what it's wired to, so the drawing reads left to right instead of down a tangle. (#74)
- Functional groups on the block diagram: put parts in groups (Power, MCU, Sensors) in the Connections tab, or have your agent do it. Each group is drawn in its own frame with its description and notes. Wires stay inside a group; a net that also runs in another group ends in a stub with its name, so a rail shared by the whole board no longer draws wires across it. A board without groups is drawn as before; the report's Mermaid chart shows each group as a subgraph. (#72)
- Passives drawn by the part they support: say which part a passive supports (a decoupling capacitor and its IC), and it hangs by that part's pin and is drawn in that part's group. Alike passives on one rail are only merged when they serve the same part, so C4 and C5 for two ICs on 3V3 no longer clump together at the regulator. Left unset, its support is guessed: the IC on its nets (over a connector or module), and of several, the one it feeds rather than the one driving the net (a bulk capacitor between an eFuse and a regulator goes by the regulator's VIN); a protection diode goes by its connector. The app shows a guess as "auto (U2)", agents as "(supports U2, guessed)", and confirms each change. (#71)
- Click a net's name to see what's on it. On the block diagram, a click on a net's name (on its wire, its stub or a pull-up's flag) marks the net's wires and junctions in the accent colour over a soft band and outlines the parts and passives on it, while everything else fades back to a third, still readable; clicking the name again, Escape, or a click away (the background, or a part without moving it) lets go.
- Agents can see the block diagram.
get_diagram_imagereturns a PNG of a project's block diagram as the app draws it, whole or one group's frame drawn larger, made by the app from what it shows (the Block diagram must be open;show: trueopens it). The app also checks each drawing for what looks wrong and reports it:get_connectionslists, under "Layout problems", a wire that leaves a pin and loops round its part, a wire through a part, parts on top of each other and wires of two nets crossing, by group. - Agents place parts by column and row.
assigntakes acolumnandrowfor a part or passive: its place in its group's grid of parts, from 0 at the left and the top. The layout keeps it there where the wiring allows, using ELK's interactive layering: a part can't share a column with one it's wired to directly, nor go past it (a subgroup off a pin on a part's left stays left of the part rather than looping its wires round it). The app reports where it drew each part, andget_connectionsshows each group column by column, with each place asked for and whether it was kept ("drawn there", or where it went instead); after a change it says it hasn't been drawn yet. Pixelpositionsstay for what the app saves when a part is dragged. - A passive named into a subgroup is drawn once. One on a bottom pin (a regulator's VIN capacitor) was drawn in its subgroup and again under the pin.
- The block diagram sits on a 10 px grid. Every pin end, wire corner, passive end, ground symbol and frame corner is on it, so pins that face each other line up and their wire is straight, and parallel wires keep even spacing. A dragged part moves in grid steps and is saved on the grid. Symbol sizes are multiples of the grid (a pin every 30, passives 40 long), and a part across two pins (an inductor between LX1 and LX2) now has its ends level with them.
- Groups can stack. A group can be drawn below another, in that group's column (
belowinset_connections'groups, or the "below" picker on each group in the Connections tab): Clock under MCU, Debug under Power. Groups without one still go left to right in power-flow order; a column is as wide as its widest frame. A group set below one that doesn't exist, or that would close a loop, is reported and drawn in a column of its own, and removing a group puts those below it back in their own. The connections text says "[drawn below MCU]". - Delete a project from its page (the button next to Report) or with the new
delete_projecttool, by name only: its BOM, rails, connections, groups, calculations and notes go; the parts stay in the library. - Every passive is wired from what it's placed by: an IC pin, a connector pin, or the previous passive in a chain, on that pin's side of the part. A rail nothing in the group drives is still not wired between its parts, but each pin now wires its own capacitors (the wire named, a pin with nothing keeping its named stub) instead of leaving them under a flag; a TVS by its connector and a resistor by the output connector get their wire; switches, LEDs and batteries are wired like anything else. Which parts form a subgroup is now decided by the backend and carried on the diagram, so the connections text lists every subgroup the drawing shows, the automatic ones included ("3V3 at U2 (C4, C5)", "after L1 (C3)"), and those of parts in no group.
- Subgroups within a group: the parts hanging off one net (the VDD decoupling, a button and its pull-up, an LED and its resistor) are moved aside together and wired up as one unit in a faint frame inside their group, bus first, instead of each standing alone where it happened to land. Name a subgroup yourself (
clusterinset_connections, the Subgroup column in the Connections tab) to pull more parts into one, or to split them; the reply names each part's group, subgroup and support. (#73) - Passives reached only through another passive are drawn: the output capacitor after the inductor, an LED after its series resistor. Each chains off that passive on the net they share, in a subgroup of their own: the series part leads in from the pin's wire to a bus named after the net, with the rest hanging off it. The connections text says "C2 on VOUT after L1". (#73)
Changed
- One rule for what a pin is (
internal/pinrole), from its type column, then its name, then its description, shared by the connection checks, the pin tables, the symbols and extraction. Two consequences on existing boards: a pin namedINcounts as a supply, and one namedVOUTorOUTwithout a type counts as an output in the "two outputs on a net" check. (#74) - The block diagram is laid out by ELK (the Eclipse Layout Kernel, elkjs) instead of SheetDiver's own router, which found a new way to tangle on each new board. Wires are routed around every part, a net's branches merge into a bus with junctions, labels go where they fit, and a pin's order on its side follows where its wire goes. A net leaving a group is a short stub straight out of its pin, named; a net wired in the group is named on its wire. Dragging a part now tells the layout which order you want it in among the parts beside it (left to right stays with the flow, and the wires are routed again) rather than pinning it exactly where it was dropped. Auto layout still forgets the dragged positions.
- Windows:
sheetdiver-mcp.exeworks likesheetdiver mcp. It relays to the open app, or serves your library itself while the app is closed, instead of starting SheetDiver. Claude Desktop now starts a short-lived copy of each server to check its protocol version, and a copy that opened the app (or kept Claude waiting while it did) broke that check. The Windows extension's Start SheetDiver setting is gone. - One SheetDiver window at a time. Launching SheetDiver aga...
SheetDiver v0.1.1-rc.2
What's new in 0.1.1-rc.2
Changed
- Windows:
sheetdiver-mcp.exeworks likesheetdiver mcp. It relays to the open app, or serves your library itself while the app is closed, instead of starting SheetDiver. Claude Desktop now starts a short-lived copy of each server to check its protocol version, and a copy that opened the app (or kept Claude waiting while it did) broke that check. The Windows extension's Start SheetDiver setting is gone. - One SheetDiver window at a time. Launching SheetDiver again brings the open window forward instead of opening a second app that competes for the MCP port and the library. (Apps on different settings files,
SHEETDIVER_CONFIG, still run side by side.)
Fixed
- macOS/Linux: the Claude Desktop extension exited at once ("version negotiation failed", "server transport closed unexpectedly"). Its launcher handed SheetDiver its own stdio, which the Node that Claude Desktop runs extensions with may not pass on, so SheetDiver found its input closed and stopped without a word. The launcher now pipes the messages through itself, and reports on stderr (in Claude Desktop's server log) why SheetDiver stopped if it does. Save the extension again from the connect dialog and reinstall it.
- Claude Desktop couldn't start SheetDiver ("version negotiation failed"). Claude Desktop probes a server by sending a request and closing its input straight away, and
sheetdiver mcpstopped without answering. It now answers every request it has read before it stops, both when it relays to the app and when it serves the library itself.
Install
macOS / Linux: curl -fsSL https://raw.githubusercontent.com/aitakemyjob/sheetdiver/main/scripts/install.sh | sh
Windows: irm https://raw.githubusercontent.com/aitakemyjob/sheetdiver/main/scripts/install.ps1 | iex
| Platform | Download |
|---|---|
| macOS (Apple Silicon + Intel) | sheetdiver_darwin_universal.zip |
| Windows | sheetdiver_windows_amd64_installer.exe or sheetdiver_windows_amd64.zip |
| Claude Desktop extension (Windows) | sheetdiver_windows_amd64.mcpb for the installer. With the zip, save it from the app instead (Connect an agent › Claude Desktop), so it knows where SheetDiver is |
| Linux x64 | .deb, .rpm or .tar.gz (sheetdiver_linux_amd64.*) |
| Linux ARM64 | sheetdiver_linux_arm64.* |
Headless server (sheetdiver serve) |
sheetdiver-headless_<os>_<arch>.* |
Verify downloads against checksums.txt, and check that a file was built by this repository's release workflow with:
gh attestation verify <file> --repo aitakemyjob/sheetdiverThe SBOM (sheetdiver_v0.1.1-rc.2.spdx.json) lists every Go and npm dependency in this release.
What's Changed
Build, CI and packaging
- fix(mcp): pipe the extension's stdio, serve without launching, one app window by @aitakemyjob in #69
Full Changelog: v0.1.1-rc.1...v0.1.1-rc.2
SheetDiver v0.1.1-rc.1
What's new in 0.1.1-rc.1
Fixed
- Claude Desktop couldn't start SheetDiver ("version negotiation failed"). Claude Desktop probes a server by sending a request and closing its input straight away, and
sheetdiver mcpstopped without answering. It now answers every request it has read before it stops, both when it relays to the app and when it serves the library itself.
Install
macOS / Linux: curl -fsSL https://raw.githubusercontent.com/aitakemyjob/sheetdiver/main/scripts/install.sh | sh
Windows: irm https://raw.githubusercontent.com/aitakemyjob/sheetdiver/main/scripts/install.ps1 | iex
| Platform | Download |
|---|---|
| macOS (Apple Silicon + Intel) | sheetdiver_darwin_universal.zip |
| Windows | sheetdiver_windows_amd64_installer.exe or sheetdiver_windows_amd64.zip |
| Claude Desktop extension (Windows) | sheetdiver_windows_amd64.mcpb for the installer. With the zip, save it from the app instead (Connect an agent › Claude Desktop), so it knows where SheetDiver is |
| Linux x64 | .deb, .rpm or .tar.gz (sheetdiver_linux_amd64.*) |
| Linux ARM64 | sheetdiver_linux_arm64.* |
Headless server (sheetdiver serve) |
sheetdiver-headless_<os>_<arch>.* |
Verify downloads against checksums.txt, and check that a file was built by this repository's release workflow with:
gh attestation verify <file> --repo aitakemyjob/sheetdiverThe SBOM (sheetdiver_v0.1.1-rc.1.spdx.json) lists every Go and npm dependency in this release.
What's Changed
Other changes
- fix(mcp): answer pending requests before stopping on stdin EOF by @aitakemyjob in #67
Full Changelog: v0.1.0...v0.1.1-rc.1
SheetDiver v0.1.0
What's new in 0.1.0
The first release: a datasheet library for electronics design, shared with your AI agent over MCP.
Datasheets in, structured data out
- Import PDFs by drag-and-drop (files or folders), file picker, URL (product pages that link to the PDF too), part number (looked up at TI, ST, ADI/Maxim, onsemi, Nexperia and Diodes, then the parts catalogue) or
sheetdiver import. Several import in parallel, followed in an import queue with progress and retry. PDFs are read by PDFium compiled to WebAssembly: no cgo, no external tools, no filesystem access. - Part numbers that resolve: base parts, family patterns (
TPS56x200,STM32U545xx), orderable codes (TPS563200DDCR,TLV75733PDBVR,MCP1700T-3302E/TT,MAX77801EWP+T) and unlisted ordering codes by prefix (STM32U545VET6Q→STM32U545VE). - Extraction: the section tree (outline or headings, two-column reading order); every captioned figure cut out and classified (graph, schematic, waveform, block diagram, pinout, timing, layout, package) with axes from "Y vs X" captions; spec tables as min/typ/max parameters with conditions, section and a canonical key (
vin,iout,fsw,vref,ilim,iq,rdson,qg…); pin tables, per package; every table as an image, with irregular ones flagged for the agent to transcribe; recommended inductors and capacitors; the datasheet revision (TI, ST, ADI/Maxim, Microchip, Diodes, AOS styles). - Extraction knows the usual traps: names centred across condition rows, typ printed half a line off, ±% tolerances, current limits in normal operation vs start-up vs input, per-pin absolute-maximum rows, thresholds that aren't operating ranges, µ and Ω set in Symbol fonts, and output ratings stated only on the first page. A corpus of 19 real datasheets guards it (
make corpus && make test-corpus);sheetdiver inspectshows what it finds. - Chinese and small-vendor datasheets (TP4056, DW01A and the like): Chinese headings, spec and pin tables, uncaptioned figures and pins described in prose are extracted too.
- Offline translation: a part's text (sections, tables, parameters, figures) can be translated from Chinese to English inside the app, with an electronics glossary; non-English imports are translated automatically once it's set up. Translation runs locally (Mozilla's Bergamot engine); the model (about 55 MB, checked by SHA-256) is downloaded only when you ask, from Settings › Translation. Nothing is sent anywhere to translate.
- Section text reads as written: paragraphs, headings, lists, tables and figure references, instead of raw lines.
- Datasheet revisions: check one datasheet or the whole library for a newer revision, see which spec rows changed, and update in place. The same datasheet from another URL is recognised instead of duplicated. When the extractor improves, existing datasheets are re-extracted in the background; what you and your agent recorded is always kept.
Library
- SQLite with full-text search over parts, pages, sections, figures, parameters, pins, registers, tables, recommendations and notes. Every value records whether it came from the extractor, the agent or you; recorded values win and survive re-extraction.
- Part view: key parameters, editable parameter table, figure gallery and editor, pins, sections, registers, tables, notes, variants and alternatives. Page viewer with figure and table overlays, highlighted parameter regions and drag-to-select. The PDF opens in your viewer.
- Favorites and status (preferred, approved, avoid, NRND, EOL), used by filters, comparisons, alternatives and project checks.
- Compare by type: a component type's parts side by side on the parameters that matter for it, sorted and filtered with units ("VIN ≥ 24 V, IOUT ≥ 3 A"), every value linked to its page; CSV export.
- Alternatives: library parts that could replace a part, compared key by key in the direction that matters; drop-ins first.
- Delete from the library: a confirmation lists what goes: the datasheet with all its parts, what you and agents recorded for it, notes, and the projects that use the parts (kept there without a datasheet, or removed with them, your choice). Agents can't delete.
Parts catalogue (JLCPCB / LCSC)
- One click downloads the open jlcparts dataset (about 2.5 million parts, republished from JLCPCB three times a day; about 200 MB), searched offline with a reminder to refresh it.
- Browse by category, search by part number or specs, and filter on each category's own parameters (Drain to Source Voltage ≥ 30V, RDS(on) ≤ 10mΩ, Type = N-Channel; supply ranges compare as "accepts"), with stock, price, JLC basic/extended library and the parameters as sortable columns.
- Package filter (several at once: SOT-23, SOT-23-3…), text filters with several values, and = as well as ≥ and ≤ on numbers (Resistance = 10k matches 10.0kΩ, not 10.2kΩ; ranges match when they contain the value), with the category's common values suggested. Each filter's values follow the other filters, with counts, so after "VDS ≥ 30 V" the package list shows only packages that still have matching parts.
- Open a part at LCSC or JLCPCB from its details or its LCSC code.
- Tick parts to import their datasheets. Part-number lookups and BOM import fall back to its datasheet links.
Projects and design
- Projects for a board: BOM with designators, rails and currents; per-rail load including regulator input currents derived from their output loads; checks against every part's absolute-maximum and recommended limits, regulator ratings (a current limit is only a ceiling), discouraged parts and parts without a datasheet.
- Chargers draw the charge current you set (none set: no charging; a linear charger draws the larger of that and its load, a power-path charger both, up to its input limit). Parts in line on a rail (a load switch, a protection IC) count as loads, loops in the power tree are reported, rails can carry other loads, and each rail shows its ripple budget: how much ripple it can carry before a part on it leaves its recommended input range.
- Block diagram, pins and connections: each project has a block diagram drawn from its connection table: parts with their pins, wires labelled with their nets (a bus with junctions where a net joins several parts), passives with their values hanging off the pins and nets they serve, each ground connection to a small ground symbol, and pull-ups pointing to their rail. No wire crosses another net's wire, and nothing is drawn on one. Zoom, pan, drag parts and passives, export as SVG. A pin table per part lists every pin with what it's connected to. The connection table is checked against the parts' pin tables: pins that don't exist, ground or supply pins on the wrong net, and pins left open that must be connected (supply, ground, exposed pads, and pins the datasheet says mustn't float). One designator of a BOM line with several ("R1" of "R1,R2") can be connected on its own. Agents can draft it all (
set_connections). - BOM import from CSV/TSV (KiCad, Altium, JLCPCB, LCSC codes): parts found in the library or fetched by part number, with JLC availability.
- Design-review report as Markdown (Report button,
sheetdiver report). - Calculators: buck, boost, LDO, MOSFET gate drive, gate bias divider and resistor divider, with inputs filled from the datasheets (with page references) and project rails, and results saved to the project.
For AI agents
- A built-in MCP server (streamable HTTP on 127.0.0.1, or
sheetdiver mcpover stdio) with 46 tools: search and read the library, see figures, pages and tables as images, record parameters, figure descriptions, tables, pins, registers, recommendations and notes, import datasheets and BOMs, search the parts catalogue, find alternatives, manage projects, run calculators and export reports. Settings switch agents off, make them read-only or forbid imports; their changes are marked. - Follow agent: what the agent shows opens in front of you: parts, pages, figures, projects with the rail or BOM entry it means highlighted, parts compared side by side with the best and worst values marked and its pick starred, catalogue candidates, and calculators with its inputs. Its explanation sits beside them, with links that open parts, pages, figures and sections. It can also walk you through several steps (Alt+← / Alt+→).
- Connect an agent (the MCP pill) has the setup for Claude Code, Claude Desktop, Codex, Cursor, VS Code, Gemini CLI and Windsurf, and saves each one's config file. For Claude Desktop it saves an extension (
sheetdiver.mcpb; install it from Settings › Extensions › Advanced settings › Install Extension…). - On Windows a small console program,
sheetdiver-mcp.exe, is installed beside the app for Claude Desktop and other stdio clients; it starts SheetDiver when it's closed (an extension setting). Releases also have the extension assheetdiver_windows_amd64.mcpbfor installer installs.
Apps and packaging
- Desktop app for macOS (universal), Windows and Linux (x64 and ARM64; .deb, .rpm, .tar.gz), plus
sheetdiver serve(headless, the same UI in your browser) for every platform. Ten themes shared with CodeDiver. - Releases ship checksums, an SPDX SBOM, signed build provenance, and the third-party notices (
sheetdiver licenses).
[Unreleased]: v0.1.0...HEAD [0.1.0]: https://github.com/aitakemyjob/sheetdiver/releases/tag/v0.1.0
Install
macOS / Linux: curl -fsSL https://raw.githubusercontent.com/aitakemyjob/sheetdiver/main/scripts/install.sh | sh
Windows: irm https://raw.githubusercontent.com/aitakemyjob/sheetdiver/main/scripts/install.ps1 | iex
| Platform | Download |
|---|---|
| macOS (Apple Silicon + Intel) | sheetdiver_darwin_universal.zip |
| Windows | sheetdiver_windows_amd64_installer.exe or sheetdiver_windows_amd64.zip |
| Cla... |
SheetDiver v0.1.0-rc.9
What's new in 0.1.0-rc.9
The first release: a datasheet library for electronics design, shared with your AI agent over MCP.
Datasheets in, structured data out
- Import PDFs by drag-and-drop (files or folders), file picker, URL (product pages that link to the PDF too), part number (looked up at TI, ST, ADI/Maxim, onsemi, Nexperia and Diodes, then the parts catalogue) or
sheetdiver import. Several import in parallel, followed in an import queue with progress and retry. PDFs are read by PDFium compiled to WebAssembly: no cgo, no external tools, no filesystem access. - Part numbers that resolve: base parts, family patterns (
TPS56x200,STM32U545xx), orderable codes (TPS563200DDCR,TLV75733PDBVR,MCP1700T-3302E/TT,MAX77801EWP+T) and unlisted ordering codes by prefix (STM32U545VET6Q→STM32U545VE). - Extraction: the section tree (outline or headings, two-column reading order); every captioned figure cut out and classified (graph, schematic, waveform, block diagram, pinout, timing, layout, package) with axes from "Y vs X" captions; spec tables as min/typ/max parameters with conditions, section and a canonical key (
vin,iout,fsw,vref,ilim,iq,rdson,qg…); pin tables, per package; every table as an image, with irregular ones flagged for the agent to transcribe; recommended inductors and capacitors; the datasheet revision (TI, ST, ADI/Maxim, Microchip, Diodes, AOS styles). - Extraction knows the usual traps: names centred across condition rows, typ printed half a line off, ±% tolerances, current limits in normal operation vs start-up vs input, per-pin absolute-maximum rows, thresholds that aren't operating ranges, µ and Ω set in Symbol fonts, and output ratings stated only on the first page. A corpus of 19 real datasheets guards it (
make corpus && make test-corpus);sheetdiver inspectshows what it finds. - Chinese and small-vendor datasheets (TP4056, DW01A and the like): Chinese headings, spec and pin tables, uncaptioned figures and pins described in prose are extracted too.
- Offline translation: a part's text (sections, tables, parameters, figures) can be translated from Chinese to English inside the app, with an electronics glossary; non-English imports are translated automatically once it's set up. Translation runs locally (Mozilla's Bergamot engine); the model (about 55 MB, checked by SHA-256) is downloaded only when you ask, from Settings › Translation. Nothing is sent anywhere to translate.
- Section text reads as written: paragraphs, headings, lists, tables and figure references, instead of raw lines.
- Datasheet revisions: check one datasheet or the whole library for a newer revision, see which spec rows changed, and update in place. The same datasheet from another URL is recognised instead of duplicated. When the extractor improves, existing datasheets are re-extracted in the background; what you and your agent recorded is always kept.
Library
- SQLite with full-text search over parts, pages, sections, figures, parameters, pins, registers, tables, recommendations and notes. Every value records whether it came from the extractor, the agent or you; recorded values win and survive re-extraction.
- Part view: key parameters, editable parameter table, figure gallery and editor, pins, sections, registers, tables, notes, variants and alternatives. Page viewer with figure and table overlays, highlighted parameter regions and drag-to-select. The PDF opens in your viewer.
- Favorites and status (preferred, approved, avoid, NRND, EOL), used by filters, comparisons, alternatives and project checks.
- Compare by type: a component type's parts side by side on the parameters that matter for it, sorted and filtered with units ("VIN ≥ 24 V, IOUT ≥ 3 A"), every value linked to its page; CSV export.
- Alternatives: library parts that could replace a part, compared key by key in the direction that matters; drop-ins first.
- Delete from the library: a confirmation lists what goes: the datasheet with all its parts, what you and agents recorded for it, notes, and the projects that use the parts (kept there without a datasheet, or removed with them, your choice). Agents can't delete.
Parts catalogue (JLCPCB / LCSC)
- One click downloads the open jlcparts dataset (about 2.5 million parts, republished from JLCPCB three times a day; about 200 MB), searched offline with a reminder to refresh it.
- Browse by category, search by part number or specs, and filter on each category's own parameters (Drain to Source Voltage ≥ 30V, RDS(on) ≤ 10mΩ, Type = N-Channel; supply ranges compare as "accepts"), with stock, price, JLC basic/extended library and the parameters as sortable columns.
- Package filter (several at once: SOT-23, SOT-23-3…), text filters with several values, and = as well as ≥ and ≤ on numbers (Resistance = 10k matches 10.0kΩ, not 10.2kΩ; ranges match when they contain the value), with the category's common values suggested. Each filter's values follow the other filters, with counts, so after "VDS ≥ 30 V" the package list shows only packages that still have matching parts.
- Open a part at LCSC or JLCPCB from its details or its LCSC code.
- Tick parts to import their datasheets. Part-number lookups and BOM import fall back to its datasheet links.
Projects and design
- Projects for a board: BOM with designators, rails and currents; per-rail load including regulator input currents derived from their output loads; checks against every part's absolute-maximum and recommended limits, regulator ratings (a current limit is only a ceiling), discouraged parts and parts without a datasheet.
- Chargers draw the charge current you set (none set: no charging; a linear charger draws the larger of that and its load, a power-path charger both, up to its input limit). Parts in line on a rail (a load switch, a protection IC) count as loads, loops in the power tree are reported, rails can carry other loads, and each rail shows its ripple budget: how much ripple it can carry before a part on it leaves its recommended input range.
- Block diagram, pins and connections: each project has a block diagram drawn from its connection table: parts with their pins, wires labelled with their nets, passives with their values hanging off the pins and nets they serve; zoom, pan, drag parts, export as SVG. A pin table per part lists every pin with what it's connected to. The connection table is checked against the parts' pin tables (pins that don't exist, ground or supply pins on the wrong net, supply pins left open). Agents can draft it all (
set_connections). - BOM import from CSV/TSV (KiCad, Altium, JLCPCB, LCSC codes): parts found in the library or fetched by part number, with JLC availability.
- Design-review report as Markdown (Report button,
sheetdiver report). - Calculators: buck, boost, LDO, MOSFET gate drive, gate bias divider and resistor divider, with inputs filled from the datasheets (with page references) and project rails, and results saved to the project.
For AI agents
- A built-in MCP server (streamable HTTP on 127.0.0.1, or
sheetdiver mcpover stdio) with 46 tools: search and read the library, see figures, pages and tables as images, record parameters, figure descriptions, tables, pins, registers, recommendations and notes, import datasheets and BOMs, search the parts catalogue, find alternatives, manage projects, run calculators and export reports. Settings switch agents off, make them read-only or forbid imports; their changes are marked. - Follow agent: what the agent shows opens in front of you: parts, pages, figures, projects with the rail or BOM entry it means highlighted, parts compared side by side with the best and worst values marked and its pick starred, catalogue candidates, and calculators with its inputs. Its explanation sits beside them, with links that open parts, pages, figures and sections. It can also walk you through several steps (Alt+← / Alt+→).
- Connect an agent (the MCP pill) has the setup for Claude Code, Claude Desktop, Codex, Cursor, VS Code, Gemini CLI and Windsurf, and saves each one's config file. For Claude Desktop it saves an extension (
sheetdiver.mcpb; install it from Settings › Extensions › Advanced settings › Install Extension…). - On Windows a small console program,
sheetdiver-mcp.exe, is installed beside the app for Claude Desktop and other stdio clients; it starts SheetDiver when it's closed (an extension setting). Releases also have the extension assheetdiver_windows_amd64.mcpbfor installer installs.
Apps and packaging
- Desktop app for macOS (universal), Windows and Linux (x64 and ARM64; .deb, .rpm, .tar.gz), plus
sheetdiver serve(headless, the same UI in your browser) for every platform. Ten themes shared with CodeDiver. - Releases ship checksums, an SPDX SBOM, signed build provenance, and the third-party notices (
sheetdiver licenses).
[Unreleased]: v0.1.0...HEAD [0.1.0]: https://github.com/aitakemyjob/sheetdiver/releases/tag/v0.1.0
Install
macOS / Linux: curl -fsSL https://raw.githubusercontent.com/aitakemyjob/sheetdiver/main/scripts/install.sh | sh
Windows: irm https://raw.githubusercontent.com/aitakemyjob/sheetdiver/main/scripts/install.ps1 | iex
| Platform | Download |
|---|---|
| macOS (Apple Silicon + Intel) | sheetdiver_darwin_universal.zip |
| Windows | sheetdiver_windows_amd64_installer.exe or sheetdiver_windows_amd64.zip |
| Claude Desktop extension (Windows) | sheetdiver_windows_amd64.mcpb for the installer. With the zip, save it from the app instead (Connect an agent › Claude Desktop), so it knows where SheetDiver is |
| Linux x64 | .deb, .rpm or .tar.gz (sheetdiver_linux_amd64.*) |
| Linux ARM64 | sheetdiver_linux_arm64.* |
Headless server (sheetdiver serve) |
sheetdiver-headless_<os>_<arch>.* ... |
SheetDiver v0.1.0-rc.8
What's new in 0.1.0-rc.8
The first release: a datasheet library for electronics design, shared with your AI agent over MCP.
Datasheets in, structured data out
- Import PDFs by drag-and-drop (files or folders), file picker, URL (product pages that link to the PDF too), part number (looked up at TI, ST, ADI/Maxim, onsemi, Nexperia and Diodes, then the parts catalogue) or
sheetdiver import. Several import in parallel, followed in an import queue with progress and retry. PDFs are read by PDFium compiled to WebAssembly: no cgo, no external tools, no filesystem access. - Part numbers that resolve: base parts, family patterns (
TPS56x200,STM32U545xx), orderable codes (TPS563200DDCR,TLV75733PDBVR,MCP1700T-3302E/TT,MAX77801EWP+T) and unlisted ordering codes by prefix (STM32U545VET6Q→STM32U545VE). - Extraction: the section tree (outline or headings, two-column reading order); every captioned figure cut out and classified (graph, schematic, waveform, block diagram, pinout, timing, layout, package) with axes from "Y vs X" captions; spec tables as min/typ/max parameters with conditions, section and a canonical key (
vin,iout,fsw,vref,ilim,iq,rdson,qg…); pin tables, per package; every table as an image, with irregular ones flagged for the agent to transcribe; recommended inductors and capacitors; the datasheet revision (TI, ST, ADI/Maxim, Microchip, Diodes, AOS styles). - Extraction knows the usual traps: names centred across condition rows, typ printed half a line off, ±% tolerances, current limits in normal operation vs start-up vs input, per-pin absolute-maximum rows, thresholds that aren't operating ranges, µ and Ω set in Symbol fonts, and output ratings stated only on the first page. A corpus of 18 real datasheets guards it (
make corpus && make test-corpus);sheetdiver inspectshows what it finds. - Datasheet revisions: check one datasheet or the whole library for a newer revision, see which spec rows changed, and update in place. The same datasheet from another URL is recognised instead of duplicated. When the extractor improves, existing datasheets are re-extracted in the background; what you and your agent recorded is always kept.
Library
- SQLite with full-text search over parts, pages, sections, figures, parameters, pins, registers, tables, recommendations and notes. Every value records whether it came from the extractor, the agent or you; recorded values win and survive re-extraction.
- Part view: key parameters, editable parameter table, figure gallery and editor, pins, sections, registers, tables, notes, variants and alternatives. Page viewer with figure and table overlays, highlighted parameter regions and drag-to-select. The PDF opens in your viewer.
- Favorites and status (preferred, approved, avoid, NRND, EOL), used by filters, comparisons, alternatives and project checks.
- Compare by type: a component type's parts side by side on the parameters that matter for it, sorted and filtered with units ("VIN ≥ 24 V, IOUT ≥ 3 A"), every value linked to its page; CSV export.
- Alternatives: library parts that could replace a part, compared key by key in the direction that matters; drop-ins first.
Parts catalogue (JLCPCB / LCSC)
- One click downloads the open jlcparts dataset (about 2.5 million parts, republished from JLCPCB three times a day; about 200 MB), searched offline with a reminder to refresh it.
- Browse by category, search by part number or specs, and filter on each category's own parameters (Drain to Source Voltage ≥ 30V, RDS(on) ≤ 10mΩ, Type = N-Channel; supply ranges compare as "accepts"), with stock, price, JLC basic/extended library and the parameters as sortable columns.
- Tick parts to import their datasheets. Part-number lookups and BOM import fall back to its datasheet links.
Projects and design
- Projects for a board: BOM with designators, rails and currents; per-rail load including regulator input currents derived from their output loads; checks against every part's absolute-maximum and recommended limits, regulator ratings (a current limit is only a ceiling), discouraged parts and parts without a datasheet.
- BOM import from CSV/TSV (KiCad, Altium, JLCPCB, LCSC codes): parts found in the library or fetched by part number, with JLC availability.
- Design-review report as Markdown (Report button,
sheetdiver report). - Calculators: buck, boost, LDO, MOSFET gate drive, gate bias divider and resistor divider, with inputs filled from the datasheets (with page references) and project rails, and results saved to the project.
For AI agents
- A built-in MCP server (streamable HTTP on 127.0.0.1, or
sheetdiver mcpover stdio) with 43 tools: search and read the library, see figures, pages and tables as images, record parameters, figure descriptions, tables, pins, registers, recommendations and notes, import datasheets and BOMs, search the parts catalogue, find alternatives, manage projects, run calculators and export reports. Settings switch agents off, make them read-only or forbid imports; their changes are marked. - Follow agent: what the agent shows opens in front of you.
Apps and packaging
- Desktop app for macOS (universal), Windows and Linux (x64 and ARM64; .deb, .rpm, .tar.gz), plus
sheetdiver serve(headless, the same UI in your browser) for every platform. Ten themes shared with CodeDiver. - Releases ship checksums, an SPDX SBOM, signed build provenance, and the third-party notices (
sheetdiver licenses).
[Unreleased]: v0.1.0...HEAD [0.1.0]: https://github.com/aitakemyjob/sheetdiver/releases/tag/v0.1.0
Install
macOS / Linux: curl -fsSL https://raw.githubusercontent.com/aitakemyjob/sheetdiver/main/scripts/install.sh | sh
Windows: irm https://raw.githubusercontent.com/aitakemyjob/sheetdiver/main/scripts/install.ps1 | iex
| Platform | Download |
|---|---|
| macOS (Apple Silicon + Intel) | sheetdiver_darwin_universal.zip |
| Windows | sheetdiver_windows_amd64_installer.exe or sheetdiver_windows_amd64.zip |
| Claude Desktop extension (Windows) | sheetdiver_windows_amd64.mcpb for the installer. With the zip, save it from the app instead (Connect an agent › Claude Desktop), so it knows where SheetDiver is |
| Linux x64 | .deb, .rpm or .tar.gz (sheetdiver_linux_amd64.*) |
| Linux ARM64 | sheetdiver_linux_arm64.* |
Headless server (sheetdiver serve) |
sheetdiver-headless_<os>_<arch>.* |
Verify downloads against checksums.txt, and check that a file was built by this repository's release workflow with:
gh attestation verify <file> --repo aitakemyjob/sheetdiverThe SBOM (sheetdiver_v0.1.0-rc.8.spdx.json) lists every Go and npm dependency in this release.
What's Changed
Build, CI and packaging
- fix(windows): console MCP bridge for Claude Desktop and stdio clients by @aitakemyjob in #61
Full Changelog: v0.1.0-rc.7...v0.1.0-rc.8
SheetDiver v0.1.0-rc.11
What's new in 0.1.0-rc.11
The first release: a datasheet library for electronics design, shared with your AI agent over MCP.
Datasheets in, structured data out
- Import PDFs by drag-and-drop (files or folders), file picker, URL (product pages that link to the PDF too), part number (looked up at TI, ST, ADI/Maxim, onsemi, Nexperia and Diodes, then the parts catalogue) or
sheetdiver import. Several import in parallel, followed in an import queue with progress and retry. PDFs are read by PDFium compiled to WebAssembly: no cgo, no external tools, no filesystem access. - Part numbers that resolve: base parts, family patterns (
TPS56x200,STM32U545xx), orderable codes (TPS563200DDCR,TLV75733PDBVR,MCP1700T-3302E/TT,MAX77801EWP+T) and unlisted ordering codes by prefix (STM32U545VET6Q→STM32U545VE). - Extraction: the section tree (outline or headings, two-column reading order); every captioned figure cut out and classified (graph, schematic, waveform, block diagram, pinout, timing, layout, package) with axes from "Y vs X" captions; spec tables as min/typ/max parameters with conditions, section and a canonical key (
vin,iout,fsw,vref,ilim,iq,rdson,qg…); pin tables, per package; every table as an image, with irregular ones flagged for the agent to transcribe; recommended inductors and capacitors; the datasheet revision (TI, ST, ADI/Maxim, Microchip, Diodes, AOS styles). - Extraction knows the usual traps: names centred across condition rows, typ printed half a line off, ±% tolerances, current limits in normal operation vs start-up vs input, per-pin absolute-maximum rows, thresholds that aren't operating ranges, µ and Ω set in Symbol fonts, and output ratings stated only on the first page. A corpus of 19 real datasheets guards it (
make corpus && make test-corpus);sheetdiver inspectshows what it finds. - Chinese and small-vendor datasheets (TP4056, DW01A and the like): Chinese headings, spec and pin tables, uncaptioned figures and pins described in prose are extracted too.
- Offline translation: a part's text (sections, tables, parameters, figures) can be translated from Chinese to English inside the app, with an electronics glossary; non-English imports are translated automatically once it's set up. Translation runs locally (Mozilla's Bergamot engine); the model (about 55 MB, checked by SHA-256) is downloaded only when you ask, from Settings › Translation. Nothing is sent anywhere to translate.
- Section text reads as written: paragraphs, headings, lists, tables and figure references, instead of raw lines.
- Datasheet revisions: check one datasheet or the whole library for a newer revision, see which spec rows changed, and update in place. The same datasheet from another URL is recognised instead of duplicated. When the extractor improves, existing datasheets are re-extracted in the background; what you and your agent recorded is always kept.
Library
- SQLite with full-text search over parts, pages, sections, figures, parameters, pins, registers, tables, recommendations and notes. Every value records whether it came from the extractor, the agent or you; recorded values win and survive re-extraction.
- Part view: key parameters, editable parameter table, figure gallery and editor, pins, sections, registers, tables, notes, variants and alternatives. Page viewer with figure and table overlays, highlighted parameter regions and drag-to-select. The PDF opens in your viewer.
- Favorites and status (preferred, approved, avoid, NRND, EOL), used by filters, comparisons, alternatives and project checks.
- Compare by type: a component type's parts side by side on the parameters that matter for it, sorted and filtered with units ("VIN ≥ 24 V, IOUT ≥ 3 A"), every value linked to its page; CSV export.
- Alternatives: library parts that could replace a part, compared key by key in the direction that matters; drop-ins first.
- Delete from the library: a confirmation lists what goes: the datasheet with all its parts, what you and agents recorded for it, notes, and the projects that use the parts (kept there without a datasheet, or removed with them, your choice). Agents can't delete.
Parts catalogue (JLCPCB / LCSC)
- One click downloads the open jlcparts dataset (about 2.5 million parts, republished from JLCPCB three times a day; about 200 MB), searched offline with a reminder to refresh it.
- Browse by category, search by part number or specs, and filter on each category's own parameters (Drain to Source Voltage ≥ 30V, RDS(on) ≤ 10mΩ, Type = N-Channel; supply ranges compare as "accepts"), with stock, price, JLC basic/extended library and the parameters as sortable columns.
- Package filter (several at once: SOT-23, SOT-23-3…), text filters with several values, and = as well as ≥ and ≤ on numbers (Resistance = 10k matches 10.0kΩ, not 10.2kΩ; ranges match when they contain the value), with the category's common values suggested. Each filter's values follow the other filters, with counts, so after "VDS ≥ 30 V" the package list shows only packages that still have matching parts.
- Open a part at LCSC or JLCPCB from its details or its LCSC code.
- Tick parts to import their datasheets. Part-number lookups and BOM import fall back to its datasheet links.
Projects and design
- Projects for a board: BOM with designators, rails and currents; per-rail load including regulator input currents derived from their output loads; checks against every part's absolute-maximum and recommended limits, regulator ratings (a current limit is only a ceiling), discouraged parts and parts without a datasheet.
- Chargers draw the charge current you set (none set: no charging; a linear charger draws the larger of that and its load, a power-path charger both, up to its input limit). Parts in line on a rail (a load switch, a protection IC) count as loads, loops in the power tree are reported, rails can carry other loads, and each rail shows its ripple budget: how much ripple it can carry before a part on it leaves its recommended input range.
- Block diagram, pins and connections: each project has a block diagram drawn from its connection table: parts with their pins, wires labelled with their nets (a bus with junctions where a net joins several parts), passives with their values hanging off the pins and nets they serve, each ground connection to a small ground symbol, and pull-ups pointing to their rail. No wire crosses another net's wire, and nothing is drawn on one. Zoom, pan, drag parts and passives, export as SVG. A pin table per part lists every pin with what it's connected to. The connection table is checked against the parts' pin tables: pins that don't exist, ground or supply pins on the wrong net, and pins left open that must be connected (supply, ground, exposed pads, and pins the datasheet says mustn't float). One designator of a BOM line with several ("R1" of "R1,R2") can be connected on its own. Agents can draft it all (
set_connections). - BOM import from CSV/TSV (KiCad, Altium, JLCPCB, LCSC codes): parts found in the library or fetched by part number, with JLC availability.
- Design-review report as Markdown (Report button,
sheetdiver report). - Calculators: buck, boost, LDO, MOSFET gate drive, gate bias divider and resistor divider, with inputs filled from the datasheets (with page references) and project rails, and results saved to the project.
For AI agents
- A built-in MCP server (streamable HTTP on 127.0.0.1, or
sheetdiver mcpover stdio) with 46 tools: search and read the library, see figures, pages and tables as images, record parameters, figure descriptions, tables, pins, registers, recommendations and notes, import datasheets and BOMs, search the parts catalogue, find alternatives, manage projects, run calculators and export reports. Settings switch agents off, make them read-only or forbid imports; their changes are marked. - Follow agent: what the agent shows opens in front of you: parts, pages, figures, projects with the rail or BOM entry it means highlighted, parts compared side by side with the best and worst values marked and its pick starred, catalogue candidates, and calculators with its inputs. Its explanation sits beside them, with links that open parts, pages, figures and sections. It can also walk you through several steps (Alt+← / Alt+→).
- Connect an agent (the MCP pill) has the setup for Claude Code, Claude Desktop, Codex, Cursor, VS Code, Gemini CLI and Windsurf, and saves each one's config file. For Claude Desktop it saves an extension (
sheetdiver.mcpb; install it from Settings › Extensions › Advanced settings › Install Extension…). - On Windows a small console program,
sheetdiver-mcp.exe, is installed beside the app for Claude Desktop and other stdio clients; it starts SheetDiver when it's closed (an extension setting). Releases also have the extension assheetdiver_windows_amd64.mcpbfor installer installs.
Apps and packaging
- Desktop app for macOS (universal), Windows and Linux (x64 and ARM64; .deb, .rpm, .tar.gz), plus
sheetdiver serve(headless, the same UI in your browser) for every platform. Ten themes shared with CodeDiver. - Releases ship checksums, an SPDX SBOM, signed build provenance, and the third-party notices (
sheetdiver licenses).
[Unreleased]: v0.1.0...HEAD [0.1.0]: https://github.com/aitakemyjob/sheetdiver/releases/tag/v0.1.0
Install
macOS / Linux: curl -fsSL https://raw.githubusercontent.com/aitakemyjob/sheetdiver/main/scripts/install.sh | sh
Windows: irm https://raw.githubusercontent.com/aitakemyjob/sheetdiver/main/scripts/install.ps1 | iex
| Platform | Download |
|---|---|
| macOS (Apple Silicon + Intel) | sheetdiver_darwin_universal.zip |
| Windows | sheetdiver_windows_amd64_installer.exe or sheetdiver_windows_amd64.zip |
SheetDiver v0.1.0-rc.10
What's new in 0.1.0-rc.10
The first release: a datasheet library for electronics design, shared with your AI agent over MCP.
Datasheets in, structured data out
- Import PDFs by drag-and-drop (files or folders), file picker, URL (product pages that link to the PDF too), part number (looked up at TI, ST, ADI/Maxim, onsemi, Nexperia and Diodes, then the parts catalogue) or
sheetdiver import. Several import in parallel, followed in an import queue with progress and retry. PDFs are read by PDFium compiled to WebAssembly: no cgo, no external tools, no filesystem access. - Part numbers that resolve: base parts, family patterns (
TPS56x200,STM32U545xx), orderable codes (TPS563200DDCR,TLV75733PDBVR,MCP1700T-3302E/TT,MAX77801EWP+T) and unlisted ordering codes by prefix (STM32U545VET6Q→STM32U545VE). - Extraction: the section tree (outline or headings, two-column reading order); every captioned figure cut out and classified (graph, schematic, waveform, block diagram, pinout, timing, layout, package) with axes from "Y vs X" captions; spec tables as min/typ/max parameters with conditions, section and a canonical key (
vin,iout,fsw,vref,ilim,iq,rdson,qg…); pin tables, per package; every table as an image, with irregular ones flagged for the agent to transcribe; recommended inductors and capacitors; the datasheet revision (TI, ST, ADI/Maxim, Microchip, Diodes, AOS styles). - Extraction knows the usual traps: names centred across condition rows, typ printed half a line off, ±% tolerances, current limits in normal operation vs start-up vs input, per-pin absolute-maximum rows, thresholds that aren't operating ranges, µ and Ω set in Symbol fonts, and output ratings stated only on the first page. A corpus of 19 real datasheets guards it (
make corpus && make test-corpus);sheetdiver inspectshows what it finds. - Chinese and small-vendor datasheets (TP4056, DW01A and the like): Chinese headings, spec and pin tables, uncaptioned figures and pins described in prose are extracted too.
- Offline translation: a part's text (sections, tables, parameters, figures) can be translated from Chinese to English inside the app, with an electronics glossary; non-English imports are translated automatically once it's set up. Translation runs locally (Mozilla's Bergamot engine); the model (about 55 MB, checked by SHA-256) is downloaded only when you ask, from Settings › Translation. Nothing is sent anywhere to translate.
- Section text reads as written: paragraphs, headings, lists, tables and figure references, instead of raw lines.
- Datasheet revisions: check one datasheet or the whole library for a newer revision, see which spec rows changed, and update in place. The same datasheet from another URL is recognised instead of duplicated. When the extractor improves, existing datasheets are re-extracted in the background; what you and your agent recorded is always kept.
Library
- SQLite with full-text search over parts, pages, sections, figures, parameters, pins, registers, tables, recommendations and notes. Every value records whether it came from the extractor, the agent or you; recorded values win and survive re-extraction.
- Part view: key parameters, editable parameter table, figure gallery and editor, pins, sections, registers, tables, notes, variants and alternatives. Page viewer with figure and table overlays, highlighted parameter regions and drag-to-select. The PDF opens in your viewer.
- Favorites and status (preferred, approved, avoid, NRND, EOL), used by filters, comparisons, alternatives and project checks.
- Compare by type: a component type's parts side by side on the parameters that matter for it, sorted and filtered with units ("VIN ≥ 24 V, IOUT ≥ 3 A"), every value linked to its page; CSV export.
- Alternatives: library parts that could replace a part, compared key by key in the direction that matters; drop-ins first.
- Delete from the library: a confirmation lists what goes: the datasheet with all its parts, what you and agents recorded for it, notes, and the projects that use the parts (kept there without a datasheet, or removed with them, your choice). Agents can't delete.
Parts catalogue (JLCPCB / LCSC)
- One click downloads the open jlcparts dataset (about 2.5 million parts, republished from JLCPCB three times a day; about 200 MB), searched offline with a reminder to refresh it.
- Browse by category, search by part number or specs, and filter on each category's own parameters (Drain to Source Voltage ≥ 30V, RDS(on) ≤ 10mΩ, Type = N-Channel; supply ranges compare as "accepts"), with stock, price, JLC basic/extended library and the parameters as sortable columns.
- Package filter (several at once: SOT-23, SOT-23-3…), text filters with several values, and = as well as ≥ and ≤ on numbers (Resistance = 10k matches 10.0kΩ, not 10.2kΩ; ranges match when they contain the value), with the category's common values suggested. Each filter's values follow the other filters, with counts, so after "VDS ≥ 30 V" the package list shows only packages that still have matching parts.
- Open a part at LCSC or JLCPCB from its details or its LCSC code.
- Tick parts to import their datasheets. Part-number lookups and BOM import fall back to its datasheet links.
Projects and design
- Projects for a board: BOM with designators, rails and currents; per-rail load including regulator input currents derived from their output loads; checks against every part's absolute-maximum and recommended limits, regulator ratings (a current limit is only a ceiling), discouraged parts and parts without a datasheet.
- Chargers draw the charge current you set (none set: no charging; a linear charger draws the larger of that and its load, a power-path charger both, up to its input limit). Parts in line on a rail (a load switch, a protection IC) count as loads, loops in the power tree are reported, rails can carry other loads, and each rail shows its ripple budget: how much ripple it can carry before a part on it leaves its recommended input range.
- Block diagram, pins and connections: each project has a block diagram drawn from its connection table: parts with their pins, wires labelled with their nets, passives with their values hanging off the pins and nets they serve; zoom, pan, drag parts, export as SVG. A pin table per part lists every pin with what it's connected to. The connection table is checked against the parts' pin tables (pins that don't exist, ground or supply pins on the wrong net, supply pins left open). Agents can draft it all (
set_connections). - BOM import from CSV/TSV (KiCad, Altium, JLCPCB, LCSC codes): parts found in the library or fetched by part number, with JLC availability.
- Design-review report as Markdown (Report button,
sheetdiver report). - Calculators: buck, boost, LDO, MOSFET gate drive, gate bias divider and resistor divider, with inputs filled from the datasheets (with page references) and project rails, and results saved to the project.
For AI agents
- A built-in MCP server (streamable HTTP on 127.0.0.1, or
sheetdiver mcpover stdio) with 46 tools: search and read the library, see figures, pages and tables as images, record parameters, figure descriptions, tables, pins, registers, recommendations and notes, import datasheets and BOMs, search the parts catalogue, find alternatives, manage projects, run calculators and export reports. Settings switch agents off, make them read-only or forbid imports; their changes are marked. - Follow agent: what the agent shows opens in front of you: parts, pages, figures, projects with the rail or BOM entry it means highlighted, parts compared side by side with the best and worst values marked and its pick starred, catalogue candidates, and calculators with its inputs. Its explanation sits beside them, with links that open parts, pages, figures and sections. It can also walk you through several steps (Alt+← / Alt+→).
- Connect an agent (the MCP pill) has the setup for Claude Code, Claude Desktop, Codex, Cursor, VS Code, Gemini CLI and Windsurf, and saves each one's config file. For Claude Desktop it saves an extension (
sheetdiver.mcpb; install it from Settings › Extensions › Advanced settings › Install Extension…). - On Windows a small console program,
sheetdiver-mcp.exe, is installed beside the app for Claude Desktop and other stdio clients; it starts SheetDiver when it's closed (an extension setting). Releases also have the extension assheetdiver_windows_amd64.mcpbfor installer installs.
Apps and packaging
- Desktop app for macOS (universal), Windows and Linux (x64 and ARM64; .deb, .rpm, .tar.gz), plus
sheetdiver serve(headless, the same UI in your browser) for every platform. Ten themes shared with CodeDiver. - Releases ship checksums, an SPDX SBOM, signed build provenance, and the third-party notices (
sheetdiver licenses).
[Unreleased]: v0.1.0...HEAD [0.1.0]: https://github.com/aitakemyjob/sheetdiver/releases/tag/v0.1.0
Install
macOS / Linux: curl -fsSL https://raw.githubusercontent.com/aitakemyjob/sheetdiver/main/scripts/install.sh | sh
Windows: irm https://raw.githubusercontent.com/aitakemyjob/sheetdiver/main/scripts/install.ps1 | iex
| Platform | Download |
|---|---|
| macOS (Apple Silicon + Intel) | sheetdiver_darwin_universal.zip |
| Windows | sheetdiver_windows_amd64_installer.exe or sheetdiver_windows_amd64.zip |
| Claude Desktop extension (Windows) | sheetdiver_windows_amd64.mcpb for the installer. With the zip, save it from the app instead (Connect an agent › Claude Desktop), so it knows where SheetDiver is |
| Linux x64 | .deb, .rpm or .tar.gz (sheetdiver_linux_amd64.*) |
| Linux ARM64 | sheetdiver_linux_arm64.* |
Headless server (sheetdiver serve) |
sheetdiver-headless_<os>_<arch>.*... |
SheetDiver v0.1.0-rc.7
What's new in 0.1.0-rc.7
The first release: a datasheet library for electronics design, shared with your AI agent over MCP.
Datasheets in, structured data out
- Import PDFs by drag-and-drop (files or folders), file picker, URL (product pages that link to the PDF too), part number (looked up at TI, ST, ADI/Maxim, onsemi, Nexperia and Diodes, then the parts catalogue) or
sheetdiver import. Several import in parallel, followed in an import queue with progress and retry. PDFs are read by PDFium compiled to WebAssembly: no cgo, no external tools, no filesystem access. - Part numbers that resolve: base parts, family patterns (
TPS56x200,STM32U545xx), orderable codes (TPS563200DDCR,TLV75733PDBVR,MCP1700T-3302E/TT,MAX77801EWP+T) and unlisted ordering codes by prefix (STM32U545VET6Q→STM32U545VE). - Extraction: the section tree (outline or headings, two-column reading order); every captioned figure cut out and classified (graph, schematic, waveform, block diagram, pinout, timing, layout, package) with axes from "Y vs X" captions; spec tables as min/typ/max parameters with conditions, section and a canonical key (
vin,iout,fsw,vref,ilim,iq,rdson,qg…); pin tables, per package; every table as an image, with irregular ones flagged for the agent to transcribe; recommended inductors and capacitors; the datasheet revision (TI, ST, ADI/Maxim, Microchip, Diodes, AOS styles). - Extraction knows the usual traps: names centred across condition rows, typ printed half a line off, ±% tolerances, current limits in normal operation vs start-up vs input, per-pin absolute-maximum rows, thresholds that aren't operating ranges, µ and Ω set in Symbol fonts, and output ratings stated only on the first page. A corpus of 18 real datasheets guards it (
make corpus && make test-corpus);sheetdiver inspectshows what it finds. - Datasheet revisions: check one datasheet or the whole library for a newer revision, see which spec rows changed, and update in place. The same datasheet from another URL is recognised instead of duplicated. When the extractor improves, existing datasheets are re-extracted in the background; what you and your agent recorded is always kept.
Library
- SQLite with full-text search over parts, pages, sections, figures, parameters, pins, registers, tables, recommendations and notes. Every value records whether it came from the extractor, the agent or you; recorded values win and survive re-extraction.
- Part view: key parameters, editable parameter table, figure gallery and editor, pins, sections, registers, tables, notes, variants and alternatives. Page viewer with figure and table overlays, highlighted parameter regions and drag-to-select. The PDF opens in your viewer.
- Favorites and status (preferred, approved, avoid, NRND, EOL), used by filters, comparisons, alternatives and project checks.
- Compare by type: a component type's parts side by side on the parameters that matter for it, sorted and filtered with units ("VIN ≥ 24 V, IOUT ≥ 3 A"), every value linked to its page; CSV export.
- Alternatives: library parts that could replace a part, compared key by key in the direction that matters; drop-ins first.
Parts catalogue (JLCPCB / LCSC)
- One click downloads the open jlcparts dataset (about 2.5 million parts, republished from JLCPCB three times a day; about 200 MB), searched offline with a reminder to refresh it.
- Browse by category, search by part number or specs, and filter on each category's own parameters (Drain to Source Voltage ≥ 30V, RDS(on) ≤ 10mΩ, Type = N-Channel; supply ranges compare as "accepts"), with stock, price, JLC basic/extended library and the parameters as sortable columns.
- Tick parts to import their datasheets. Part-number lookups and BOM import fall back to its datasheet links.
Projects and design
- Projects for a board: BOM with designators, rails and currents; per-rail load including regulator input currents derived from their output loads; checks against every part's absolute-maximum and recommended limits, regulator ratings (a current limit is only a ceiling), discouraged parts and parts without a datasheet.
- BOM import from CSV/TSV (KiCad, Altium, JLCPCB, LCSC codes): parts found in the library or fetched by part number, with JLC availability.
- Design-review report as Markdown (Report button,
sheetdiver report). - Calculators: buck, boost, LDO, MOSFET gate drive, gate bias divider and resistor divider, with inputs filled from the datasheets (with page references) and project rails, and results saved to the project.
For AI agents
- A built-in MCP server (streamable HTTP on 127.0.0.1, or
sheetdiver mcpover stdio) with 43 tools: search and read the library, see figures, pages and tables as images, record parameters, figure descriptions, tables, pins, registers, recommendations and notes, import datasheets and BOMs, search the parts catalogue, find alternatives, manage projects, run calculators and export reports. Settings switch agents off, make them read-only or forbid imports; their changes are marked. - Follow agent: what the agent shows opens in front of you.
Apps and packaging
- Desktop app for macOS (universal), Windows and Linux (x64 and ARM64; .deb, .rpm, .tar.gz), plus
sheetdiver serve(headless, the same UI in your browser) for every platform. Ten themes shared with CodeDiver. - Releases ship checksums, an SPDX SBOM, signed build provenance, and the third-party notices (
sheetdiver licenses).
[Unreleased]: v0.1.0...HEAD [0.1.0]: https://github.com/aitakemyjob/sheetdiver/releases/tag/v0.1.0
Install
macOS / Linux: curl -fsSL https://raw.githubusercontent.com/aitakemyjob/sheetdiver/main/scripts/install.sh | sh
Windows: irm https://raw.githubusercontent.com/aitakemyjob/sheetdiver/main/scripts/install.ps1 | iex
| Platform | Download |
|---|---|
| macOS (Apple Silicon + Intel) | sheetdiver_darwin_universal.zip |
| Windows | sheetdiver_windows_amd64_installer.exe or sheetdiver_windows_amd64.zip |
| Linux x64 | .deb, .rpm or .tar.gz (sheetdiver_linux_amd64.*) |
| Linux ARM64 | sheetdiver_linux_arm64.* |
Headless server (sheetdiver serve) |
sheetdiver-headless_<os>_<arch>.* |
Verify downloads against checksums.txt, and check that a file was built by this repository's release workflow with:
gh attestation verify <file> --repo aitakemyjob/sheetdiverThe SBOM (sheetdiver_v0.1.0-rc.7.spdx.json) lists every Go and npm dependency in this release.
What's Changed
New features
- feat: Claude Desktop extension (.mcpb) and config files for other agents by @aitakemyjob in #58
Full Changelog: v0.1.0-rc.6...v0.1.0-rc.7
SheetDiver v0.1.0-rc.6
What's new in 0.1.0-rc.6
The first release: a datasheet library for electronics design, shared with your AI agent over MCP.
Datasheets in, structured data out
- Import PDFs by drag-and-drop (files or folders), file picker, URL (product pages that link to the PDF too), part number (looked up at TI, ST, ADI/Maxim, onsemi, Nexperia and Diodes, then the parts catalogue) or
sheetdiver import. Several import in parallel, followed in an import queue with progress and retry. PDFs are read by PDFium compiled to WebAssembly: no cgo, no external tools, no filesystem access. - Part numbers that resolve: base parts, family patterns (
TPS56x200,STM32U545xx), orderable codes (TPS563200DDCR,TLV75733PDBVR,MCP1700T-3302E/TT,MAX77801EWP+T) and unlisted ordering codes by prefix (STM32U545VET6Q→STM32U545VE). - Extraction: the section tree (outline or headings, two-column reading order); every captioned figure cut out and classified (graph, schematic, waveform, block diagram, pinout, timing, layout, package) with axes from "Y vs X" captions; spec tables as min/typ/max parameters with conditions, section and a canonical key (
vin,iout,fsw,vref,ilim,iq,rdson,qg…); pin tables, per package; every table as an image, with irregular ones flagged for the agent to transcribe; recommended inductors and capacitors; the datasheet revision (TI, ST, ADI/Maxim, Microchip, Diodes, AOS styles). - Extraction knows the usual traps: names centred across condition rows, typ printed half a line off, ±% tolerances, current limits in normal operation vs start-up vs input, per-pin absolute-maximum rows, thresholds that aren't operating ranges, µ and Ω set in Symbol fonts, and output ratings stated only on the first page. A corpus of 18 real datasheets guards it (
make corpus && make test-corpus);sheetdiver inspectshows what it finds. - Datasheet revisions: check one datasheet or the whole library for a newer revision, see which spec rows changed, and update in place. The same datasheet from another URL is recognised instead of duplicated. When the extractor improves, existing datasheets are re-extracted in the background; what you and your agent recorded is always kept.
Library
- SQLite with full-text search over parts, pages, sections, figures, parameters, pins, registers, tables, recommendations and notes. Every value records whether it came from the extractor, the agent or you; recorded values win and survive re-extraction.
- Part view: key parameters, editable parameter table, figure gallery and editor, pins, sections, registers, tables, notes, variants and alternatives. Page viewer with figure and table overlays, highlighted parameter regions and drag-to-select. The PDF opens in your viewer.
- Favorites and status (preferred, approved, avoid, NRND, EOL), used by filters, comparisons, alternatives and project checks.
- Compare by type: a component type's parts side by side on the parameters that matter for it, sorted and filtered with units ("VIN ≥ 24 V, IOUT ≥ 3 A"), every value linked to its page; CSV export.
- Alternatives: library parts that could replace a part, compared key by key in the direction that matters; drop-ins first.
Parts catalogue (JLCPCB / LCSC)
- One click downloads the open jlcparts dataset (about 2.5 million parts, republished from JLCPCB three times a day; about 200 MB), searched offline with a reminder to refresh it.
- Browse by category, search by part number or specs, and filter on each category's own parameters (Drain to Source Voltage ≥ 30V, RDS(on) ≤ 10mΩ, Type = N-Channel; supply ranges compare as "accepts"), with stock, price, JLC basic/extended library and the parameters as sortable columns.
- Tick parts to import their datasheets. Part-number lookups and BOM import fall back to its datasheet links.
Projects and design
- Projects for a board: BOM with designators, rails and currents; per-rail load including regulator input currents derived from their output loads; checks against every part's absolute-maximum and recommended limits, regulator ratings (a current limit is only a ceiling), discouraged parts and parts without a datasheet.
- BOM import from CSV/TSV (KiCad, Altium, JLCPCB, LCSC codes): parts found in the library or fetched by part number, with JLC availability.
- Design-review report as Markdown (Report button,
sheetdiver report). - Calculators: buck, boost, LDO, MOSFET gate drive, gate bias divider and resistor divider, with inputs filled from the datasheets (with page references) and project rails, and results saved to the project.
For AI agents
- A built-in MCP server (streamable HTTP on 127.0.0.1, or
sheetdiver mcpover stdio) with 43 tools: search and read the library, see figures, pages and tables as images, record parameters, figure descriptions, tables, pins, registers, recommendations and notes, import datasheets and BOMs, search the parts catalogue, find alternatives, manage projects, run calculators and export reports. Settings switch agents off, make them read-only or forbid imports; their changes are marked. - Follow agent: what the agent shows opens in front of you.
Apps and packaging
- Desktop app for macOS (universal), Windows and Linux (x64 and ARM64; .deb, .rpm, .tar.gz), plus
sheetdiver serve(headless, the same UI in your browser) for every platform. Ten themes shared with CodeDiver. - Releases ship checksums, an SPDX SBOM, signed build provenance, and the third-party notices (
sheetdiver licenses).
[Unreleased]: v0.1.0...HEAD [0.1.0]: https://github.com/aitakemyjob/sheetdiver/releases/tag/v0.1.0
Install
macOS / Linux: curl -fsSL https://raw.githubusercontent.com/aitakemyjob/sheetdiver/main/scripts/install.sh | sh
Windows: irm https://raw.githubusercontent.com/aitakemyjob/sheetdiver/main/scripts/install.ps1 | iex
| Platform | Download |
|---|---|
| macOS (Apple Silicon + Intel) | sheetdiver_darwin_universal.zip |
| Windows | sheetdiver_windows_amd64_installer.exe or sheetdiver_windows_amd64.zip |
| Linux x64 | .deb, .rpm or .tar.gz (sheetdiver_linux_amd64.*) |
| Linux ARM64 | sheetdiver_linux_arm64.* |
Headless server (sheetdiver serve) |
sheetdiver-headless_<os>_<arch>.* |
Verify downloads against checksums.txt, and check that a file was built by this repository's release workflow with:
gh attestation verify <file> --repo aitakemyjob/sheetdiverThe SBOM (sheetdiver_v0.1.0-rc.6.spdx.json) lists every Go and npm dependency in this release.
What's Changed
Bug fixes
- fix: importing on Windows, and catalogue downloads failing as "republished" by @aitakemyjob in #55
Full Changelog: v0.1.0-rc.5...v0.1.0-rc.6