neuron-explorer
Steering-first neuron explorer for Qwen3.5-4B: push every MLP neuron, keep every rollout, browse the results
Build with blocks, read and edit as Python or JavaScript, and drive real LEGO bricks and robots.
Developer toolsJavaScript · CGitHub @CrispStrobeOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Scratch plus blocks⇄code⇄Python/JS/C, extended Designer, Circuits, 8051 / 6502 (ben eater style) / stc / Arduino AVR emulation, etc. BSD-3/Apache/MIT licensed. Web plus Tauri app for macOS/Windows/Linux/iOS/Android with LEGO Bluetooth (BLE + Classic) extensions, etc.
Taken from the repository README
Loading the full README. The saved excerpt is shown below.
Build circuits. Program machines. See how they work.
Brickwright is an open-source visual computing workbench. Build and measure
circuits, program with blocks or code, run emulated machines, debug them live,
and follow guided lessons — in a browser or the native app.
For learners discovering electronics and microcontrollers.
For teachers who need a zero-install lab that runs on school Chromebooks.
For retro-computer builders wiring Z80 and 6502 machines on virtual
breadboards before soldering the real thing.Read the full README ↗Build circuits. Program machines. See how they work.
Brickwright Lite is a free, open-source workbench for electronics and programming that runs entirely in a web browser, and as a native desktop and mobile app. You wire up a circuit on a virtual breadboard and watch it behave, write a program as Scratch blocks or as real code, run that program on an emulated chip or a real one, step through it in a debugger, and follow guided lessons the whole way.
Try it now (web): https://brickwright-lite.vercel.app ·
https://crispstrobe.github.io/brickwright-lite — both auto-deploy from main.
Native apps: CI builds signed binaries for macOS, Windows, Linux, iOS and
Android (see the repository's Actions and Releases).
Drag parts onto a breadboard, wire them together, and press the green flag. An analog circuit engine uses modified nodal analysis to solve supported electrical models. State and measurements follow simulation time, independently of display frames, so you can see node voltages, LED brightness and meter readings as you change things. Model coverage and accuracy vary by component; a successful numerical solve is not physical-device certification.
For repeatable headless measurements, the pinned bw-circuit-ui package also
provides the bwc CLI: voltage traces, signed meter readings, finite streaming
captures, saved receipts and explicit reference comparisons. Invoke it with
node node_modules/bw-circuit-ui/bin/bwc.mjs. See the
CLI instrument guide
for supported models, sample rates and bounded precision captures. CLI and GUI
acquisition limits differ; neither implies an unmodelled oscilloscope front end.
The editor is a Scratch-style block canvas. A Code tab shows the exact same program as text, and you can edit either side; the two stay in sync.
fe) tabs. It reads hand-written code back
too: edit the C or BASIC a program became and import it to blocks again.The green flag starts the Scratch scripts and the circuit simulation together. A LEGO SPIKE App 3 Python program can also be imported and run on the virtual hub. The full language-and-target table is in the code-tab language/device bridge.
Extensions and media. 23 extensions ship built in (the LEGO family, gamepad, arrays, text-to-speech, camera, a bridge to the circuit surface, GPIO, and more), plus 150 reviewed extensions available from the gallery on the web. A sound-effects creator and a full German translation sit alongside English.
The costume and sprite editor is Scratch's, extended into a capable vector and bitmap design tool.
Programs run on instruction-level emulators you can run, pause, single-step, reset, and inspect register-by-register and byte-by-byte in memory.
ELF, Intel HEX and UF2
files: BBC micro:bit v2, Adafruit PyBadge, LEGO SPIKE Prime,
LEGO MINDSTORMS EV3, Arduboy, and ATtiny boards.Different targets run on different emulation cores, and each states which peripherals it models rather than pretending: the permissively licensed avr8js (AVR) and rp2040js (RP2040) JavaScript cores; LabWired, a native core compiled to WebAssembly, for the micro:bit and PyBadge; a Renode-derived boundary for the LEGO SPIKE Prime and MINDSTORMS EV3 firmware targets; an LGPL Bochs core for the 80386 AT PC (a native 386 core is in progress); and small in-house cores for the Z80, 6502 and 8086/80286 machines. Output appears on the Widgets pane (screens, LEDs, GPIO strips); a Debug view adds a serial console and video. The emulators clear real-time speed on the established targets in the browser; the exact per-target numbers, the shipped-versus-candidate matrix, and the remaining gaps live in board targets and emulator performance.
For x86 programs, raw floppy/HDD images and DOSBox configs, see the GUI loading guide, what backends and formats are in scope, the upstream CLI/GUI loading guide, and the x86 checkpoint and next lanes, which keeps reached evidence separate from pending work.
Two things ship in every build:
npm run render:fpga). It is for reading and documenting how logic
is wired.Behind the build flag BW_ENABLE_FPGA there is a fuller, still-experimental
digital-logic lab: write Verilog, synthesise it to a gate netlist
(locally, in a WebAssembly Yosys worker, or through a hosted service), bind its
ports to board pins with a Gowin .cst constraints file, and drive the LEDs on
the virtual Tang Nano through the same analog solver that runs the breadboard —
stepping the clock and mirroring the result into the Widgets view. The same
design can be read as a schematic, truth table, waveform, or gate netlist
with a node inspector; you can build equivalent logic from CMOS transistors or
74-series logic ICs, and work through guided challenges. Because compiling a
GPL-licensed source on a server and returning a bitstream would distribute a
derivative work, the hosted route refuses GPL sources by name and points them at
the local WebAssembly tier, which conveys nothing off your machine.
Real-hardware bitstream flashing is scaffolded but not yet functional, and the lab is off by default. See the Tang Nano notes for the exact state.
MakeCode embeds its own source inside everything it downloads, so Brickwright can open a cartridge and recover the project, not just the machine code.
.hex, .uf2, .elf or .png file: a micro:bit
project comes back as blocks; a MakeCode Arcade game comes back as a
Scratch project — sprites with their real artwork, overlaps mapped to
touching, the controller mapped to the arrow keys, and levels painted whole
as backdrops..hex (from python.microbit.org or uflash) needs
no translating — the simulator runs it as it is..hex that
makecode.microbit.org opens again..hex directly in the
simulator), and an imported Arcade game plays through the Scratch renderer
and the game console (display, controls, tilt and NeoPixels where present).Both directions are also available from the command line — bwlite makecode …
and bwlite convert — using the same readers as the in-app Code tab.
bwlite devices / bwlite retarget; the installed SDCC compiler turns your
pseudocode or C into Intel HEX and stcgal flashes it over a serial port. The
toolchain models each part's own timers and second UART baud source, and the
1-clock STC12/STC15 cores run far faster than the classic 12-clock STC89..lms bytecode), NXT (NXC), and Boost, WeDo 2.0 and Powered
Up over Bluetooth LE or Classic — and the classic 1998 MINDSTORMS RCX,
whose blocks compile to .rcx bytecode through an in-browser NQC
compiler and download to the brick over a Web Serial infrared tower (you
supply the RCX's own firmware). The native app's own ScratchLink provides
BLE + Bluetooth Classic (plus a WiFi/USB bridge for SPIKE) with no browser or
separate install.Three first-run journeys each lead to a working circuit, board, or LEGO project. A searchable English/German catalog then teaches circuits, safe measurement, the programming representations, debugging, controls, and machine architecture. Lessons sit beside the live project and use prediction, observation, hints, resumable progress, and manual fallbacks — not a click-through slideshow.
One Tauri 2 project produces apps for macOS, Windows, Linux, iOS and
Android. They add an offline asset library, camera and microphone access,
native .sb3 save/load/share, file associations and deep links, and the native
Bluetooth transports above.
bwlite is this repository's CLI (the older bw command belongs to the
separate sb3-creator compiler repo). A .bw file is Brickwright pseudocode.
After the web-build setup has populated packages/, run npm link once to put
bwlite on your PATH (or use npm run cli --).
bwlite --help
bwlite spike probe
bwlite spike run scripts/spike/example-usb-stream.bw
bwlite convert program.bw --to sb3 --out program.sb3
bwlite convert program.bw --to c --out program.c
bwlite read program.c --out recovered.bw
bwlite 8051 build program.bw --out program.ihx
bwlite 8051 flash program.ihx --port /dev/cu.usbserial-XXXX
bwlite toolchain status
bwlite machine validate machine.json
convert reads .bw, .sb3, .c, .py, .js and .bas, and writes
pseudocode, SB3, C, host C, Python, JavaScript, MicroPython or BASIC — using the
same pinned SB3Creator and language readers as the Code tab. 8051 build
uses installed SDCC; 8051 flash uses installed stcgal and an explicit
serial port (and the STC's usual cold power-cycle into its ISP bootloader).
machine manages emulator configurations and boot plans; toolchain, fpga
and makecode forward to their repository CLIs.
SPIKE over USB needs LEGO MINDSTORMS MicroPython firmware and Python with
pyserial. See the CLI guide (it maps old bw references to
current commands), the USB bridge guide,
and the MINDSTORMS .lms guide.
npm ci --ignore-scripts --no-audit --no-fund # root tooling + pinned engine/UI packages (Node 22)
npm run vendor # fetch pinned sources into packages/
node scripts/integrate.mjs # overlay our changes
cd packages/scratch-gui
npm install --ignore-scripts --legacy-peer-deps
node ../../scripts/apply-vm-overlay.mjs # built-in extensions + upstream fixes
node ../../scripts/apply-paint-overlay.mjs # the extended costume designer
node ../../scripts/apply-render-overlay.mjs # text costumes wait for the lazy render fonts
NODE_ENV=production npm run build # -> build/
build/ first)cd apps/tauri && npm ci
npx tauri dev # desktop
npx tauri android build --apk # or: npx tauri ios build
For an installable physical-iPad development package, use the production asset pipeline even when signing with an Apple Development profile:
cd apps/tauri && npm run ios:device-build
Do not package a device app with tauri ios dev --no-dev-server: it compiles
Tauri in development mode, where tauri://localhost expects a live dev server
instead of serving the embedded web build, so the app installs but cannot open
its start page offline. CI builds every
platform in .github/workflows/release.yml (desktop) and mobile.yml (Android
APK + iOS simulator).
npm run render:fpga -- design.v --output render --title "My circuit"
Use --expand-depth 0 for macro boxes, --expand-depth 2 to expose another
level, --top module_name when a file has several candidates, and
--max-expanded-instances to adjust when large arrays collapse.
See the target handoff for the current state and actionable lanes, PLAN.md for the working sequence, and ROADMAP.md for the engineering backlog.
Brickwright Lite is built on the last BSD-3-licensed release of the Scratch
editor stack (see Licensing below for why). Rather than fork those
repositories, it pins exact versions, keeps its own copies of only the files
it changes in overlay/, and copies them over the vendored sources at build
time:
overlay/scratch-gui/ <- GUI files we own
overlay/scratch-vm/ <- built-in extensions + registration
apps/tauri/ <- the Tauri 2 native app
scripts/
vendor.mjs <- fetch pinned sources into packages/ (gitignored)
integrate.mjs <- copy overlay/ over the vendored GUI
apply-vm-overlay.mjs <- lay the VM overlay onto node_modules/scratch-vm
apply-paint-overlay.mjs <- the extended costume designer
apply-render-overlay.mjs<- text costumes wait for the lazy render-fonts chunk
The runtime is layered: sb3-creator converts between representations, local
or hosted compilers produce executable images, bw-circuit-ui builds circuits,
bw-board supplies machines and debug adapters, and bw-debug records,
inspects and replays. A project saves Scratch content plus Brickwright Code,
Circuit and Controller state in one .sb3 sidecar.
Upstream integrity. bw-board and bw-circuit-ui are installed from exact
git SHAs; sb3-creator, the only vendored upstream, is checked for pinned byte
identity and matching tracked mirrors. Shared behavior lands in its upstream
repository first and reaches Lite through an explicit pin move. The enforced
invariants are in the vendoring regime; check
LANES.md before claiming implementation. A new claim is its own file,
lanes/<YYYY-MM-DD>-<slug>.md; new PRs never edit LANES.md.
With Node 22 or newer, run the bounded source-only suite without preparing the generated GUI tree:
npm ci --ignore-scripts --no-audit --no-fund
npm run check:setup
npm run test:source
Root tests import owned GUI modules from overlay/scratch-gui; the generated
packages/scratch-gui/src is not a test input. Tests that need vendored
dependencies or assembled build artifacts still require the full vendor,
integrate, GUI dependency install, and VM/paint/render overlay steps; run
npm run check:setup -- --integrated to verify that runtime first.
The browser and the shipped app use only permissively licensed execution paths. External emulators are developer-side test oracles — they cross-check our results in CI and are never bundled into the product or its dependency graph:
ucsim-stc (GPL) — an STC/8051 oracle, paired with the MIT emu8051-stc
differential runner.simavr — an optional external AVR hardware/peripheral oracle.cemeyer/avr-emu and Gregwar/avrel — independent CPU-level cross-checks.GPL/AGPL oracle code stays outside the product entirely.
Brickwright Lite's application code is BSD-3-Clause. The shipped dependency set is open source under BSD-3-Clause, Apache-2.0, MIT and MPL-2.0 — no GPL or AGPL code is bundled. THIRD-PARTY-NOTICES.md has the exact file-and-package inventory.
The Scratch Foundation relicensed its whole stack from BSD-3-Clause to AGPL-3.0
on 2024-11-25 (scratch-gui commit 3de24da0). Brickwright Lite pins the last
BSD-3 commit of each component:
| Component | Pin | License |
|---|---|---|
| scratch-gui | 7a72429477eb (v4.1.7, 2024-11-23) | BSD-3-Clause |
| scratch-blocks | 1.3.0 | Apache-2.0 |
| scratch-vm | 4.8.115 | BSD-3-Clause |
| scratch-paint | 2.2.518 | BSD-3-Clause |
| scratch-render / audio / storage / svg-renderer | pinned | BSD-3-Clause |
Do not swap in
[email protected]— it is a ground-up Blockly rewrite incompatible with the v4 GUI.
Web and native editions can opt into separately distributed GPL tools or
media, with each tool's license and corresponding source shown at the point of
download; those user-initiated downloads stay separate from the BSD-3
application. A review-specific, self-contained build can disable remote
toolchains, machine images and extension JavaScript at compile time with
BW_REMOTE_CODE_POLICY=deny (the normal build policy is allow). The narrower
BW_REMOTE_EXTENSIONS_POLICY, BW_REMOTE_TOOLCHAINS_POLICY and
BW_REMOTE_MACHINE_IMAGES_POLICY variables override that umbrella
independently, so a review channel does not disable unrelated features.
The 23 extensions under overlay/scratch-vm/src/extensions/crispstrobe/ are
20 MPL-2.0 and 3 MIT. MPL-2.0 is file-level weak copyleft: the files may be
combined into a larger work under other terms, provided the MPL files stay MPL
and their source stays available — it is, in this repository. The upstream
TurboWarp/extensions gallery's GPL-3.0 covers its images, dev server and
website, not the extension code, and none of that is vendored here.
This was established by re-runnable checks, not by trust:
| check | result |
|---|---|
| license header of every bundled extension | 20 MPL-2.0, 3 MIT, 0 GPL |
| our 21 gallery extensions vs 129 third-party, distinctive lines ≥ 60 chars | 0 shared of 3,114 |
| bundled vs upstream TurboWarp's own extensions | 0 shared |
| bundled vs every copyleft-flagged third-party extension | 0 shared of 424 |
| gallery images / dev server / site code vendored | none |
Brickwright Lite freezes a BSD-licensed Scratch stack (so upstream security and compatibility fixes must be ported deliberately) and does not use TurboWarp's compiler or addon system. In exchange it ships its own electronics, debugger, lesson and native-device layers — including direct LEGO Bluetooth — without depending on TurboWarp. Brickwright Lite is not a TurboWarp fork.
Brickwright Lite is an independent project. Not affiliated with or endorsed by Scratch, MIT, LEGO, STC, Arduino, or Raspberry Pi, nor by the makers of the circuit file formats the Circuit tab imports and exports (KiCad, EasyEDA, EAGLE, LTspice). All trademarks belong to their owners. It is likewise not authorized or sponsored by any company whose products, hardware, file formats or trademarks it names for compatibility.
In particular, LEGO®, SPIKE™ and MINDSTORMS® are trademarks of the LEGO Group, which does not sponsor, authorize or endorse this project; the virtual SPIKE hub is an independent reimplementation and bundles no LEGO firmware (the LEGO MINDSTORMS MicroPython firmware that real-hardware USB use requires is supplied by the user). Scratch is a trademark of the Scratch Foundation / MIT; micro:bit is a trademark of the Micro:bit Educational Foundation; MakeCode is a Microsoft project; and Arduino, Raspberry Pi, STC, Adafruit, Arduboy, and the circuit file formats the Circuit tab reads and writes (KiCad, EasyEDA, EAGLE, LTspice) are trademarks of their respective owners.
All such names are used only to identify compatible hardware, software and file formats. Their use does not imply any affiliation or endorsement, and all trademarks remain the property of their respective owners.
The virtual SPIKE hub uses an independent simulator backend for Scratch and native programs, with shared arena state and deterministic motor control; supported LEGO SPIKE App 3 Python imports run through the same virtual hub.