Skip to content

Releases: creep-ltx/wasabi

Wasabi 0.10.1

Choose a tag to compare

@creep-ltx creep-ltx released this 24 Oct 06:12

Wasabi 0.10.1 - a fix for the phone server (wasabi serve, the Docker container). The Amiga side is unchanged: keep wasabid 0.10 (its files are on the 0.10 release).

  • The phone server no longer restarts every minute while the Amiga is off. It stopped when no Amiga answered at start, so a container with restart: unless-stopped came back once a minute, and a Synology NAS sent an e-mail about every restart. Now it serves the last Amiga it knew and connects when that Amiga is back; if it has never found one, it tries again every 30 s instead of stopping.

Updating

  • Docker (tools/docker-compose.yml): git pull in your copy of this repository (or replace its wasabi file with the one below), then restart the container.
  • The one-file programs (wasabi-linux-*, wasabi-macos-*, wasabi-windows-x64.exe): download the new one from this page. They appear a few minutes after the release.
  • The Python script: replace wasabi with the one below.

Tested: 283 client tests on Linux; on a Synology NAS and on Linux with the Amiga switched off (the page kept answering, no restarts).

wasabid 0.11b2 (beta)

wasabid 0.11b2 (beta) Pre-release
Pre-release

Choose a tag to compare

@creep-ltx creep-ltx released this 17 Oct 06:46

The Amiga side only: a new wasabid, about a third less memory than 0.11b1 (about 200 KB instead of 307 KB on an A600). The PC, Mac and Windows programs from 0.10 work with it unchanged.

  • wasabid - any 68000 or better
  • wasabid.020 - 68020 or better (a stock A1200, any accelerator)

Update a running Amiga with wasabi update wasabid.020 (or wasabid), or copy it to C:wasabid and restart it.

What changed: the 64 KB buffer for incoming messages is only taken for big messages and downloads; encrypted sending uses 16 KB instead of 64 KB; the live view, ARexx and palette buffers are given back after use; the program is built for size, with screen grabs and the live view still built for speed. Tested on an A1200 (Emu68, OS 3.2.3) over TLS and in FS-UAE (A600, Workbench 2.05). Full details in CHANGELOG.md.

This is a beta.

Wasabi 0.10

Choose a tag to compare

@creep-ltx creep-ltx released this 15 Oct 09:29

Wasabi 0.10 - timed input, gadgets by id, ARexx programs and a Python API, mostly from spotUP's list for UP-Term's test rig.

  • Timed input: wasabi input sends a drag, a key chord or a burst of typing in one request, and the Amiga plays it with fixed gaps of 1/50 s, so the network no longer changes the timing.
    wasabi input "down 100 50" "move 180 50" "wait 5" "up"
  • Gadgets by id: ui list shows each gadget's GadgetID, and ui click --id N / ui set --id N TEXT use it. It stays right when a window is laid out differently. MUI objects report their MUIA_ObjectID.
  • ARexx programs: wasabi rexx 'say 1+1' runs an ARexx program; its output comes back and its rc is the exit code. wasabi arexx REXX ... and arexx AREXX ... now do the same (ARexx's own ports take a script's name, not its text, and AREXX never answers).
  • A Python API: wasabi_client.py, documented and versioned (API 1.0), for your own scripts and test rigs: connect, run, files, keys, mouse, timed input, grab, windows, gadgets and menus, ARexx, the clipboard. Put it beside the wasabi script. See docs/api.md.
  • MUI 3.8 windows are read too, as MUI 4 and 5 already were.
  • OS 3.0/3.1: ui list no longer crashes wasabid on GadTools windows (OS 3.1 gives programs a 4 KB stack; wasabid now takes 16 KB of its own), and GadTools list rows work there.
  • Plain again: when an Amiga once reached encrypted has no encryption any more, the error names the fix (wasabi keys forget HOST, or --plain).
  • MCP: 28 tools - new amiga_input and amiga_rexx.
  • Fixed: menu items that cannot be checked no longer show as checked.
  • A change log: CHANGELOG.md, every version and beta.

Downloads

