Skip to content

Developers ​

BeiniLink provides a command line, scripting and an AI control interface, so you can connect it to test benches, CI and your own tools.

MethodRuns onBest for
beinilink-cliPC, without the desktop applicationBatch jobs, CI, calls from other programs
AI-assisted changesRunning application, or project files directlyChanging configuration, starting and stopping measurement, and analyzing results with AI tools
PC scriptsDesktop application, during measurementReacting to frames, reading and writing signals and variables
Device PythonDeviceLogic that runs on the device

Command line ​

Setup installs beinilink-cli and adds it to your user PATH. Open a new terminal to use it. A standalone package without the desktop application is also available, see Download.

CommandPurpose
devicesList connected devices
canSend, monitor, read versions, run schedule files
linSend, request, monitor, respond as slave, wake up, control bus power, run schedule files
uartSend, monitor
replRun a device Python command or open an interactive terminal
utilsUART utility modes on the CAN and LIN channels
projectValidate project files and export the project schema, without a device
powershell
# Send a CAN frame
beinilink-cli can send --bitrate 500k --id 0x200 --data "AA BB CC DD EE FF 11 22"

# Listen for 10 seconds and print JSON Lines
beinilink-cli --duration 10 --output jsonl can monitor --bitrate 500k --listen-only

# LIN request
beinilink-cli lin request --baud 19200 --id 0x3D --len 8 --enhanced --timeout-ms 500

# Simulate a LIN slave for 30 seconds
beinilink-cli --duration 30 lin slave --baud 19200 --response 0x21:01020304:enhanced

# Run a Python command on the device
beinilink-cli repl exec --command "print('hello')" --timeout-ms 1000

Run beinilink-cli --help for all options.

Calling from other programs ​

Stdout carries command output only. Errors and diagnostics go to stderr. Use --output json for finite commands and --output jsonl for streaming commands.

json
{"timestamp":"2026-08-13T08:30:15.123Z","channel":"can","kind":"frame","data":{}}
Exit codeMeaning
0Success, or --duration expired
2Invalid argument or input
3Device or port not found
4Serial open failed, port busy, or mode conflict
5Device rejection, response timeout, or protocol error
6Schedule file error
10Internal error
130Interrupted with Ctrl+C

The command line and the desktop application cannot use the same interface at once. The second one receives a clear error.

AI-assisted changes ​

AI tools can change configuration in two ways: through the running application, or by editing project files.

Through the application ​

While the application is running, AI tools with MCP support can read and change the current project, start and stop measurement, and read Trace and Information. Requests run in the main window and share its project state and measurement flow. They use a local named pipe and no network port is opened.

Configure MCP in your AI tool and keep the main window open:

json
{
  "mcpServers": {
    "beinilink": {
      "command": "node",
      "args": ["<install-folder>/resources/ai/ai-mcp.cjs"]
    }
  }
}
ToolPurpose
get_projectRead the current project and its saved state
open_projectOpen a project without discarding unsaved changes
update_projectChange configuration without saving or sending
save_projectSave the project
get_statusRead connection, device and measurement state
start_measurementStart measurement, which may send frames
stop_measurementStop measurement
read_traceRead up to 500 recent bus frames
read_informationRead up to 200 recent messages, warnings and errors

update_project can change the project name, hardware modules, DBC and LDF paths, CAN and LIN schedules, LIN responses and E2E configuration.

Typical flow: read the project → change configuration → read it back → save → start → read status, frames and errors.

  • Changes, saves and starts must include the latest revision. Requests based on an older revision are rejected if the project changed in the application.
  • Projects can only be changed while measurement is stopped.
  • Successful changes, saves, opens and starts are recorded in Information.
  • A timeout means the result is unknown. Read the status before retrying.
  • Trace reads are bounded snapshots. They do not replace lossless logs or physical timing measurements.
  • Firmware release, flashing, device reset and arbitrary code execution are not part of this interface.

Editing project files ​

.blproj files are JSON, so AI tools can edit them directly. Keep the original and validate the result:

powershell
# Export the project schema for the AI tool
beinilink-cli project schema --output json

# Validate the edited project
beinilink-cli project validate --file .\Demo.blproj --output json

# Also check that database and replay files exist
beinilink-cli project validate --file .\Demo.blproj --check-files

Validation does not connect to a device or modify the project. Errors include field locations. Confirm the configuration in the application afterwards. See Interface Examples and Project Structure.

PC scripts ​

Scripts are written in TypeScript or JavaScript and run during measurement. They can react to CAN, LIN and MeLiBu frames, read and write signals and variables, and send MeLiBu frames or start and stop plans. See PC Scripts, and the example script.ts with script.blproj.

Device Python ​

The device runs simple Python scripts and a REPL. See Python.