Learn how to set up and use ProbeCodex for AI-powered embedded debugging.
ProbeCodex is an MCP (Model Context Protocol) server that enables AI assistants to debug embedded systems. It connects your AI coding assistant to hardware debug probes, allowing natural language debugging of ARM Cortex-M microcontrollers.
One command downloads ProbeCodex, configures your AI client, and runs the agent setup wizard.
curl -fsSL https://probecodex.com/install.sh | bashWorks on macOS (ARM & Intel) and Linux (x64). Requires sudo for install.
irm https://probecodex.com/install.ps1 | iexRun in PowerShell. Admin recommended for service installation.
The installer detects and configures these MCP-compatible clients (preserving your existing MCP servers):
Signed & notarized .pkg installer for Apple Silicon (arm64) and Intel (x64). No Gatekeeper warnings.
x64 binary. Works on Ubuntu, Debian, Fedora, and other distributions.
Extract ZIP and run agent installer as Administrator.
ProbeCodex connects to your target through OpenOCD or PyOCD. Install one of these before using ProbeCodex:
brew install openocdpip install pyocdProbeCodex uses a configuration file (.mcp.json) to store settings. Place this file in your project root directory.
{
"gdb": {
"host": "127.0.0.1",
"port": 3333
},
"elf": "./build/firmware.elf",
"svd": "./STM32F4xx.svd",
"telemetry": {
"enabled": true,
"endpoint": "https://telemetry.probecodex.com"
},
"rtos": {
"type": "freertos",
"auto_detect": true
}
}| Option | Description | Default |
|---|---|---|
gdb.host | GDB server host address | 127.0.0.1 |
gdb.port | GDB server port | 3333 |
elf | Path to ELF file with debug symbols | - |
svd | Path to SVD file for peripheral definitions | - |
telemetry.enabled | Enable session telemetry | true |
Configure your AI assistant to use ProbeCodex MCP as an MCP server. Add the following to your MCP client configuration.
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"probecodex": {
"command": "/usr/local/bin/probecodex-mcp",
"args": [],
"env": {}
}
}
}Edit .cursor/mcp.json or .vscode/mcp.json in your project:
{
"mcpServers": {
"probecodex": {
"command": "/usr/local/bin/probecodex-mcp",
"args": []
}
}
}{
"mcpServers": {
"probecodex": {
"command": "C:\\Program Files\\ProbeCodex\\probecodex-mcp.exe",
"args": []
}
}
}{
"mcpServers": {
"probecodex": {
"command": "/usr/local/bin/probecodex-mcp",
"args": []
}
}
}Tip: After installing via the .pkg (macOS) or extracting the archive, binaries are in /usr/local/bin/.
ProbeCodex exposes 90+ debugging tools through the MCP protocol. Tools are organized by category.
target_connectConnect to debug server (OpenOCD/PyOCD)
target_connect_autoAuto-detect and connect to target
target_start_openocdStart OpenOCD with config
target_start_pyocdStart PyOCD server
target_stop_openocdStop OpenOCD server
target_detect_hardwareDetect connected debug probes
target_detect_backendDetect best debug backend
target_check_portCheck if port is in use
target_check_server_installedCheck if OpenOCD/PyOCD is installed
target_install_serverInstall debug server
target_detect_openocd_variantDetect OpenOCD variant (stock/Nuvoton)
target_check_elf_alignmentCheck ELF load address alignment
core_haltHalt CPU execution
core_runResume CPU execution
core_resetReset the CPU
mem_readRead memory at address
regs_readRead all CPU registers
regs_read_namedRead peripheral register (via SVD)
target_flash_hexFlash HEX/ELF to target
target_flash_hex_autoFlash with auto-detection
target_flash_incrementalFlash only changed pages
target_verifyVerify flash contents
target_mass_eraseErase entire flash
target_crc32_rangeCRC32 of memory range
target_verify_crc_sectionsVerify sections via CRC
target_write_symbol_u32Write 32-bit value to symbol
rtos_list_tasksList all FreeRTOS tasks
rtos_snapshot_tasksDetailed task snapshot with stacks
rtos_heapGet heap information
rtos_heap_statsHeap statistics and fragmentation
rtos_snapshot_queuesQueue fill levels
rtos_list_tasks_walkWalk task list manually
rtos_configure_offsetsConfigure TCB offsets
rtos_auto_configure_offsetsAuto-detect TCB offsets
rtos_derive_tcb_offsetsDerive offsets from ELF
rtos_threads_openocdGet threads via OpenOCD
svd_loadLoad SVD peripheral definitions
symbols_from_mapGet symbols from map file
symbols_nm_listList symbols from ELF
symbols_nm_findFind symbol in ELF
trace_itm_enable_openocdEnable ITM via OpenOCD
trace_itm_write_markerWrite marker to ITM
trace_itm_tail_startStart tailing ITM file
trace_itm_tail_readRead ITM output
trace_itm_tail_stopStop ITM tailing
rtt_startStart RTT session
rtt_readRead RTT output
rtt_stopStop RTT session
rtt_setup_openocdSetup RTT via OpenOCD
openocd_execExecute raw OpenOCD command
bt_currentGet current backtrace
board_loadLoad board configuration
config_reloadReload configuration file
events_start_streamStart event streaming
events_pollPoll for events
events_stop_streamStop event streaming
epd_screen_captureCapture e-paper display
license_activateActivate license key
license_deactivateDeactivate license
license_statusCheck activation status
license_verifyVerify license validity
license_featuresList available features
license_infoDetailed license info
mcp_initInitialize MCP server
mcp_versionGet MCP version info
mcp_check_updatesCheck for updates
mcp_updateUpdate MCP server
mcp_cleanup_stale_processesClean up stale processes
Telemetry is opt-in only. When enabled, anonymized usage data helps improve ProbeCodex. No source code, file paths, or sensitive data is ever transmitted.
telemetry_enableEnable telemetry
telemetry_disableDisable telemetry
telemetry_statusGet telemetry status
telemetry_set_correlation_idSet session correlation ID
The RSP (Remote Serial Protocol) proxy captures debug session metrics:
Agent operations send usage metrics:
system_check_disk_spaceCheck available disk space
system_installation_infoGet installation info
emulator_check_qemu_installedCheck if QEMU is installed
emulator_install_qemuInstall QEMU emulator
support_create_ticketCreate support ticket
support_start_bug_sessionStart bug reproduction session
support_end_bug_sessionEnd bug session and submit
support_list_bug_sessionsList all bug sessions
support_verify_bug_fixVerify a bug fix
support_confirm_fixConfirm bug is fixed
rsp_proxy_startStart RSP proxy
rsp_proxy_stopStop RSP proxy
rsp_proxy_statusGet proxy status
hardware_list_devicesList local & remote devices
hardware_share_deviceShare device with team
hardware_connect_deviceConnect to remote device
hardware_book_slotBook time slot for device
hardware_statusGet sharing status
hardware_my_bookingsView your bookings
agent_get_roleGet agent role
agent_opt_in_testingOpt in/out of automated testing
agent_get_pending_testsGet pending tests
agent_run_testRun a specific test
Beta Notice: Hardware compatibility is being confirmed during beta. If you encounter issues with any listed hardware, please report it so we can improve support.
Have a debug probe that isn't detected? Add its USB Vendor ID (VID) and Product ID (PID) to a config file:
{
"customProbes": [
{
"vendorId": "1234",
"productIds": ["5678"],
"type": "cmsis-dap",
"name": "My Custom Probe"
}
]
}Fields:
vendorId - USB VID (hex, no "0x" prefix)productIds - Array of PIDs to match (optional)type - One of: jlink, stlink, nulink, cmsis-dap, customname - Display name for the probeFind VID/PID:
Need to debug an MCU that isn't in the built-in list? Add it via a config file or MCP tool:
{
"customTargets": [
{
"id": "my_mcu",
"target": "stm32f4x",
"flashBase": "0x08000000",
"notes": "My custom board"
}
]
}Fields:
id - Lookup key (case-insensitive, partial match)target - OpenOCD target config name (e.g., stm32f4x, numicroM4)flashBase - Flash base address hex string (optional)openocd - Custom OpenOCD binary path (optional)ProbeCodex has built-in support for FreeRTOS task inspection, heap analysis, and queue monitoring.
rtos_list_tasksList all tasks with state, priority, and stack
rtos_snapshot_tasksDetailed snapshot with high-water mark
rtos_heap_statsHeap usage and fragmentation analysis
rtos_snapshot_queuesQueue fill levels and waiting tasks
For full RTOS debugging support, enable these options in your FreeRTOSConfig.h:
#define configUSE_TRACE_FACILITY 1 #define INCLUDE_uxTaskGetStackHighWaterMark 1 #define configQUEUE_REGISTRY_SIZE 16
RTT provides high-speed bidirectional communication with your target without affecting real-time behavior. ProbeCodex supports RTT through both J-Link and OpenOCD.
To use RTT, you need to include the SEGGER RTT firmware in your project. Download the RTT implementation from SEGGER:
Contains SEGGER_RTT.c, SEGGER_RTT.h, and configuration files for your project.
Download from SEGGERWith J-Link probes, RTT is natively supported. ProbeCodex can start and read RTT output:
rtt_startStart RTT session with J-Link
rtt_readRead RTT output from target
rtt_stopStop RTT session
OpenOCD also supports RTT. Use these tools to configure and read RTT via OpenOCD:
rtt_setup_openocdConfigure RTT control block search
openocd_execExecute OpenOCD RTT commands
To enable RTT in OpenOCD, add these commands to your OpenOCD configuration or run them via telnet:
rtt setup 0x20000000 0x10000 "SEGGER RTT" rtt start rtt server start 9090 0
Replace 0x20000000 with your RAM start address and 0x10000 with your RAM size.
Include these files from the SEGGER RTT package in your project:
RTT/ ├── SEGGER_RTT.c # RTT implementation ├── SEGGER_RTT.h # RTT header ├── SEGGER_RTT_Conf.h # Configuration (buffers, etc.) └── SEGGER_RTT_printf.c # Optional printf support
Then use RTT in your code:
#include "SEGGER_RTT.h" // Print to RTT channel 0 SEGGER_RTT_printf(0, "Hello from RTT!\n"); // Write binary data SEGGER_RTT_Write(0, data, sizeof(data));
Ensure OpenOCD or PyOCD is running before connecting:
openocd -f interface/stlink.cfg -f target/stm32f4x.cfgVerify the GDB port (default 3333) matches your configuration.
Activate your license via MCP tool or CLI:
MCP: license_activate(license_key: "YOUR_LICENSE_KEY")CLI: probecodex-mcp --activate YOUR_LICENSE_KEYCheck license status with license_status. If issues persist, check your internet connection or contact support.
Ensure your ELF file is loaded and contains FreeRTOS symbols:
target_connect(elf: "./build/firmware.elf")Enable configUSE_TRACE_FACILITY in FreeRTOSConfig.h and rebuild.
| Command | Description |
|---|---|
--activate KEY | Activate license with the provided key |
--deactivate | Deactivate license on this machine |
--check-update | Check for available updates |
serve | Start the MCP server (stdio mode) |
--version | Show version information |
--help | Show help message |
The ProbeCodex Agent has a fully automated one-click installer that handles authentication, VPN setup, dependencies, and system service configuration.
| Option | Description |
|---|---|
--no-vpn | Skip VPN configuration |
--no-service | Skip auto-start service setup |
--headless | Token input mode (no browser) |
--token=XXX | Provide authentication token directly |
# Download and run the .pkg installer from the portal # Double-click: probecodex-macos-arm64.pkg (or macos-x64.pkg) # Binaries are installed to /usr/local/bin/ # One-click install (handles auth, VPN, dependencies, service) probecodex-agent install
Service location: ~/Library/LaunchAgents/com.probecodex.agent.plist
Dependencies (auto-installed via Homebrew):
brew install wireguard-toolsbrew install wstunnel# Extract the archive from the portal tar -xzf probecodex-linux-x64.tar.gz sudo mv probecodex-linux-x64/probecodex-* /usr/local/bin/ # One-click install (handles auth, VPN, dependencies, service) probecodex-agent install
Service location: ~/.config/systemd/user/probecodex-agent.service
Dependencies (auto-installed):
| Distro | Package Manager | WireGuard Command |
|---|---|---|
| Ubuntu/Debian | apt | apt install wireguard-tools |
| Fedora | dnf | dnf install wireguard-tools |
| Arch | pacman | pacman -S wireguard-tools |
# Download binary (PowerShell) Invoke-WebRequest -Uri "https://droidtech.ai/downloads/probecodex-agent/latest/probecodex-agent-win-x64.exe" -OutFile "probecodex-agent.exe" # Move to Program Files New-Item -ItemType Directory -Force -Path "C:\Program Files\ProbeCodex" Move-Item probecodex-agent.exe "C:\Program Files\ProbeCodex\" # One-click install (run as Administrator) & "C:\Program Files\ProbeCodex\probecodex-agent.exe" install
Service: Windows Task Scheduler (ProbeCodexAgent task, runs on logon)
Dependencies (auto-installed via winget or choco):
| Component | winget | choco |
|---|---|---|
| WireGuard | winget install WireGuard.WireGuard | choco install wireguard |
| wstunnel | winget install erebe.wstunnel | choco install wstunnel |
| OpenOCD | winget install openocd | choco install openocd |
Manual Service Commands:
# Create scheduled task schtasks /create /tn "ProbeCodexAgent" /tr "C:\Program Files\ProbeCodex\probecodex-agent.exe start" /sc onlogon /rl highest # Start/Stop schtasks /run /tn "ProbeCodexAgent" schtasks /end /tn "ProbeCodexAgent" # Remove schtasks /delete /tn "ProbeCodexAgent" /f
| Location | Contents |
|---|---|
~/.probecodex/ | Config directory |
~/.probecodex/auth.json | JWT authentication token |
~/.probecodex/agent.config.json | Agent configuration |
~/.probecodex/wg0.conf | WireGuard VPN config |
~/.probecodex/logs/ | Agent logs |
| License Tier | VPN Required? |
|---|---|
| Free / Trial | Optional (--no-vpn allowed) |
| Personal / Pro | Optional |
| Team / Enterprise | Mandatory (required for device sharing) |
The installer automatically retrieves your WireGuard VPN configuration during phase [3/7]. No manual setup is required.
Need manual access? You can also download your ProbecodexVPN.conf from Portal → Team Settings for troubleshooting or manual WireGuard setup.
The ProbeCodex Agent is a standalone daemon that provides three powerful automation modes: autonomous AI-powered testing, MCP server validation, and hardware device sharing over VPN.
| Feature | Basic | Pro | Team | Enterprise |
|---|---|---|---|---|
| MCP Test | ✓ | ✓ | ✓ | ✓ |
| Device Sharing (Remote OpenOCD) | ✓ | ✓ | ✓ | ✓ |
| Autonomous AI Testing | — | — | ✓ | ✓ |
AI-powered automated testing using Claude. Runs soak tests or regression tests on your hardware, analyzes results, and reports anomalies.
Validates that MCP tools are working correctly. Tests tool execution, parameter handling, and error responses.
Share local debug probes with remote team members over secure VPN. Enables remote debugging without physical access.
Runs automated AI-powered tests on your embedded target. The Agent uses Claude AI to analyze register values, memory, heap usage, and other metrics to detect anomalies.
| Plan | Description |
|---|---|
soak-test | Long-running stability test. Monitors heap, tasks, and registers over time to detect memory leaks or drift. |
stress-test | Push hardware to limits. Rapid checks to detect failures under load. |
regression | Regression testing. Compares current behavior against expected baselines to catch regressions. |
| Parameter | Description |
|---|---|
--plan=NAME | Test plan to run: soak-test, stress-test, or regression |
--duration=TIME | How long to run (e.g., 1m, 10m, 1h) |
--interval=TIME | Time between checks (e.g., 20s, 30s, 1m) |
--prompt-file=PATH | Run custom test from a prompt file |
--api-key=KEY | Anthropic API key (or set ANTHROPIC_API_KEY env var) |
--model=MODEL | Claude model to use (default: claude-sonnet-4-20250514) |
--alert-slack=URL | Send alerts to Slack webhook URL |
--alert-email=ADDR | Send alerts via email |
--alert-teams=URL | Send alerts to Microsoft Teams webhook URL |
Tests the MCP server tools to ensure they're working correctly. Useful for validating your setup or after updates.
Share your local debug probes with team members over secure VPN. This allows remote developers to debug hardware they don't have physical access to.
Once the agent is running and connected to VPN, use MCP tools to share devices:
Team members can connect to shared devices:
| Command | Description |
|---|---|
agent start | Start the agent daemon |
agent start --foreground | Start in foreground (see output) |
agent stop | Stop the agent daemon |
agent status | Show agent status and connected devices |
agent test --plan=NAME | Run autonomous test with specified plan |
agent mcp test | Run MCP tools validation test |
Can't find what you're looking for? Our AI support can answer questions about ProbeCodex instantly.