Apps for joining
What you join a board with: a telnet clientA free app for joining a board: it connects to the board's address and shows its screens., the free app that connects to a board's address and shows its screens. BBS people also call it a terminalWhat you type into a board from: a telnet client on a phone or PC, an old computer, or a real terminal.. Any one works, but some are built for this and look a great deal better doing it. One exception, worth knowing before you install anything: a board that takes SSHAn encrypted way of connecting to a board, beside telnet: what you type is scrambled on the way, so only the board can read it. can be called with the ssh command your computer most likely already has, and connect with SSH is the whole of it.
Just tell me what to install
SyncTERM, on Windows, macOS or Linux. It is made for joining boards: it speaks ANSI and CP437 properly, handles file transfers, keeps a dialling directory, and understands telnet:// links so clicking an address on this site actually works. If you install one thing, install this.
On a phone, TERMinator on Android or iPhone, and MuffinTerm on iPhone, iPad and Mac, both do the job and render ANSI art correctly. Termius, free for Android and iPhone, works well too. It is a general app for connecting to servers rather than one made for boards, and telnet is in its free plan.
A Chromebook is the one machine where none of that installs straight into the browser. It can join a board through its Linux environment or an Android app, and on a school or work Chromebook both are settings somebody else owns. It has its own section further down.
The rest of the modern options
| Client | Platform | Worth knowing |
|---|---|---|
| SyncTERM | Windows, macOS, Linux | The default recommendation. ANSI, CP437, transfers, dialling directory. |
| NetRunner | Windows, Linux | From the Mystic BBS author. Good ANSI. No Mac or Android build. |
| mTelnet | Windows | Small, fast, built for BBSes. |
| MuffinTerm | iOS, macOS | Handles PETSCII as well as ANSI. |
| TERMinator | Android, iPhone and iPad, ChromeOS with the Play Store | CP437 art, classic fonts, ZMODEM transfers. |
| Termius | Android, iPhone and iPad, Windows, macOS, Linux | A general SSH and telnet app, not made for boards. Telnet is in the free plan. |
| PuTTY | Windows, Linux | Everywhere already, but set the character set to CP437 or the art will be wrong. Not built for this. |
telnet | Linux, macOS, BSD | telnet unleashed.local 6400. Fine and plain. On Debian or Ubuntu: sudo apt -y install inetutils-telnet. |
nc | anywhere | nc host 6400. Works, negotiates nothing, and looks it. |
macOS removed its telnet command in High Sierra. Install SyncTERM or MuffinTerm rather than fighting it.
Windows has a Telnet Client too, but it is an optional feature that is off by default and it renders ANSI poorly. Use something else.
Whatever you use, remember what you are using it for. Telnet carries every keystroke in the clear, including your password. Never reuse a password on a telnet board. What that risks.
Connect with SSH
SSH is here: encrypted connections on every ESP32-S3 board, from firmware 1.1.2. Over SSHAn encrypted way of connecting to a board, beside telnet: what you type is scrambled on the way, so only the board can read it., everything between your computer and the board is scrambled on the way, your password included. Telnet stays open on every board, for the machines that cannot encrypt, and boards on a classic ESP32 take telnet only.
ssh -p 6422 yourhandle@board.example.com
- You may already have everything you need. The
sshcommand comes with most computers, so an SSH board can be called with nothing installed at all: it is in Terminal on a Mac and on Linux, and in Windows Terminal or PowerShell on Windows 10 and 11. If Windows sayssshis not recognised, it is one optional feature away: Settings, System, Optional features, View features, then OpenSSH Client. Write the port before the address, as above: anything after the address is taken as a command to run rather than a setting. - What a plain
sshdoes and does not give you. It is a terminal, not an app made for boards, so the screens, the chat, the forums and the mail are all there and the board works out whether to draw its art in UTF-8 or CP437. What it has no way to do is a file transfer:DOWNLOADandUPLOADneed an app that speaks XMODEM or YMODEM, so keep one of the apps above for that. - Port 6422 is SSH's own. There the board speaks first, which SyncTERM 1.9 and older need: use 6422 with SyncTERM, never 6400. The sysop can move it or turn it off (0) in
CONFIG network, on the SSH port row. - The telnet port takes SSH too, 6400 as shipped, for apps that speak first: OpenSSH (the
sshcommand on Linux, macOS and Windows), PuTTY and Termius.ssh -p 6400 yourhandle@board.example.comworks with those. - The SSH user name is your handle. A handle with an account asks for that account's password, and you arrive logged in. Any other name gets in with no password asked and lands at the ordinary login prompt, where you can sign up or visit as a guest.
- The first time, your app asks whether to trust the board's key. The key is made on the board at its first start. To check it, ask the sysop, who sees its fingerprints in
SYSandHARDWARE. If your app later warns that the key has changed, ask the sysop why before you trust it again: an erase or a factory reset makes new keys.
Chromebooks
A Chromebook you control can usually join a board. A school or work Chromebook usually cannot, until whoever manages it switches something on. Chrome on its own never can: no web page and no Chrome extension is allowed to open the kind of plain network connection telnet needs, so every route below goes around the browser rather than through it. On a managed Chromebook, every one of those routes is a setting that belongs to the administrator.
Find out which kind of Chromebook you have before anything else, because it changes the answer. Select the time at the bottom right, then Settings, then About ChromeOS, then Developers. If there is a Linux development environment row with a Set up button, you are fine. If the row is missing, or the button refuses, the device is managed and an administrator has turned it off. A few older Chromebooks never had it.
If Linux is available
This is the route that works, and it ends with an ordinary terminal.
- Select the time at the bottom right, then Settings, then About ChromeOS, then Developers.
- Next to Linux development environment, select Set up, and answer the few questions it asks. Google says setup takes ten minutes or more, and that is about right.
- A Terminal window opens when it finishes. What you are looking at is Debian.
- Install a telnet client:
sudo apt -y install inetutils-telnet - Join a board:
telnet 192.168.1.50 6400, with the address and port from the listing. On an ESP32-S3 board you can call over SSH instead, which is encrypted:ssh -p 6400 yourhandle@192.168.1.50.
Use the numeric address rather than a .local name. The Linux side looks names up for itself and does not always see what ChromeOS can see, so a name that works in the browser can fail in the terminal for reasons that have nothing to do with the board.
If Linux is blocked
Then it is a conversation with whoever manages the devices, and it goes better if you ask for the setting by name instead of asking for Linux.
- It lives in the Google Admin console, under Devices > Chrome > Settings, on the User & browser settings page, in the section Virtual machines (VMs) and developers.
- The setting is called Linux virtual machines (BETA). On managed devices it defaults to Block usage for virtual machines needed to support Linux apps for users, which is why yours is off.
- The value to ask for is Allow usage for virtual machines needed to support Linux apps for users. It can be set for one group of people rather than for everybody.
- If people sign in with accounts from outside the organisation's own domain, the matching setting on the Devices page, Linux virtual machines for unaffiliated users (BETA), has to be allowed too, or the first one appears to do nothing.
Worth saying in that conversation, because it is usually the real question: this starts a sandboxed Debian container. It is not developer mode, it does not unenrol the device, and by Google's own description a bad Linux app can affect other Linux apps and nothing outside them.
The other ways in, and what each costs
- An Android app, if the Play Store is switched on. TERMinator is a BBS terminal that speaks telnet and draws CP437 art properly. On a managed Chromebook the Play Store is its own separate setting, under Devices > Chrome > Apps & extensions > User app settings, then Additional app settings, then Android apps on Chrome Devices, then Allow users to install Android apps. On school devices it is frequently off, and it is a bigger thing to ask for than Linux is, because it opens a whole store rather than one program.
- A Chrome extension cannot do this, and that is worth knowing before you spend an afternoon looking for one. Google's own Secure Shell is an SSH client and does not speak telnet. Nothing else can either: opening a plain connection was a Chrome Apps ability, not an extension one, and ChromeOS 138, in July 2025, was the last release to support Chrome Apps a user installed themselves. Google's newer route for web apps that need a raw connection, Isolated Web Apps, installs only through an administrator's policy, so it is the administrator's decision like everything else here.
- A terminal that runs in a web page needs a helper in the middle. A page cannot open a telnet connection, so clients like fTelnet connect over WebSocket to a proxy and the proxy makes the telnet connection for them. It works. It also means that proxy reads everything in both directions, which on a telnet board is everything, your password included. Running the proxy yourself on your own network is a fair trade. Using somebody else's is a public conversation with one more listener in it.
If none of those is available to you, a Chromebook cannot join a board over telnet, and there is no trick that gets round it. The machine is doing exactly what it was set up to do. Borrow a Windows, Mac or Linux computer for the evening, or ask for the Linux setting, which is the smallest of the three requests.
Clicking an address instead of typing it
Every board on the list has its address as a link. Whether that link does anything depends on which program your computer has registered for telnet://, and the default is often wrong or missing. How to fix that.
The address is ordinary text inside the link, on purpose, so selecting it and pasting it into a terminal always works, whatever your machine does.
Joining from something older
This is the more interesting half. A board answers anything that can open a telnet session, and with a bridge that includes machines built before the protocol was common.
Commodore
| Machine | Software | Onto the wire |
|---|---|---|
| C64, C128 | CCGMS, Novaterm, DesTerm 128 | TeensyROM, WiModem232, Comet64, Zimodem, or an RS-232 cartridge |
| VIC-20, PET, Plus/4 | period terminal software | a user-port RS-232 interface to a bridge |
The board speaks PETSCII natively, at 40 or 80 columns. A Commodore does not answer the board's probe the way a PC terminal does, so on connect the board asks you to press DEL, then whether you are on 40 or 80 columns. A C64 gets a C64 screen, not an approximation of one.
Atari
| Machine | Software | Onto the wire |
|---|---|---|
| Atari 8-bit | BobTerm, Ice-T | FujiNet, or an 850 interface to a bridge |
| Atari ST, Falcon | UniTerm, CoNnect | the built-in serial port to a bridge |
Apple and Amiga
| Machine | Software | Onto the wire |
|---|---|---|
| Apple II, IIgs | ProTERM, ASCII Express, Spectrum | Uthernet II, or a Super Serial Card to a bridge |
| Classic Mac | ZTerm, White Knight | the modem or printer port to a bridge |
| Amiga | NComm, term, JR-Comm | the serial port to a bridge, or a TCP/IP stack |
Everything else
| Machine | Software | Onto the wire |
|---|---|---|
| TRS-80 Model 100 | the built-in TELCOM | the RS-232 port to a bridge |
| MSX | TELNET for UNAPI | an ethernet or Wi-Fi UNAPI cartridge |
| ZX Spectrum | VTX 5000, Spectranet clients | a Prism VTX 5000 or a Spectranet card |
| Amstrad CPC | EwenTerm | a serial interface to a bridge |
| CP/M, S-100 | Kermit, MEX | the machine's serial port to a bridge |
| DOS | Telix, Procomm Plus, Qmodem, Terminate | a packet driver and a TCP/IP stack, or a serial bridge |
Actual terminals
| Terminal | Onto the wire |
|---|---|
| DEC VT100, VT220, VT320 | a terminal server, a USB serial adapter, or the board's own serial bridge |
| Wyse WY-60, Televideo 925, ADM-3A, Heathkit H19 | the same |
| Teletype Model 33 ASR | a current loop converter, at 110 baud, if that is the sort of thing you enjoy |
What a bridge is
Most of the machines above have a serial port and no idea what TCP is. A bridge sits between the two: it takes the serial line on one side and speaks telnet on the other, so the old machine thinks it is talking to a modem.
Hardware ones for Commodore and Atari are listed above. On anything with a serial port, an ESP32 running Zimodem does the same job for a few dollars, and so does tcpser on a computer you already have. A real modem and a real phone line also still work, if you have both.
What the board does with all this
It works out what it is talking to when you connect and draws itself to suit, so an Amiga, a TRS-80, a phone and a modern laptop can be in the same chat room and each see something that looks right to it. The first call page says how, and what it may ask.