:root { --bg:#0a0b14; --bg-card:#12141f; --cyan:#4ecdc4; --yellow:#e8d44d; --green:#4ade80; --red:#ef4444; --text:#fff; --text-dim:#8892b0; --border:#1e2235; } * { margin:0; padding:0; box-sizing:border-box; } body { font-family:'Inter',sans-serif; background:var(--bg); color:var(--text); line-height:1.65; } a { color:var(--cyan); text-decoration:none; } nav { padding:1rem 2rem; border-bottom:1px solid var(--border); } .nav-inner { max-width:1000px; margin:0 auto; display:flex; justify-content:space-between; align-items:center; gap:16px; flex-wrap:wrap; } .logo { display:flex; align-items:center; gap:10px; } .logo img { height:34px; } .logo-text { font-size:1.3rem; font-weight:700; color:var(--text); } .logo-text .ide { color:var(--cyan); } .nav-links { display:flex; gap:1.4rem; align-items:center; flex-wrap:wrap; } .nav-links a { color:var(--text-dim); font-size:0.9rem; white-space:nowrap; } .nav-links a:hover { color:var(--cyan); } .btn { padding:10px 18px; border-radius:8px; font-weight:600; font-size:0.92rem; display:inline-flex; align-items:center; gap:8px; border:none; cursor:pointer; } .btn-primary { background:var(--yellow); color:#000 !important; } main { max-width:860px; margin:0 auto; padding:44px 20px 80px; } h1 { font-size:clamp(1.7rem,4.5vw,2.4rem); line-height:1.25; margin-bottom:14px; } h2 { font-size:1.35rem; margin:40px 0 14px; } h3 { font-size:1.05rem; margin:22px 0 8px; } p { color:var(--text-dim); margin-bottom:14px; } p strong, li strong { color:var(--text); } .lead { font-size:1.05rem; } table { width:100%; border-collapse:collapse; margin:18px 0 24px; font-size:0.9rem; } th { text-align:left; padding:10px 12px; border-bottom:2px solid var(--border); color:var(--text); font-size:0.82rem; text-transform:uppercase; letter-spacing:0.5px; } td { padding:10px 12px; border-bottom:1px solid var(--border); color:var(--text-dim); vertical-align:top; } td:first-child { color:var(--text); font-weight:500; } .yes { color:var(--green); } .no { color:var(--red); } .part { color:var(--yellow); } .callout { background:var(--bg-card); border:1px solid var(--border); border-left:3px solid var(--cyan); border-radius:10px; padding:16px 18px; margin:20px 0; } .callout p { margin:0; } .answer-box { background:var(--bg-card); border:1px solid var(--cyan); border-radius:12px; padding:18px 20px; margin:0 0 22px; } .answer-box p { margin:0; color:var(--text-dim); } .answer-box strong { color:var(--text); } .cta-box { text-align:center; background:var(--bg-card); border:1px solid var(--border); border-radius:16px; padding:30px 20px; margin-top:42px; } .cta-box p { margin:8px 0 16px; } ol.howto, ul { margin:0 0 14px 22px; color:var(--text-dim); } li { margin-bottom:6px; } footer { border-top:1px solid var(--border); padding:24px; text-align:center; color:var(--text-dim); font-size:0.85rem; } footer a { margin:0 8px; }

What is Hardware Lab?

Hardware Lab is AidaIDE's virtual hardware-in-the-loop workspace. It runs your device code against a simulated board — pins, I2C, UART — on a virtual clock, with timeline scenarios and assertions that return pass/fail in milliseconds. Then Run on Device executes the same scenario over SSH and diffs simulation against bench.

Product surface: /embedded#hardware-lab. Docs chapter (in-app User Guide Ch. 23): /docs/hardware-lab. LCOT (Local Chain of Thought) is the linked SSH/SFTP command library — see What is LCOT?. Docs hub: /docs.

What it is

Fact
JobTest device code on a virtual board before it touches hardware, then optionally run the same scenario on the real device
Where it livesEmbedded / Hardware Lab in the desktop app — how it is described on /embedded
PriceVirtual HIL, scenarios, board view, Run on Device, and Record ship in Free forever. AI Scenario and AI Fix are Pro AI. See pricing. There is no separate Hardware Lab license.

In practice: lay button presses, sensor edges, and UART on a timeline; state what should happen (pin states, pulse counts, I2C writes, log output); get a pass/fail report. Then Run on Device and read the timing skew in milliseconds.

Simulate → assert → Run on Device → diff

  1. Simulate — run the file against a virtual board. The simulator uses simulated time, so a sleep() advances the clock instantly. A 30-second hardware scenario can finish in under a millisecond and give the same answer every run.
  2. Assert — put stimuli on a timeline, then state expectations: pin states, pulse counts, I2C writes, log output. You get pass/fail with the check that failed — not a wall of serial output.
  3. Run on Device — over your open SSH/SFTP session, Hardware Lab may push a tiny temporary HIL helper for that run, execute the same scenario against real GPIO, and stream output edges back. Scenario inputs are GPIO-API injected (not electrical jumpers). Outputs and timing are real. That helper is not Aida Lite and not a standing agent.
  4. Diff — compare simulation and bench edge by edge: matched edges with timing skew in milliseconds, edges the device never produced, and edges only the device produced.

Record points the same ephemeral path at a few pins, captures physical button edges on the bench, and turns them into a scenario you can replay at your desk.

33 boards

The library is 33 boards with real pin maps. Raspberry Pi is in that count. Simulation and Generic Linux GPIO are in the 33 as well — not only Jetson, Arduino, and ESP32.

FamilyIn the 33
Simulation BoardYes — virtual target for scenarios
Generic Linux GPIOYes
Raspberry Pi×6 — Generic, 3B, 4B, 5, Zero W, Zero 2 W
ESP32 classic×3
Jetson×6
Arduino×10
Espressif×6 — S2, S3, C3, C6, ESP8266 NodeMCU, D1 Mini

The same board registry feeds Hardware Lab, the Board Library Manager, and the editor's board picker. Pin numbering follows the platform (sketch-style on Arduino; BCM-compatible on Jetson). Bench is a 2D pinout/board view (layouts A–E) — not a 3D CAD scene. Scenarios export to JSON so a test pack can travel with the project. Detail on the product page: /embedded#hardware-lab.

Agents — what Hardware Lab does and does not install

AidaIDE is agentless SSH/SFTP by default. Terminal, SFTP, and LCOT on a normal host need only standard SSH/SFTP. Optional Aida Lite (port 5050) is opt-in for fleet. Lite-micro on MCUs is for the on-device web IDE — not a Hardware Lab agent, and not required for the free SSH/SFTP workspace.

Run on Device and Record may push a tiny temporary HIL helper over SSH/SFTP for that run. It is not Lite. There is no standing “Hardware Lab agent” product.

Free vs Pro

CapabilityTier
Virtual board / HIL, timeline scenarios, assertions, pass/failFree / base
Board view and pinout replayFree / base
Run on Device over SSH + sim vs bench diffFree / base
Record on hardware, replay as a scenarioFree / base
AI Scenario (model writes stimuli and expectations)Pro AI suite
AI Fix (model proposes a fix from failing checks)Pro AI suite

Full plan list: pricing. Optional Pro is $19/mo or $190/yr. Teams Pro is $70/mo or $700/yr for 5 seats.

OS and download

AidaIDE ships for Windows today. macOS and Linux builds are in progress. Create a free account to download — there is no naked installer path.

Frequently asked

What is Hardware Lab?

Virtual hardware-in-the-loop: simulated board, timeline scenarios, assertions, pass/fail — then Run on Device over SSH and diff sim vs bench.

Is Hardware Lab free?

Yes for the lab itself (virtual HIL, scenarios, board view, Run on Device, Record). AI Scenario and AI Fix are Pro. See pricing.

Do I need an agent on the device?

Not a standing Hardware Lab agent. Simulation is local. Optional Aida Lite (port 5050) is fleet opt-in; Lite-micro on MCUs is the on-device web IDE. Run on Device / Record may push a temporary HIL helper over SSH/SFTP for that run.

How honest is the simulator?

Virtual clock in sim — a long scenario can finish in milliseconds. Run on Device: real outputs and timing; scenario inputs are GPIO-API injected, not jumpers. Record = real physical inputs from the bench.

How many boards?

33 boards, including Raspberry Pi, Simulation, and Generic Linux GPIO — not only Jetson, Arduino, and ESP32.

How is it different from LCOT?

LCOT = Local Chain of Thought — 800+ one-click commands + linked terminal/SFTP on one SSH login. Hardware Lab is sim vs bench for GPIO-class code. Glossary: What is LCOT?

Try Hardware Lab on Windows — sign up free

Free forever workspace · Windows today (macOS & Linux in progress)

Sign Up Free — Download

Embedded: Hardware Lab · What is LCOT? · Docs · Pricing