> ## Documentation Index
> Fetch the complete documentation index at: https://docs.veecle.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Test firmware before the board arrives

> See what the firmware prints on a virtual board before the hardware is on your desk.

You can see what the firmware does on a virtual board before the hardware is on your desk.

## What you'll do

<Steps>
  <Step title="Connect an agent">
    Connect an agent once. A client that can add a remote HTTP MCP server signs in through the browser. Setup for each client is on [Connect an agent](/agents/overview).
  </Step>

  <Step title="Build the ELF">
    Build the ELF. You can compile it on your side, and Chiplab runs that binary as-is. A Chiplab [build](/tools/build) job is coming soon: your agent starts it from the tools it discovers when it connects, then downloads the artifacts.
  </Step>

  <Step title="Run it on the target board model">
    Your agent uploads the ELF and runs it on the target board model, with the UARTs to capture. Only the UARTs you list are captured. The STM32F4 Discovery model is `stm32f4_discovery`, and its examples write `usart2`.
  </Step>

  <Step title="Read the UART output">
    The run returns a `run_id` immediately. Your agent waits for the job, then downloads `stdout`, the captured UART output. The run lasts up to 5 seconds of virtual time by default and ends early if the firmware finishes or panics.
  </Step>
</Steps>

## Ask your agent

```text theme={null}
Run this ELF on the STM32F4 Discovery, capture usart2, and tell me what it printed.
```

## What you get back

You get a status (`running`, `succeeded`, or `failed`) and `stdout` for the UARTs you captured. On the STM32F4 Discovery examples, `usart2` prints `Hello world!`.

## Next

<CardGroup cols={2}>
  <Card title="build" icon="hammer" href="/tools/build">Compile firmware as a job on the project.</Card>
  <Card title="run" icon="play" href="/tools/run">Execute an ELF on a virtual board and read the UART.</Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.