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.
| Method | Runs on | Best for |
|---|---|---|
beinilink-cli | PC, without the desktop application | Batch jobs, CI, calls from other programs |
| AI-assisted changes | Running application, or project files directly | Changing configuration, starting and stopping measurement, and analyzing results with AI tools |
| PC scripts | Desktop application, during measurement | Reacting to frames, reading and writing signals and variables |
| Device Python | Device | Logic 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.
| Command | Purpose |
|---|---|
devices | List connected devices |
can | Send, monitor, read versions, run schedule files |
lin | Send, request, monitor, respond as slave, wake up, control bus power, run schedule files |
uart | Send, monitor |
repl | Run a device Python command or open an interactive terminal |
utils | UART utility modes on the CAN and LIN channels |
project | Validate project files and export the project schema, without a device |
# 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 1000Run 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.
{"timestamp":"2026-08-13T08:30:15.123Z","channel":"can","kind":"frame","data":{}}| Exit code | Meaning |
|---|---|
| 0 | Success, or --duration expired |
| 2 | Invalid argument or input |
| 3 | Device or port not found |
| 4 | Serial open failed, port busy, or mode conflict |
| 5 | Device rejection, response timeout, or protocol error |
| 6 | Schedule file error |
| 10 | Internal error |
| 130 | Interrupted 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:
{
"mcpServers": {
"beinilink": {
"command": "node",
"args": ["<install-folder>/resources/ai/ai-mcp.cjs"]
}
}
}| Tool | Purpose |
|---|---|
get_project | Read the current project and its saved state |
open_project | Open a project without discarding unsaved changes |
update_project | Change configuration without saving or sending |
save_project | Save the project |
get_status | Read connection, device and measurement state |
start_measurement | Start measurement, which may send frames |
stop_measurement | Stop measurement |
read_trace | Read up to 500 recent bus frames |
read_information | Read 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:
# 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-filesValidation 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.
