# BenchCI Architecture BenchCI is designed to enable automated testing of firmware on real hardware. The system separates responsibilities between a CLI, remote agents, and a licensing backend. --- ## Components **BenchCI CLI** The CLI is used by developers and CI systems. Responsibilities: - load configuration - authenticate with backend - submit runs to agents - collect artifacts **BenchCI Agent** The agent executes hardware tests on machines connected to physical devices. Responsibilities: - receive test jobs - flash firmware - communicate with devices - produce artifacts **BenchCI Backend** The backend manages licensing and authentication. Responsibilities: - validate license keys - issue sessions - enforce access control --- ## Execution Flow ``` Developer / CI │ ▼ BenchCI CLI │ ▼ BenchCI Agent │ ▼ Hardware Device ``` --- ## Artifacts BenchCI produces structured artifacts. ``` transport.log flash.log results.json ``` These artifacts are stored in: ``` benchci-results/ ``` and may be collected by CI systems.