mr.zeroandClaude Opus 4.8 25b985c7a2 Initial SERMO-BBS: a telnet PC that boots SERMO-DOS
A rubbs-based telnet server that drops every caller into a simulated PC:
it POSTs, boots, loads SERMO-DOS, and lands at a C:\> prompt. Built-in DOS
commands (VER/DATE/TIME/ECHO/MEM/DIR/CLS/HELP/EXIT) behave; anything else
is routed to Sermo::Oracle as a question — the hook for a future LLM.

Built on rubbs' configurable BBS::FakeOS engine; the whole OS lives in
lib/sermo/dos.rb as a FakeOS.define block, so new character-mode OSes are
added as config files, not engine changes.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-05 20:08:34 +02:00

SERMO-BBS

A telnet server that drops every caller into a simulated PC. It POSTs, boots, loads SERMO-DOS, and leaves you at a C:\> prompt. Built-in DOS commands behave like the real thing; anything else you type is treated as a question and answered by SERMO's conversational core.

Built on the rubbs gem, using its configurable BBS::FakeOS character-mode OS simulator.

Running

Directly (Ruby 3.x):

bundle install
ruby sermo.rb

Docker Compose:

docker compose up --build        # exposes telnet on host port 2324

Connect:

telnet localhost 2323            # or 2324 with docker compose

Configuration

Variable Default Description
BBS_PORT 2323 TCP port to listen on
BBS_IDLE 900 Idle seconds before disconnect

Layout

sermo.rb            entry point — config, flow, BBS.start
lib/sermo/dos.rb    the MS-DOS profile (BBS::FakeOS.define): boot sequence,
                    DOS commands, and the on_unknown → conversation hook
lib/sermo/oracle.rb the conversational core (canned replies for now)

Talking to SERMO / wiring an LLM

At the C:\> prompt, VER, DATE, TIME, ECHO, MEM, DIR, CLS, HELP and EXIT are real commands. Type anything else and it goes to Sermo::Oracle.answer, which currently returns canned, in-character replies.

To make SERMO actually think, replace the body of Sermo::Oracle.answer (lib/sermo/oracle.rb) with a call to your model and return its text — that method is the only integration point.

Adding more operating systems

A simulated OS is pure configuration: a BBS::FakeOS.define { … } block with a prompt, colors, a boot sequence, a command table and an on_unknown fallback. To add another character-mode OS (CP/M, an AmigaDOS CLI, …), drop a new file in lib/sermo/ and point the flow at it in sermo.rb. No changes to the rubbs engine are needed.

S
Description
No description provided
Readme
37 KiB
Languages
Ruby 97.1%
Dockerfile 2.3%
Shell 0.6%