Back to Projects

Geto Web IDE

A browser-based MicroPython + FPGA IDE for the Vicharak Shrike-Lite — v0.1.0

Launch IDE GitHub Docs Changelog

Overview

Geto Web IDE (repository name: Shrike Web IDE) is a browser-based development environment for the Vicharak Shrike-Lite, a board that pairs an RP2040 microcontroller with a small FPGA. You plug the board in over USB, press Connect, and can write MicroPython, run it on the board, watch live output, manage the board's files, and load FPGA designs, all inside one browser tab.

The project was created because getting started with a microcontroller + FPGA board normally means installing several tools, picking the right board packages, and learning how each part talks to the others. Geto removes that setup entirely: there is no account, no installer, and no server, and projects stay in your browser. It talks to the hardware directly through the Web Serial API.

Key Features

Screenshots & Demo

Technologies & Tools

TypeScript Vite Web Serial API MicroPython raw REPL CodeMirror 6 xterm.js Vitest GitHub Actions CI Cloudflare Pages Git / GitHub

Architecture & Workflow

Geto is a fully client-side single-page app. A serial transport layer opens the board through Web Serial, and a raw-REPL layer on top of it runs Python on the device, the same mechanism tools like Thonny and mpremote use. There is no host-side filesystem API: the device file manager lists, reads and writes files by executing plain Python (os, open, binascii) on the board and moving data in hex-encoded chunks, with checks so a saved file matches what was sent.

On top of that sit the editor, terminal, file explorer, FPGA tools and firmware updater, all talking to a single device session. Projects live in browser storage, and the finished build is a static site hosted on Cloudflare Pages.

Getting Started

You'll need a Shrike-Lite (or compatible Shrike board) running Vicharak's MicroPython firmware, a USB-C data cable, and Chrome or Edge on a desktop. Then open ide.adeepag.com, press Connect, and try this in the terminal:

import machine print(machine.freq())

To run the IDE locally (Node 18+):

git clone https://github.com/ADEEP13/IDE.git cd IDE npm install npm run dev

Challenges Faced

Challenge: Managing files on a board from a browser, where there is no filesystem access to the device.
Solution: Implemented all file operations as plain Python executed over the raw REPL, transferring data hex-encoded in chunks and verifying saves so the file on the board matches the file sent.

Challenge: Runaway programs and leftover state making experiments unreliable.
Solution: Added a configurable run timeout, an instant Stop that interrupts the running program, and an optional soft reset before every run.

Challenge: Browsers cannot write into the board's bootloader drive, so firmware updates can't be fully automatic.
Solution: Built a firmware updater that detects the chip, downloads the right build, and says clearly when a manual BOOTSEL step is still needed instead of claiming something was flashed when it wasn't.

Results & Impact

Geto Web IDE is live at ide.adeepag.com and works on any desktop with Chrome or Edge, with nothing to install. It covers the full beginner workflow on the Shrike-Lite (write, run, stop, manage files, flash the FPGA) in one window, which makes it suited to learning, classrooms and workshops where installing tools on every machine isn't practical. Beyond its practical use, it has been a hands-on project in Web Serial, device protocols, a typed multi-module TypeScript codebase, automated testing and CI, and static deployment.

Current Limitations

Development Timeline

v0.1.0 — Initial Release
Editor with project files, tabs, autosave and ZIP download; device file manager; run/stop/soft reset with streamed terminal; multi-device selection; FPGA checks, bitstream upload and flashing; firmware detection and download.
In Progress
Testing and hardening on real Shrike-Lite hardware, and fixing rough edges reported from early use.

Links

License

Geto Web IDE is released as an open-source project under the MIT License. See the LICENSE file in the GitHub repository for details.

Contributors & Acknowledgements

Built and maintained by Adeep AG for the Vicharak Shrike boards, using CodeMirror and xterm.js. Shrike and Shrike-Lite are products of Vicharak. Bug reports, feature requests and focused contributions are welcome through the GitHub repository.

Contact & Support

Found a bug or have a question? Open an issue on GitHub, or reach out through the contact page.