Overview
LabWired runs real embedded firmware on a deterministic simulation of microcontrollers (ARM Cortex-M, RISC-V, and ESP32), right inside the conversation. Pick a board, wire up an MCU with sensors, displays, and buses, compile firmware, and run it in an interactive hardware lab you can watch — no physical board required. The same firmware binary that flashes to real silicon runs in the simulator, so results are reproducible enough to debug and to gate CI on. LabWired validates your wiring before it runs, lists the boards and components it supports, compiles firmware from source, and opens a live lab view embedded in ChatGPT where you can see GPIO, serial output, and peripherals respond in real time.
Tools
labwired_compile
ChatGPTlabwired_context
ChatGPTgoal, project_id and design pack inputs shape the result. model_verified is only ever set by an oracle-gated verification run.labwired_datasheet
ChatGPTpart and search it returns the pages mentioning a register, pin, command or timing parameter (BM25-ranked, full text of the top pages). With part and pages it returns those pages verbatim. matches is a relevance score, not a count, and a "terms" hit only means the words appear on the same page. A search with no hits means the document does not contain the query, not that the part lacks the feature; vendor wording varies. A search spans the part's documents (datasheet and reference manual); each hit names its document, which can be passed back as part to read on. In lanes, empty is a document not held and unavailable one held but not searched. Returns raw document text only; nothing in it is cross-checked against an executable model. Read-only and stateless.labwired_debug
ChatGPTlabwired_debug_start
ChatGPTdiagram/firmware inputs are not required (the board is already flashed). With no bench attached, the result carries a connect_url to open with the same LabWired account while keeping Studio open. Sessions expire when idle.labwired_debug_stop
ChatGPTlabwired_describe
ChatGPTlabwired_device_console
ChatGPTsessionId is optional: omit it to target the caller's only attached bench. Returns the entries after cursor (up to limit) plus the cursor to pass on the next call; the bench keeps only a bounded tail, so older entries may already have been evicted. Read-only.labwired_device_continue
ChatGPTlabwired_device_control
ChatGPTsessionId is optional: omit it to target the caller's only attached bench. Returns the job id and state so labwired_device_job can poll or cancel the action.labwired_device_flash
ChatGPTsessionId is optional: omit it to target the caller's only attached bench. The page handles the confirmation handshake; the call may return confirm-required with a job_id, and the job's state settles to succeeded, failed, cancelled or timed_out. Provide either a firmware_ref (sha256:<64 hex> or an absolute http(s):// URL the page can fetch) or inline image_base64 + name; format defaults to the name suffix (elf/bin/hex). Rate-limited per account.labwired_device_halt
ChatGPTlabwired_device_inspect
ChatGPTsessionId is optional: omit it to target the caller's only attached bench. what selects the slice: "memory" uses address (and optional length); the other values ignore them. Read-only.labwired_device_job
ChatGPTsessionId is optional: omit it to target the caller's only attached bench.labwired_device_list
ChatGPTlabwired_device_reset
ChatGPTlabwired_device_run
ChatGPTsessionId is optional: omit it to target the caller's only attached bench. The page handles the confirmation handshake and the bench job records the outcome. Takes a firmware_ref (sha256:<64 hex> or http(s):// URL) or inline image_base64 + name, like a plain flash; monitor_ms caps the monitoring window (default and maximum 120000). Rate-limited per account.labwired_device_status
ChatGPTsessionId is optional: omit it to target the caller's only attached bench. Read-only and observational.labwired_device_step
ChatGPTlabwired_draft_i2c_part
ChatGPTpack (for diagram.partPacks) and pack_yaml (text). Not added to the catalog.labwired_draft_spi_part
ChatGPTpack (for diagram.partPacks) and pack_yaml (text). Not added to the catalog.labwired_export
ChatGPTformat values (net, sch, bom, text, footprints, kicad_pcb, gerber). The artifact is a projection of connectivity, not a verified board: it states what is wired to what and does not mean the circuit works, that the copper can be routed, or that anything was simulated. warnings lists parts with no footprint (imported as unplaceable) and parts the catalog does not know (omitted from the artifact).labwired_import
ChatGPT.net (5-9), read through the kicad_sch mapper. kicad_pcb = a .kicad_pcb alone: its pads carry the exact netlist. Pins are never invented; unmapped parts go to diagram.coverage (verification reports them as unproven). twin_buildable is true only if the catalog mint succeeds. Returns the design pack and a next[] list.labwired_import_netlist
ChatGPTlabwired_inspect
ChatGPTsnapshot_id: the decoded peripheral register wall + display framebuffer artifacts, serial output, and hardware diagnosis. Shape the payload with output (summary|serial|peripherals|full) and narrow the peripheral wall with peripheral. Deterministic: the snapshot is the exact state the run produced.labwired_lab
ChatGPTopen_url) plus an inline lab widget. Omit diagram for a validated LED-blink starter on board; pass diagram for a custom circuit. Arduino-framework boards: language arduino (cpp, c++, ino normalize). Returns open_url, build_status (ok|failed|skipped|pending), simulation_status (ready|not_run|failed), preview and compiler_errors. Creates a shareable lab each call.labwired_list
ChatGPTkind narrows the listing: "board" (Playground starter boards), "mcu" (MCU components only), "component" (every component, MCUs and peripherals/passives), "input" (only parts that can be driven by stimuli: sensors/inputs with SimInput channels) or "lab" (pre-wired example projects: a board plus peripherals and demo firmware). Omit kind for boards + labs + components. Optional filter is a substring over id/type. Returns rows per kind, each with an id/type and basic attributes.labwired_order
ChatGPTestimate, the priced lines, unsourced lines and a payUrl for the user. The price is an estimate confirmed by a person; the card is only held until then, and each seller ships to the user. unsourced lines have no seller price and are the user's to buy.labwired_part
ChatGPTvendorClaims (VENDOR_ONLY): the vendor's CMSIS-SVD register map or pin map, assurance "vendor-claim", not a fact assurance level; (3) modelClaims (MODEL_ONLY): LabWired's own pin model, assurance "modelled", pin names and roles for every catalog part and board, true of the twin and not a datasheet; (4) quotes (NOT_EXTRACTED): the held document's own lines on the question, each with its page, citations and not facts. Omit query/configurationId to list the corpus (curated parts then vendor-SVD devices), 25/page; nextCursor feeds cursor. predicates: ["pin.function"] asks for pins; a part no source describes is REFUSED, never an empty body. Pass peripheral, register or address for the SVD register map; it holds registers ONLY, so package and electrical questions return WRONG_SOURCE. A reset value not marked stated was inherited from a file-wide default and may be wrong. Also returns modelConflicts (document and model disagree) and ambiguities. lanes reports what each store held: held / empty / refused / unavailable. What the corpus lacks is absent rather than invented: an empty bucket is unknown, never zero. A miss is recorded as demand.labwired_part_search
ChatGPTpart feeds labwired_price/labwired_order; catalog_type is the diagram part if any. matched_on splits seller vs local filters; notes names any filter not applied as asked. Empty is not proof no part exists. Read-only.labwired_pcb_auto
ChatGPTkeep parts stay fixed) or autoroute (task=route; nets, default all) job on a stored PCB board at rev (REQUIRED, head); existing copper stays. Returns job_id; repeat with {board_id, job_id} until status is done, which writes the next rev.labwired_pcb_create
ChatGPTlabwired_pcb_export
ChatGPTlabwired_pcb_inspect
ChatGPTnet), region (needs bbox:[x1,y1,x2,y2]) or parts. rev defaults to the latest. Units mm, origin top-left of the board outline, y down.labwired_pcb_place
ChatGPTlabwired_pcb_reference_circuit
ChatGPTlabwired_pcb_route
ChatGPTlabwired_pcb_simulate
ChatGPTlabwired_pcb_view
ChatGPTlabwired_price
ChatGPTprovidersUnavailable lists any that were not. part is a catalog type, a manufacturer part number, or a part name; the sellers do the searching. quantity is how many devices are built; a rung is read at quantity x count. total is null unless every line priced in one currency; priced lines are still itemised and unpriced lines are listed with reasons. matched:"family" is a package variant of the right chip (tmp117 -> TMP117AIDRVR), so it is an estimate, not a quote, and any such line makes total.basis "family-estimate". No unpriced reason is a zero price. Read-only.labwired_project_delete
ChatGPTlabwired_project_edit_firmware
ChatGPTlabwired_project_get
ChatGPTlabwired_project_list
ChatGPTlabwired_project_publish
ChatGPTlabwired_project_unpublish
ChatGPTlabwired_project_verify
ChatGPTlabwired_project_watch
ChatGPTlabwired_put_source
ChatGPTsha256:<hex>). The ref is accepted wherever firmware source is taken, so large sources need not be resent.labwired_resolve_circuit
ChatGPTlabwired_run
ChatGPTsource_tree_ref or a small source with explicit board, language, and matching entryPath (compiled on the hosted toolchain, no local compiler), or from a precompiled firmware_ref + target. Returns run status, serial output, cycle counts, the peripheral inspect wall (decoded registers + display framebuffer artifacts), a snapshot_id identifying the stored run state, and, on fault, hang, or step limit, a hardware-level diagnosis. Unmodeled hardware access is a fault (fail-loud). May return {status:"running", run_id} for long runs; call again with just that run_id to collect the result. Targets: Cortex-M (STM32, RP2040, nRF52) bare ELFs, ESP32-C3/S3 ROM-boot images, classic ESP32.labwired_search
ChatGPTlabwired_share
ChatGPT?run=1). Refuses a diagram with no MCU; returns validation and firmware.labwired_stream
ChatGPTsnapshot_id, filtered by channels: serial, gpio (edge traces), diagnosis, peripherals, or a peripheral name such as "i2c0". Default: serial, gpio and a peripheral index. Deterministic per snapshot.labwired_validate
ChatGPTlabwired_verify
ChatGPTsource with explicit board, language, and matching entryPath (compile-then-run), or a precompiled firmware_ref+target; a REQUIRED oracle with at least one clause asserts observable evidence: serial markers (lowered to a stop-on-match acceptance so a print-then-crash reports the fault, not a pass), a display paint (refresh generation + inked bytes, read from the peripheral framebuffer artifacts), and/or registers/gpio final state. An empty/missing oracle is rejected with ORACLE_REQUIRED: it never passes on execution alone; this is model verification on the twin, not a hardware proof. stimuli drives a sensor mid-run, so a build is not gated on its undriven default: the verdict names the vector, and a refused or unreached stimulus never passes. A diagram with MORE THAN ONE MCU runs as a WORLD: every chip is compiled and they step together, wires between them modelled; the verdict is an AND over all of them. That path takes source (not a precompiled ref), runs one image on every MCU unless firmware_by_part overrides a chip, reports each chip's console in nodes, and passes a serial clause when ANY node satisfies it (naming it). It returns serial evidence ONLY; display/registers/gpio clauses and stimuli are rejected up front.labwired_writeback
ChatGPTCapabilities
Example Prompts
Click any prompt to copy it.
Links
App Stats
58
Tools
3
Prompts
ChatGPT
Platforms
Category
Technical Knowledge SearchWorks with
Similar Apps
Data refreshed daily






