Build on your PC. Run on your Amiga. Deploy, debug and drive a real Amiga over the network - from a Linux, macOS or Windows PC, a phone, an Amiga script, or an AI assistant. Any Amiga with AmigaOS 2.04 or later and a network: from a 68000 A600 on Workbench 2.05 to a PiStorm A1200 on OS 3.2.
The demo (1 min 54 s): deploy, live debugging, the DOS call trace and an AI agent, all on a real A1200.
Wasabi is two programs: wasabid, a small daemon on the Amiga, and
wasabi, a client on the PC (one Python file, standard library
only - or one ready-made file for Linux, macOS and Windows). Together they copy files, run programs, show and drive the
Amiga's screen, and let you watch the machine think - its debug output
and its DOS calls, live, while your code runs on real hardware.
| Files | upload and download anywhere, any size (4 GB tested); an upload never leaves half a file in place |
| Run | run a command with its output streaming back and its real exit code; four at once; a time limit; start in the background |
| Deploy | upload and run, or upload and reboot, in one step |
| Debug output | every KPrintF() the Amiga prints, live on the PC - no serial cable |
| DOS call trace | SnoopDOS-style: 30 dos, exec, icon and diskfont calls with caller and result, filtered by task |
| Crash reports | the guru code and the dying task, kept across a reboot |
| Tasks | every task with its stack headroom; stop one by name |
| Self-update | wasabi update checks a new daemon four ways before it replaces the running one |
| Screenshots | the front screen, one window or a region, RTG and native, as PNG; compare with an earlier one |
| Live view | the Amiga's screen in a window, driven with your mouse and keyboard; only changes are sent |
| Mouse | click, double-click, drag, drive menus, the wheel; ask where the pointer is |
| Keyboard | type text through the Amiga's own keymap (å, ä, ö, @ come out right); any key by name - F1-F12, Home, End, Page Up/Down, the keypad - or by raw code |
| Windows and screens | every screen and window as text: title, place, size, owner; bring one to the front |
| Wait | for a window, a task or a file to appear or go, or for the screen (a window, a region) to change or settle |
| Has it changed? | a checksum of the screen, a window or a region, worked out on the Amiga - eight bytes instead of a picture |
| Timed input | a drag, a key chord or a burst of typing in one request, played by the Amiga with exact gaps of 1/50 s |
| Coordinates | the picture's pixels, or with --native the screen's own |
$ wasabi ui list --window "Address Book" # DCTelnet 1.10
row 0 "Retro32 BBS" at 122,146 397x16 [selected]
row 1 "TeleHack simulation" at 122,162 397x16
button "Connect" at 129,300 93x26
$ wasabi ui click telehack --double
$ wasabi ui menu "Project/Quit"
- Gadgets - buttons, text fields, checkboxes, choosers, sliders, by their label or their GadgetID; fill a text field in one step.
- Menus - pick an item by its path or name, without the mouse.
- List rows - the entries of a list, clickable by their text.
- Where it works - Intuition, GadTools, ReAction, MUI 3.8, 4 and 5, and system requesters.
More: Gadgets and menus by name
wasabi desktop- Overview (temperature, CPU, memory, disks), the live Screen, a two-pane file manager, Screenshots, and Developer tools (debug output, DOS calls, tasks, run slots, a command line). Several Amigas in one picker.wasabi serve- the same app on a phone, from a NAS or any Docker host: a login, history of the last day, alerts to your phone (heat, power dips, the Amiga going quiet, a guru), and a nightly backup of the Amiga's boot volume.
wasabi arexx PORT COMMAND- send to any program's ARexx port and get its RESULT; list the ports.wasabi rexx 'say 1+1'- run an ARexx program; its output comes back and its rc is the exit code.- The
WASABIARexx port - Amiga scripts and programs can type, press keys, click, click gadgets by name and pick menus, with no PC involved.
- For scripts -
--jsonon everything that lists, clear exit codes, time limits,waitinstead of sleeping. - Python API (
wasabi_client.py) -import wasabi_client: connect, run, files, keys, mouse, timed input, grab, windows, gadgets and menus, ARexx, as a documented, versioned API. - MCP server (
wasabi mcp) - 28 tools for Claude Code, Claude Desktop, Codex, Gemini CLI, Cursor and other MCP clients: run, files, screenshots, "has this changed?" checksums, mouse, keyboard, gadgets and menus by name, ARexx, waiting, running commands and stopping them.
The Pi's temperature, voltage and clocks, every power dip or overheat since it started, Emu68's live 68k CPU meter and JIT cache, free memory, the last guru. More: Health
- Answers only the local network (and VPN ranges you allow).
- A key, checked on every connection.
- Optional encryption - TLS 1.3 with your own certificates when the Amiga has AmiSSL; once an Amiga has been reached encrypted, the PC never quietly drops to plain with it.
From the latest release:
| File | For |
|---|---|
wasabid |
the Amiga, any 68k CPU |
wasabid.020 |
the Amiga, 68020 or better (a stock A1200, accelerators, PiStorm) |
wasabi-linux-x86_64, wasabi-linux-arm64 |
Linux PCs and the Raspberry Pi - one file, no Python needed |
wasabi-macos-arm64, wasabi-macos-x86_64 |
Macs with Apple Silicon or Intel |
wasabi-windows-x64.exe |
Windows |
wasabi |
the client as a Python script, for any system with Python 3 |
wasabi_client.py |
the Python API, for your own scripts and test rigs (beside wasabi) |
The one-file clients carry everything: the command line, the desktop
app (it opens in your browser), the phone server and the MCP server
(wasabi mcp). They are not signed: on a Mac run
xattr -d com.apple.quarantine wasabi-macos-* once; on Windows choose
"More info", then "Run anyway".
- On the Amiga - copy
wasabidorwasabid.020toC:wasabid, choose a key, start it. Add the last two lines toS:User-Startupto have it at every boot.On OS 2.x,SetEnv SAVE wasabi.key choose-a-key Run >NIL: C:wasabidSetEnvhas noSAVE: useSetEnv wasabi.key choose-a-keyandCopy ENV:wasabi.key ENVARC:instead. - On the PC - rename the download to
wasabi(wasabi.exeon Windows), make it executable on Linux and Mac (chmod +x), put it on your path, and give it the key.(On Windows the config goes inmkdir -p ~/.config/wasabi && echo 'key = choose-a-key' > ~/.config/wasabi/config wasabi ping # finds the Amiga by itself wasabi desktop # the app%USERPROFILE%\.config\wasabi\config.) - Encryption (optional, needs AmiSSL 5 on the Amiga):
wasabi keys init,wasabi keys amiga NAME,wasabi restart.
More: Installing and updating - every command.
wasabi info / health what runs there; the Pi's vital signs
wasabi put LOCAL REMOTE / get files both ways
wasabi run --max-time 30 "CMD" run, stream its output, its exit code
wasabi grab [--window T|--region X,Y,W,H] a screenshot (PNG)
wasabi sum [--window T] [--since SUM] has it changed? (no picture)
wasabi view / desktop the live screen / the whole app
wasabi ui list | click NAME | menu PATH | set NAME TEXT
buttons, menus, fields, list rows
wasabi mouse click X Y / where the pointer
wasabi key type TEXT / press KEYS the keyboard (return, f12, ramiga+q, 0x45)
wasabi arexx PORT COMMAND ARexx
wasabi debug / snoop debug output / the DOS call trace
wasabi update wasabid replace the daemon, checked first
| Amiga | AmigaOS 2.04 or later (2.05, 3.1 and 3.2 tested), any 68000 or better, and a TCP/IP stack with bsdsocket.library. AmiSSL 5 only for encryption; MUI (3.8, 4 or 5) only to read MUI windows; list rows in GadTools windows need OS 3. |
| Memory | about 200 KB for the daemon (0.11b2; 0.10, the current release, about 520 KB); AmiSSL adds about 3.5 MB when encryption is on. A screenshot, the live view and the DOS call trace borrow more while they run. |
| PC | Linux, macOS or Windows - the one-file downloads need nothing else; the script needs Python 3. OpenSSL 3 to make encryption keys. |
| Phone app | any Docker host on the Amiga's network (tools/docker-compose.yml). |
| Tested on | an A1200 with PiStorm32-lite/CM4 on Emu68 (OS 3.2.3, rondoval's lwIP stack); FS-UAE as an A1200 with a 68030, as a stock 68020 (OS 3.1 and 3.2, with MUI 3.8 and MUI 5), and as a stock A600 (68000, Workbench 2.05). 283 client tests on Linux and macOS for every change; the one-file clients built and smoke-tested on Linux, macOS and Windows for every release. |
| Installing and updating | the daemon, the client, self-update, building |
| Change log | what changed in each version, betas included |
| Commands | every command and option |
| Python API | import wasabi_client: every call, with examples |
| The screen and the GUI | screenshots, the live view, mouse and keys, coordinates, gadgets, menus and lists by name, ARexx |
| Apps | the desktop app, Wasabi phone, health, the clipboard |
| Debugging | debug output, the DOS call trace, crash reports, stack headroom |
| Scripts and AI | JSON, exit codes, waiting, the MCP server |
| Security | who may connect, encryption |
| Design and status | what works where, measurements, why it is built this way, plans |
| PROTOCOL.md | the wire format |
MIT - see LICENSE.



