SERMO-BBS

A telnet server that drops every caller into a simulated Margittai machine from the Neumatronic universe. It runs a dual-architecture power-on, loads SERMO„a Szó", the Word — and leaves you at a green-phosphor > prompt.

SERMO is the canonical OS of the dual machine: a single prompt with two destinations. A literal, exact command goes to the digital side (the first, von Neumann architecture) and is served by built-in commands; anything typed in natural language is treated as a question and routed over the ADI-76 bus to the Lapis-ACP (the second, analog-cognitive architecture) — SERMO's conversational core. Black screen, green letters, one blinking line: exactly as the canon describes it.

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/sermo_os.rb the SERMO profile (BBS::FakeOS.define): dual-architecture
                      boot, the digital-side command table, and the on_unknown →
                      ACP hook (natural language over the ADI-76 bus)
lib/sermo/oracle.rb   the Lapis-ACP conversational core (canned replies for now)

Talking to SERMO / wiring an LLM

At the > prompt the digital side answers literal commands: VER, DATUM, IDO, MOND, MEM, KAT, ADI, VOX, CLS and KILEP (English aliases like DATE, TIME, ECHO, DIR, EXIT still work; SUGO/HELP/? lists them). Type anything else and it crosses the ADI-76 bus to the Lapis-ACP via Sermo::Oracle.answer, which currently returns canned, in-character replies (its voice follows the canon — ExistentialAI and Nokia-punk: a doubting, intimate machine, because there is no other interface).

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 from the universe (an earlier Sermo line, a DOS/NT operator terminal, a ProDOS X session…), drop a new file in lib/sermo/ and point the flow at it in sermo.rb. No changes to the rubbs engine are needed.

Lore references

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