Ultimate64 Remote CLI
go64u is a tool for remote interaction with the Ultimate64 computer.
go64u [command] [flags]
go64u
go64u --terminal
go64u <command>
| Flag | Short | Type | Default | Description |
|---|---|---|---|---|
--terminal |
– | bool | false |
Run the application in terminal (REPL) mode |
--device |
-d |
string | (from config) | Set device. Needed in non-terminal mode |
Show device configurations.
Writes a message on screen at a given position.
Pauses the U64 by pulling the DMA line low at a safe moment. This stops the CPU. Note that this does not stop any timers.
Shuts down the U64. Note that it is likely that you won't receive a valid response.
Reads several bytes from memory by a given length.
| Flag | Short | Type | Default | Description |
|---|---|---|---|---|
--length |
-l |
uint16 | 1 |
Length of data to read |
--output |
-o |
string | output.bin |
Output file name |
--type |
-t |
string | file |
Output type: file or bin |
Reboots the U64. Re-initializes the cartridge configuration and sends a reset to the machine.
Resets the U64. The current configuration is not changed.
Resumes the U64 after pause. The DMA line is released and the CPU will continue where it left off.
Toggles the on-screen menu. Does the same thing as pressing the Menu button on an 1541 Ultimate cartridge or briefly pressing the Multi Button on the Ultimate 64.
Sets one byte in memory (POKE). Writes a byte value (00-ff) to a memory address (0-ffff).
Loads a cartridge file into the U64 and automatically starts it. The machine resets with the attached cartridge active. It does not alter the configuration of the Ultimate.
Loads a program into the U64. The machine resets and loads the attached program into memory using DMA. It does not automatically run the program.
Mounts a disk image (d64/g64/d71/g71/d81) on a given drive.
Loads a program into the U64 and automatically starts it. The machine resets, loads the attached program into memory using DMA, then automatically runs the program.
Unmounts a disk image from a given drive.
List files of the internal drive (USB Stick, SD Card, Disk Images, etc.).
| Flag | Short | Type | Default | Description |
|---|---|---|---|---|
--memaddress |
-m |
bool | false |
Display the start address of a program if possible |
--filter |
-f |
string | (empty) | Filter the list by a match pattern like *.prg |
Show drive info.
Starts/Stops the audio stream.
| Command | Description |
|---|---|
audio start |
Start the audio stream |
audio stop |
Stop the audio stream |
Starts/Stops the debug stream. Audio and video streams will be stopped.
| Command | Description |
|---|---|
debug start |
Start the debug stream (audio/video streams will be stopped) |
debug stop |
Stop the debug stream |
Starts/Stops the video stream.
| Command | Description |
|---|---|
video start |
Start the video stream |
video stop |
Stop the video stream |
Shows the current VIC states of D011/D016/D018 and the memory bank setup.
Takes a screenshot of the current screen.
| Flag | Type | Default | Description |
|---|---|---|---|
--scale |
int | 100 |
Scale factor in percent (%) |
Show device info.
Check if the selected device is online (responds to HTTP requests).
Terminal mode is started with go64u --terminal. It provides an interactive REPL where all standard commands are available plus the following terminal-only commands:
Interactive audio stream controller. Lets you select from configured devices, play/stop audio streams, and switch between devices interactively.
Change the folder on the internal drive. Only available in terminal mode because it maintains a persistent working directory across commands.
Switch the active device within the terminal session. Shows the current device if no key is provided.
Query packages matching a filter. By default the filter is set to the current year and type=d64.
| Flag | Type | Default | Description |
|---|---|---|---|
--name |
string | (empty) | Filter by name |
--group |
string | (empty) | Filter by group |
--handle |
string | (empty) | Filter by handle |
--category |
string | (empty) | Filter by category |
--repo |
string | (empty) | Filter by repository |
--subcat |
string | (empty) | Filter by subcategory |
--year |
string | (current year) | Filter by year |
--rating |
string | (empty) | Filter by rating |
--type |
string | (empty) | Filter by type |
--latest |
string | (current month) | Filter by latest |
--offset |
int | 0 |
Result offset |
--limit |
int | 80 |
Result limit |
--ignoreDefaults |
bool | false |
Ignore default filters |
--get |
bool | false |
Download the files |
Quit the terminal and exit the application.
Stream to your favourite streaming platform (e.g. Twitch/YouTube). Starts both video and audio streams and pipes them through an RTMP encoder.
| Flag | Type | Default | Description |
|---|---|---|---|
--target |
string | (empty) | Streaming platform (e.g. twitch, youtube) |
--record |
string | (empty) | Record locally: audio, video, or both |
--no-overlay |
string | (empty) | Disable overlay for: stream, record, or both |
After entering query (or its dedicated database mode), the following sub-commands are available within the database REPL:
Show categories.
Show/set active filters.
List filtered results.
Leave the database sub-REPL.
The graphical interface is launched without the --terminal flag and uses the Gio UI framework (gioui.org). The window has a resolution of 800x680 pixels with a dark Material Design theme.
The layout consists of three areas:
- Toolbar (top) – Control buttons for the selected device
- Main area – Device cards (left) + Video monitor grid (right)
- Footer (bottom) – Status line with hover hints
| Button | Function |
|---|---|
| Play/Stop | Start/Stop all streams for the selected device |
| Pause | Pause the U64 (DMA line low) |
| Audio | Enable/Disable audio monitoring with playback |
| Video | Enable/Disable video monitoring |
| Snapshot | Save a screenshot as PNG to the configured folder |
| Record | Start/Stop MP4 recording (video + audio) |
| Cast | Start/Stop streaming to a platform (e.g. Twitch) |
| Overlay | Enable/Disable the stream overlay |
| CRT | Enable/Disable the CRT scanline effect |
| Reset | Send a reset to the U64 |
| Power Off | Shut down the U64 |
Each configured device is displayed as a card with rounded corners. The card shows:
- Device name and description
- Online status indicator (green = online, red = offline, gray = unchecked)
The online check runs automatically every 5 seconds in the background.
- Displays active video feeds in a grid layout
- Supports multiple simultaneous device streams
- Native resolution: 384x272 pixels (Ultimate64)
- Scaling with rounded corners
- Optional CRT scanline effect (sine wave-based brightness modulation)
- Real-time stereo waveform visualization
- Two channels with visible gap
- Updated live during audio playback
On Windows, files can be dragged and dropped onto a device monitor window. The file is automatically routed to the correct device based on the drop position in the grid.
- Recording: Saves as MP4 to the configured
RecordingFolder - Casting: Streams live to configured platforms (e.g. Twitch) via the
StreamingTargetsconfiguration - Both use the
StreamRendererfor video encoding, audio mixing, and optional overlay compositing
- Framework:
ebitengine/oto/v3 - 48 kHz sample rate, stereo, 16-bit signed LE
- Real-time playback and monitoring
The app tries to find the config file first in the app folder. If this is the wrong location, create an environment variable GO64U_CONFIG_PATH where the .go64u.yaml file is located.
The structure of the file is currently as follows:
LogLevel: ffmpeg_loglevel
Devices:
DEVICE_NAME1:
Description: "Device Nme"
IsDefault: true
IpAddress: <ip of device>
VideoPort: 11000
AudioPort: 11001
DebugPort: 11002
DEVICE_NAME2:
Description: "Device name"
IpAddress: <ip of device>
VideoPort: 21000
AudioPort: 21001
DebugPort: 21002
StreamingTargets:
twitch: rtmp://live.twitch.tv/app/<stream_key>
OTHER: rtmp://
ResourceUrl: http://hackerswithstyle.se/leet/search
DatabaseClient: Assembly64
DumpFolder: <path to dump folder>
ScreenshotFolder: <path to screenshot folder>
RecordingFolder: <path to recording folder>
Overlay:
ImagePath: <path to 1920x1080 overlay PNG with transparent stream area>
GameX: 160
GameY: 100
GameW: 1536
GameH: 1088Note: If you have more than one Ultimate64 board, you have to choose different ports for each board.
Note: If you want to stream the U64 stream via RTMP to Twitch, YouTube, etc. you need to install ffmpeg.
- List and change dir (local and remote)
- Disassembler with dialect option


