{"id":49673937,"url":"https://github.com/w1ne/labwired-core","last_synced_at":"2026-07-15T02:01:11.878Z","repository":{"id":338128071,"uuid":"1154470875","full_name":"w1ne/labwired-core","owner":"w1ne","description":"Deterministic firmware simulator for ARM Cortex-M and RISC-V — with hardware-validated parity","archived":false,"fork":false,"pushed_at":"2026-07-14T00:23:08.000Z","size":419917,"stargazers_count":9,"open_issues_count":8,"forks_count":3,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-14T01:09:42.634Z","etag":null,"topics":["ai-agents","arm","cortex-m","deterministic","embedded","embedded-systems","emulator","esp32","firmware","firmware-simulator","gdb","hardware-in-the-loop","microcontroller","nrf52","risc-v","rp2040","rust","simulation","stm32"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/w1ne.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":"docs/supported_devices.md","governance":null,"roadmap":"ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"docs/agents.md","dco":null,"cla":null}},"created_at":"2026-02-10T12:30:44.000Z","updated_at":"2026-07-14T00:23:11.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/w1ne/labwired-core","commit_stats":null,"previous_names":["w1ne/labwired-core"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/w1ne/labwired-core","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/w1ne%2Flabwired-core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/w1ne%2Flabwired-core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/w1ne%2Flabwired-core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/w1ne%2Flabwired-core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/w1ne","download_url":"https://codeload.github.com/w1ne/labwired-core/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/w1ne%2Flabwired-core/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35486961,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-15T02:00:06.706Z","response_time":131,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-agents","arm","cortex-m","deterministic","embedded","embedded-systems","emulator","esp32","firmware","firmware-simulator","gdb","hardware-in-the-loop","microcontroller","nrf52","risc-v","rp2040","rust","simulation","stm32"],"created_at":"2026-05-07T01:22:27.600Z","updated_at":"2026-07-15T02:01:11.871Z","avatar_url":"https://github.com/w1ne.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LabWired Core\n\nLabWired Core runs embedded firmware in a deterministic simulated hardware lab.\n\nIt loads real firmware ELFs and executes them against modeled chips, boards,\nperipherals, buses, sensors, displays, and protocol devices. The goal is not to\nreplace every hardware test. The goal is to move the fast, repeatable part of\nfirmware bring-up and regression testing into a local and CI-friendly simulator.\n\n[![Documentation](https://img.shields.io/badge/docs-latest-blue.svg)](https://labwired.com/docs/)\n\n## What You Can Do\n\n| Use case | Where to start | What LabWired provides |\n| --- | --- | --- |\n| Run firmware without a board | [`labwired run`](docs/cli_reference.md) | ELF loading, system manifests, UART/GPIO output, traces, snapshots |\n| Gate firmware behavior in CI | [`labwired test`](docs/ci_test_runner.md) | YAML test scripts, assertions, exit codes, artifacts, JUnit output |\n| Debug firmware without hardware | [Debugging](docs/debugging.md), [GDB](docs/gdb_integration.md) | GDB RSP and VS Code DAP support for breakpoints and register inspection |\n| Model board-level I/O | [`examples/demo-blinky`](examples/demo-blinky/README.md) | External I2C/SPI-style device attachment, board I/O mapping, deterministic checks |\n| Validate simulator behavior against hardware | [`examples/nucleo-h563zi`](examples/nucleo-h563zi/README.md) | Hardware and simulator traces, UART logs, reproducible validation reports |\n| Add or audit chip support | [Board onboarding](docs/board_onboarding_playbook.md), [coverage](docs/coverage_scoreboard.md) | Chip/system YAML, target support rubric, smoke coverage, catalog metadata |\n\nSupported targets are intentionally uneven. ARM Cortex-M and RISC-V have the\ndeepest CI coverage today; selected ESP32/Xtensa paths exist for specific\nexamples. Check the per-board docs before assuming a peripheral is modeled:\n[docs/boards](docs/boards/).\n\n## Quick Start\n\n### Install the CLI\n\nPinned release:\n\n```sh\ncurl -fsSL https://labwired.com/install.sh | LABWIRED_VERSION=v0.19.2 sh\nlabwired --version\n```\n\nPrefer to inspect the installer first:\n\n```sh\ncurl -fsSL https://labwired.com/install.sh -o install.sh\n# review install.sh, then:\nLABWIRED_VERSION=v0.19.2 sh install.sh\n```\n\nSupported host environments:\n\n- Linux\n- macOS\n- Windows via WSL2\n\nInstall options:\n\n- `LABWIRED_VERSION=v0.19.2` pins the current documented release for a\n  reproducible install.\n- `LABWIRED_FROM_SOURCE=1` forces a source build.\n- `LABWIRED_INSTALL_DIR=~/.local/bin` changes the install directory.\n\n### Run the CI smoke example from a source checkout\n\nThe bundled smoke script expects the fixture firmware to exist in `target/`.\nFrom the repository root:\n\n```sh\nrustup target add thumbv6m-none-eabi\ncargo build -p firmware-ci-fixture --release --target thumbv6m-none-eabi\ncargo run -q -p labwired-cli -- test \\\n  --script examples/ci/uart-ok.yaml \\\n  --output-dir /tmp/labwired-readme-smoke \\\n  --no-uart-stdout\n```\n\nThat script runs the fixture firmware against\n[`configs/systems/ci-fixture-uart1.yaml`](configs/systems/ci-fixture-uart1.yaml)\nand asserts that UART output contains `OK`.\n\n### Build the simulator from source\n\n```sh\nrustup target add thumbv6m-none-eabi thumbv7m-none-eabi riscv32i-unknown-none-elf\ncargo build --release -p labwired-cli\n./target/release/labwired --version\n```\n\n## Examples\n\nStart with examples that have a clear system manifest, firmware path, and smoke\ntest:\n\n- [CI UART smoke](examples/ci/README.md): minimal `labwired test` scripts for\n  deterministic pass/fail behavior.\n- [Blinky + TMP102](examples/demo-blinky/README.md): STM32F103 firmware talking\n  to a virtual TMP102 sensor over I2C.\n- [NUCLEO-H563ZI](examples/nucleo-h563zi/README.md): same demo story on the\n  simulator and a physical STM32H563ZI Nucleo board, with committed validation\n  artifacts.\n- [NUCLEO-L476RG](examples/nucleo-l476rg/README.md): survival and validation\n  traces for an STM32 Nucleo target.\n- [Seeed XIAO nRF52840 Sense](examples/seeed-xiao-nrf52840-sense/README.md):\n  nRF52840 board coverage with UART/GPIO/SPI smoke paths.\n- [UDS on STM32F103](examples/f103-uds-ecu/README.md) and\n  [UDS on STM32H563](examples/h563-uds-ecu/README.md): CAN/UDS-oriented\n  firmware examples.\n- [IO-Link DIDO](examples/iolink-dido/README.md): IO-Link device-oriented\n  system wiring and smoke test.\n\nFor the broader list, see [docs/demos.md](docs/demos.md). Treat each example's\nREADME and validation file as the source of truth for what is actually modeled.\n\n## Validation Model\n\nLabWired distinguishes between three levels of confidence:\n\n- **Modeled**: a chip, peripheral, bus, or external device has simulator logic\n  behind it and can execute firmware behavior.\n- **Smoke-tested**: a repository test or example script exercises that model\n  and checks observable output.\n- **Hardware-compared**: captured hardware behavior is compared with simulator\n  behavior for a documented scope.\n\nThe H563 example is the best place to inspect hardware-comparison artifacts:\n\n- [`examples/nucleo-h563zi/golden-reference/determinism_report_h563.json`](examples/nucleo-h563zi/golden-reference/determinism_report_h563.json)\n- [`examples/nucleo-h563zi/VALIDATION.md`](examples/nucleo-h563zi/VALIDATION.md)\n- [`docs/golden_reference.md`](docs/golden_reference.md)\n\nThose reports are evidence for the scope they describe. They are not a blanket\nclaim that every instruction, peripheral, or timing path matches hardware.\n\n## Repository Scope\n\nThis repository owns the core simulator and its validation assets:\n\n- CPU, bus, memory, peripheral, and external device execution.\n- Chip and system descriptors in [`configs/chips`](configs/chips/) and\n  [`configs/systems`](configs/systems/).\n- CLI, test runner, debug adapters, and snapshot/trace tooling.\n- Hardware-target validation metadata consumed by catalog and app surfaces.\n\nApplication UI, hosted playground behavior, and product-specific surfaces live\noutside this core package.\n\n## CI and Release Signals\n\nThe main merge gate is [`.github/workflows/core-ci.yml`](.github/workflows/core-ci.yml):\nformatting, linting, build, and integration tests.\n\nAdditional workflows publish narrower signals:\n\n- [`core-board-ci.yml`](.github/workflows/core-board-ci.yml): board/example\n  smoke coverage.\n- [`core-coverage.yml`](.github/workflows/core-coverage.yml): coverage checks.\n- [`core-unsupported-audit.yml`](.github/workflows/core-unsupported-audit.yml):\n  unsupported instruction audits.\n- [`core-nightly.yml`](.github/workflows/core-nightly.yml): broader scheduled\n  validation.\n- [`core-validate-hw-targets.yml`](.github/workflows/core-validate-hw-targets.yml):\n  onboarding target sweep and catalog metadata.\n\nFor release mechanics, see [RELEASE_PROCESS.md](RELEASE_PROCESS.md) and\n[RELEASE_READINESS_CHECKLIST.md](RELEASE_READINESS_CHECKLIST.md).\n\n## Documentation\n\n- [Docs index](docs/index.md)\n- [Architecture overview](docs/architecture_overview.md)\n- [Engine architecture](docs/architecture.md)\n- [CLI reference](docs/cli_reference.md)\n- [CI test runner](docs/ci_test_runner.md)\n- [Configuration reference](docs/configuration_reference.md)\n- [Board onboarding playbook](docs/board_onboarding_playbook.md)\n- [Target support rubric](docs/target_support_rubric.md)\n- [Debugging](docs/debugging.md)\n- [PlatformIO integration](docs/platformio_integration.md)\n- [Agents manual](docs/agents.md)\n\n## Contributing\n\nUse [CONTRIBUTING.md](CONTRIBUTING.md) for repository workflow and\n[docs/agents.md](docs/agents.md) for AI-agent-specific guidance. For security\nissues, see [SECURITY.md](SECURITY.md).\n\n## License\n\nMIT. See [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fw1ne%2Flabwired-core","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fw1ne%2Flabwired-core","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fw1ne%2Flabwired-core/lists"}