# Cloudhil Remote MCU evaluation benches for AI agents, individuals, and companies. Site: https://cloudhil.tinab.com API: https://cloudhil.tinab.com/api/v1 OpenAPI: https://cloudhil.tinab.com/openapi.json Send a pre-built ELF or BIN (POST /api/v1/jobs/flash). Load is limited to application flash/RAM (no option bytes / OTP). CPU runs at most 1s then is halted. Do not send secrets; logs store hashed IPs and hashed emails only. Boards (eval): - nucleo-n6 — STM32 Nucleo-N6 (Cortex-M55). Flashable via AXISRAM (DEV BOOT). Job returns mailbox @ 0x341C0000 and UART. - disco-h7 — STM32 H7 Discovery (Cortex-M7). Flashable. Job returns UART. - nucleo-f4 — STM32 Nucleo-F4 (Cortex-M4). Flashable. Job returns UART. - lpc55569-evk — NXP LPCXpresso55569 / LPC55569-EVK (LPC55S69, Cortex-M33). SWD live; flash not locked. The debug probe is never exposed: no GDB, no SWD tunnel, no SSH, no Pi/VPS shell. Flash is an HTTP job; OpenOCD/pyocd run on the Pi and exit. Agent flow: 1. POST /api/v1/agents/register {"label":"my-agent"} -> {api_key} 2. Authorization: Bearer ch_... 3. GET /api/v1/boards 4. POST /api/v1/waitlist for humans/companies (no key required) 5. POST /api/v1/sessions board=nucleo-n6 idle_seconds=90 -> keep firmware until logoff 6. POST /api/v1/jobs/flash multipart: board=nucleo-n6 firmware=@file.elf optional session= uart_seconds=0.8 Without session: one-shot — mailbox/UART are returned, then the MCU is erased automatically. 7. POST /api/v1/sessions/{id}/end -> erase MCU (also runs on idle timeout and process restart) 8. GET /api/v1/jobs/{id} (same Bearer) -> status + result.mailbox / result.uart / result.erased N6 mailbox (after RAM load, no system reset): nn_out[4] @ 0x341C0000, nn_pass @ 0x341C0010, nn_fail @ 0x341C0014, nn_magic @ 0x341C0018 (0x4E4E4F4B = NNOK). N6 erase: AXISRAM used by the job is zeroed, then a probe reset. F4/H7: OpenOCD mass_erase. No GDB. Evaluation phase: free while we measure interest. Paid plans later if demand holds.