File For
wasabid the Amiga, any 68k CPU
wasabid.020 the Amiga, 68020 or better
wasabi-linux-x86_64, wasabi-linux-arm64 Linux and the Raspberry Pi - one file, no Python needed
wasabi-macos-arm64, wasabi-macos-x86_64 Macs (Apple Silicon, 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, beside wasabi

Updating an Amiga that runs Wasabi already: wasabi update wasabid (or wasabid.020). Old clients keep working with the new daemon, and the new client with old daemons.

The one-file clients are built and tested on each system by GitHub Actions; they carry the command line, the desktop app (in your browser), the phone server and the MCP server (wasabi mcp). Not signed: on a Mac xattr -d com.apple.quarantine wasabi-macos-*; on Windows "More info" then "Run anyway". The PC programs appear on this page a few minutes after the release.

Tested: 283 client tests on Linux and macOS for every change; the daemon on an A1200 with PiStorm32-lite/Emu68 (OS 3.2.3), and in FS-UAE on OS 3.2.1 + MUI 5, OS 3.1 + MUI 3.8 and a stock A600 with Workbench 2.05.

Wasabi 0.9

Choose a tag to compare

@creep-ltx creep-ltx released this 14 Oct 22:24

Wasabi 0.9 - ready-made clients for Linux, macOS and Windows, list rows, transfers that never make anyone wait, and much of it from feedback by Spot.

Updated on 15 October 2026, same number: the files on this page were replaced with a newer build of 0.9. If you downloaded 0.9 earlier that day, download it again - version C:wasabid says wasabid 0.9 (15.10.2026) either way, so the new features are the way to tell: wasabi info lists sum.

  • Runs on AmigaOS 2.04 and later, any 68000: tested on a stock A600 with Workbench 2.05 (in FS-UAE). The 0.9 of the morning took itself down on 2.x the first time it was asked for the window list. System requesters' buttons on 2.x are found by name too. On 2.x SetEnv has no SAVE: set the key with SetEnv wasabi.key KEY and Copy ENV:wasabi.key ENVARC:.
  • wasabi sum - "has this changed?" without a picture: the Amiga works out a checksum of the screen, a window or a region and sends 8 bytes. wait change and wait still use it. A whole 640x256 screen in 0.8 s on a 68000 (a screenshot: 5.8 s); 1280x960 on the A1200 in 0.19 s.
  • MCP: 26 tools - new amiga_region_changed, amiga_slots and amiga_break.
  • Less memory: wasabid takes about 350 KB (it was about 600 KB); the trace, live view and ARexx buffers are taken only when first used.

Downloads

File For
wasabid the Amiga, any 68k CPU
wasabid.020 the Amiga, 68020 or better
wasabi-linux-x86_64, wasabi-linux-arm64 Linux and the Raspberry Pi - one file, no Python needed
wasabi-macos-arm64, wasabi-macos-x86_64 Macs (Apple Silicon, Intel)
wasabi-windows-x64.exe Windows
wasabi the client as a Python script, for any system with Python 3

The one-file clients are built and tested on each system by GitHub Actions; they carry the command line, the desktop app (in your browser), the phone server and the MCP server (wasabi mcp). Not signed: on a Mac xattr -d com.apple.quarantine wasabi-macos-*; on Windows "More info" then "Run anyway". The PC programs appear on this page a few minutes after the release.

New since 0.8

Buttons, menus and lists

  • List rows - the entries of GadTools and MUI lists, by text, selected or not, clickable when in view (tried on DCTelnet's Address Book).
  • An MUI checkmark or field also takes the label MUI shows after it.

Screen, mouse and keys

  • grab --region X,Y,W,H, mouse where.
  • Keys: F11, F12, Home, End, Page Up/Down, Insert, the keypad, and any raw code (0x45) - in wasabi key press and the WASABI ARexx port.
  • --native: coordinates in the screen's own pixels instead of the picture's (doubled rows on 640x256 screens).

Faster together

  • Uploads and downloads no longer make other requests wait: during a 200 MB upload to the A1200, a ping answered in 0.16 s and a 1280x960 screenshot took 0.5 s.

Builds and Amigas

  • wasabid.020, a 68020 build; tested on an emulated stock A1200.
  • Builds without the CyberGraphX developer headers.
  • AmiSSL (3.5 MB) is loaded only when encryption keys exist.
  • wasabi info lists the patches wasabid has in place.

AI assistants

  • MCP: 26 tools, new ones for the pointer, dragging, screens and waiting; wasabi mcp runs the server from any build.

The project

  • A README that shows every feature, with the details in docs/; the PC-side modules in app/.

Tested: 271 client tests on Linux and macOS for every change; the one-file clients smoke-tested on Linux (x86-64, ARM64), macOS (ARM, Intel) and Windows; the daemon on an A1200 with PiStorm32-lite/Emu68 (OS 3.2.3) and in FS-UAE.

Wasabi 0.8

Choose a tag to compare

@creep-ltx creep-ltx released this 14 Oct 20:27

The third non-beta build. Since 0.2, Wasabi grew from a developer's remote shell into a whole way of living with a real Amiga from a PC, a phone, an Amiga script or an AI assistant.

Both halves are attached, and they are a matched pair - tested together:

  • wasabid - the m68k-amigaos daemon. Copy it to C:, set a key, run it. OS 3.x and a TCP/IP stack; AmiSSL 5 only if you want encryption.
  • wasabi - the client, a single Python 3 file, standard library only.

The desktop app, the phone server and the MCP server need the rest of the repository (the source archive below): wasabi_view.py, wasabi_api.py, wasabi_mcp.py, view/dist. See the README's Quick start.

The desktop app

New since 0.2

See and drive the machine

  • grab - any screen or window as a PNG, RTG and native, in 0.1 s on Emu68; grab --diff.
  • mouse, key, windows - click, drag, drive menus, type through the Amiga's own keymap.
  • wasabi view - the live screen in a window, driven with your mouse and keyboard; only what changed is sent.
  • Gadgets and menus by name (wasabi ui): click "Save", fill a text field, pick "Project/Quit" - in Intuition, GadTools, ReAction and MUI 4/5 windows. Menu picks need no mouse.

Apps

  • wasabi desktop - overview with live stats, the screen, a two-pane file manager, screenshots, and developer tools (debug output, DOS calls, tasks, run slots).
  • wasabi serve - the same app on a phone, from a NAS or any Docker host (tools/docker-compose.yml): a login, history, alerts, nightly backups of the Amiga.

Development

  • Four commands at once (slots, free), run --detach, the clipboard both ways.
  • health - Pi temperature, voltage and power dips, Emu68's 68k CPU meter, memory, the last guru.

ARexx both ways

  • wasabi arexx PORT COMMAND - send to any program's ARexx port, get its RESULT.
  • The WASABI ARexx port - Amiga scripts and programs can type, press keys, click, click gadgets by name and pick menus.

AI assistants

  • MCP server (wasabi_mcp.py) - the Amiga as tools for Claude Code, Claude Desktop, Codex, Gemini CLI, Cursor and other MCP clients. claude mcp add --scope user wasabi -- python3 /path/to/wasabi_mcp.py.

Security

  • Optional TLS 1.3 with your own certificate authority (wasabi keys init): an Amiga with AmiSSL and keys accepts only encrypted connections; one without works plain. A client never silently goes plain to an Amiga it once reached encrypted.

Fixes worth knowing

  • Built with -fbbb=-: bebbo's backend pass miscompiled loops over small structs and could overwrite memory.
  • The desktop app starts at once on macOS; opening an Amiga volume in Files works again.

Tested: 252 client tests on Linux and macOS for every push; the daemon on an A1200 with PiStorm32-lite/CM4 on Emu68 (AmigaOS 3.2.3) and in FS-UAE.

wasabid 0.2

Choose a tag to compare

@creep-ltx creep-ltx released this 14 Aug 23:17

The second non-beta build. Thirteen betas since 0.1, and the line is about the machine learning to say why it died.

Both halves are attached, and they are a matched pair — the protocol negotiates capabilities precisely because daemon and client drift apart between updates, so these two are the versions that were tested together:

  • wasabid — the m68k-amigaos daemon, cross-built with Bebbo's gcc. Copy it to C:, set a key, run it.
  • wasabi — the client, a single Python 3 file, standard library only. Drop it anywhere on $PATH.

See the README for the five-minute setup, and PROTOCOL.md for the wire.

New since 0.1

  • Guru report. The Alert() hook names the code and the dying task on both streams, keeps the note in T:lastguru, and carries a deadend across a reboot in a black box at the top of fast RAM — so the terminal that watched a machine die greets it coming back and says why. Catches the system's own alerts, not a program faulting.
  • Snoop grown from 14 patched calls to 30, now reaching icon.library and diskfont as well as dos and exec.
  • Entry logging (--entry), so a call that never returns is still seen.
  • Three output modes (--output minimal|normal|full), --ignore-wasabi, --once.
  • Stream auto-reconnect, with a heartbeat so a frozen machine is noticed in seconds.
  • Stack headroom in ps — how much each task has left, not just what it was given.
  • grab --diff — compare a screen against an earlier grab, exit 1 if anything moved.
  • patches.c — every SetFunction hook in one file behind a narrow header, because the rules for code running in a stranger's task are not the daemon's rules.

Known scope

The guru report sees alerts raised through Alert(). A program that faults goes to its task's tc_TrapCode and never touches that vector, so ordinary application crashes are not caught. The PC capture is built and its decoder is proven against real CPU frames, but it stays dormant on Emu68, which does not deliver CPU exceptions to the guest at all.

audit.md, audit2.md and audit3.md are the defect ledgers, one per line of development, including the findings that were rejected on evidence.

wasabid 0.1

Choose a tag to compare

@creep-ltx creep-ltx released this 12 Aug 16:28

The first non-beta build, proven end to end on a real A1200 (PiStorm32-lite/Emu68, rondoval's driver stack).

Both halves are attached, and they are the matched pair — the versions that were tested together at this tag:

  • wasabid — the m68k-amigaos daemon, cross-built with Bebbo's gcc. Copy it to C:, set a key, run it.
  • wasabi — the client, a single Python 3 file, standard library only. Drop it anywhere on $PATH.

See the README for the five-minute setup, and PROTOCOL.md for the wire.

Note for anyone arriving here later: the protocol version has not changed since, so a newer client from a later release also drives this daemon — capability negotiation is what makes that work, and it is tested both ways.