lvkit

Read LabVIEW VIs without a LabVIEW license.

lvkit parses .vi, .ctl, .lvclass, and .lvlib files directly into queryable dependency and dataflow graphs. Document code, track changes in CI, feed VI structure to AI tools, or generate equivalent Python.

Getting started

Install from PyPI, then run setup to create a project resolution store and install AI agent skills.

pip install lvkit
lvkit setup

Prefer a global install? pipx install lvkit or uv tool install lvkit. Interactive graphs need lvkit[visualize].

Then try it on a VI:

lvkit describe path/to/your.vi --chart
lvkit generate path/to/your.vi -o out/

What you can do with it

Built for AI and your IDE

MCP server + agent skills

lvkit setup installs ready-made workflows into Claude Code or Copilot — describe VIs, convert them, and resolve unknowns without writing prompts. For interactive sessions, the MCP server lets an agent load a graph, walk wires, and ask follow-up questions across multiple VIs.

{
  "mcpServers": {
    "lvkit": { "command": "uvx", "args": ["--from", "lvkit", "lvkit-mcp"] }
  }
}

Principles

No LabVIEW license required

lvkit reads VI binaries directly — no LabVIEW installation, no runtime, no account. It works in CI and on machines that have never seen LabVIEW.

Clean-room by design

Every piece of semantic knowledge comes from published sources, not proprietary code or runtime access. The binary parser builds on the open-source pylabview project.

Deterministic and verifiable

The whole pipeline is deterministic — no LLM, no sampling. Same VI in, same output every run, so results can be diffed, committed, and checked in CI.

AI-ready, not AI-dependent

A built-in MCP server and agent skills let Claude Code or Copilot drive lvkit interactively. Nothing about the tool requires an agent — the CLI works on its own.

Open source, Apache-2.0

The code is yours to read, run, fork, and extend. No paid tier of the same software waiting to take it over once you depend on it.

Apache-2.0 · pre-1.0 · public on GitHub. Code generation coverage is incremental and APIs may shift before 1.0; pin a version, fork if you have to.