Classic Macintosh Plus Slack client. The Mac speaks HTTP-over-serial (RHTTP); networking, TLS, and Slack live on the macOS host (desktop NSE). Guest Mac binaries are identical in Snow and on hardware (stock Serial Manager only). Slack tokens never leave the host.
| Environment | Path to the Plus | Slack |
|---|---|---|
| Development | Snow modem TCP bridge (tcp://127.0.0.1:1984) |
desktop NSE (libcurl + http://rs/ cache) |
| Hardware | macOS USB-serial → Arduino (byte copy) → RS-422 → Plus Mini-DIN-8 modem port | same desktop NSE on that USB serial device |
macOS NSE / hellomacintosh
USB serial @ 19200 8N1
Arduino (passthrough)
RS-422 conversion
Macintosh Plus modem port (Mini-DIN-8)
The Arduino is not on Ethernet. It is a USB–UART bridge; the MacBook talks Slack, the Plus talks RHTTP over RS-422. The Mac only requests the compact rows it intends to render.
Demo: Slack on a 1986 Macintosh Plus (LinkedIn). Serial deploy uses HelloMacintosh.
This repository is the Slack client. Pushing a rebuilt app over the modem port is a separate project:
HelloMacintosh — resident loader on the Plus + hellomacintosh host CLI + Arduino USB–serial bridge.
Clone it yourself (sibling directory or into HelloMacintosh/ here) or let bootstrap do it. It is not vendored and is not a git submodule; override the checkout with HELLOMACINTOSH_DIR or the clone URL with HELLOMACINTOSH_REPO.
# optional, if you prefer a sibling clone:
git clone https://github.com/kApp-Oliver/HelloMacintosh.git ../HelloMacintosh
export HELLOMACINTOSH_DIR="$PWD/../HelloMacintosh"- Place a legally obtained Macintosh Plus ROM at
ROMS/Mac-Plus.ROM(gitignored; not needed for a real Plus). - Copy
.env.example→.envand setSLACK_USER_TOKENorSLACK_BOT_TOKEN. Never commit.env. - Bootstrap toolchain, clone HelloMacintosh, and build the desktop NSE + CLI:
make bootstrap # Homebrew, Retro68, Snow, HelloMacintosh clone, host tools
make macPrepare a System disk (see docs/SETUP.md), then:
make run # NSE + Snow (modem TCP bridge on 127.0.0.1:1984)With HelloMacintosh frontmost on the emulated Plus, deploy the client in another terminal:
make deploy SNOW=1
# or: ./scripts/hellomacintosh --serial tcp://127.0.0.1:1984 run build/mac/RetroSlack.binInstall and leave HelloMacintosh running on the Plus (see that repo’s README). Flash the Arduino passthrough there (./scripts/flash-bridge.sh). Then from RetroSlack:
make deploy SERIAL=/dev/cu.usbserial-XXXX
./build/host/nse --serial /dev/cu.usbserial-XXXX --baud 19200 --verboseStop NSE before the next hellomacintosh stop / run — only one host process can own the USB serial device.
./scripts/hellomacintosh is a wrapper around the cloned HelloMacintosh CLI (HM_SERIAL or --serial).
protocol/— portable RHTTP framing (host + Mac)host/nse/— desktop Network Serial Emulator (Slack +http://rs/over serial)arduino/nse/— experimental on-device Ethernet sketch (not the supported link)mac/— Retro68 guests (RetroSlack, RHTTPTest)scripts/— bootstrap, build, run, serial deploydocs/— setup, protocol, hardware, debugging, display API
The USB–serial Arduino firmware is in HelloMacintosh (arduino/bridge). HelloMacintosh/ is a local clone only (gitignored). Hello World drafts under tutorials/ are local for now (also gitignored).
- docs/SETUP.md — Snow, Retro68, ROM, System, HelloMacintosh
- docs/HARNESS.md — deploying RetroSlack with HelloMacintosh
- docs/PROTOCOL.md — RHTTP wire format
- docs/DISPLAY_API.md — host Slack cache + tiny
http://rs/payloads - docs/REAL_HARDWARE.md — real Plus + Arduino
- docs/DEBUGGING.md — Cursor / LLDB / serial logs
- SECURITY.md — tokens, ROMs, what not to commit
Apple ROM and System software are not redistributed. You must supply your own legally obtained copies. Macintosh is a trademark of Apple Inc. Slack tokens stay on the macOS NSE — never on the Mac or in git.