
Website · Docs · PyPI · Pricing · Careers
Simantic runs your real firmware binary on a simulated microcontroller — the core, the peripherals, and the things wired to them. Nothing to plug in, nothing to flash, no probe on the desk.
Because the whole machine is software, you can do things a bench cannot:
- See inside. Read any variable, register, or RTOS thread while the firmware runs, without halting it.
- Poke it. Press buttons, send CAN frames, feed a radio — from a script.
- Repeat exactly. Time advances only when you ask, so a run comes out the same on your laptop and in CI.
pip install simanticfrom simantic import Sim
with Sim(elf="fw.elf", mcu="STM32F401RE", uart="usart2") as sim:
sim.expect("ready")
sim.inject_gpio("gpioc", 13, True) # press the user button
sim.expect("button pressed")
assert sim.read_u32("press_count") == 1That is a whole test — no probe, no breakpoint, no waiting on hardware. The simulator runs inside your Python process, so there is no server to start.
The Python SDK is alpha (0.3.x) and the API can still change without a deprecation period. Pin an exact version if you depend on it, and tell us what breaks.
| Repository | What it is |
|---|---|
| pippy | The simantic Python SDK and pytest plugin — on PyPI. MIT. |
| homebrew-simantic | Homebrew tap for the sim CLI: brew tap simantic-dev/simantic && brew install simantic. |
| crosspoint-reader | Open-source e-reader firmware for the Xteink X3/X4 — and a real target we simulate. |
Most of the platform — the simulation engines, the MCU and peripheral models, and the board tooling — is still developed privately while we are in alpha. Documentation for those parts is at simantic.dev/docs.
- Questions and bug reports — open an issue on the relevant repository.
- Security issues — see our security policy. Please do not open a public issue.
- Everything else — email
founders@simantic.dev.
We are hiring: open roles.
Simantic, Inc. · simantic.dev · LinkedIn