A Teletype BBS a Teletype Games BBS-hálózatának klubháza: telnetes, Synchronet-stílusú hirdetőtábla üzenőfalakkal, levelezéssel, chattel és azokkal a doorokkal, amelyek csak itt élnek.
Elérhető:
teletypegames.org:2323
Ruby alkalmazás a rubbs gemre építve, ami a saját BBS-keretrendszerünk — ez adja az ANSI-felületet, a menüsort, az egymásra tornyozott modális ablakokat, a Telnet-szervert és az xterm egértámogatást. A teletype-bbs repóban csak a Teletype-specifikus részek vannak: a domain (a tárolóikhoz kötött szolgáltatások), a modern arc ablakai és menüi, a PETSCII-arc, a doorok és a karakterek.
A hálózat első boardja volt, ezért egykor minden Teletype Games-tartalom belekerült. 2026-11-01 óta a közösség és a csak itt élő doorok maradtak benne; amit egy másik board visz, azt nem ismétli meg, csak megmutatja, hol van:
| Ha ezt keresed | Itt van |
|---|---|
| a játékaink és fájljaink (C64, Plus/4; ZMODEM, XMODEM) | WarpEngine BBS, teletypegames.org:2329 |
| a wiki: útmutatók, how-tok, a DOS-sarok | TTG Wiki BBS, teletypegames.org:2325 |
| a blog | TTG Blog BBS, teletypegames.org:2328 |
| ANSI- és PETSCII-art | Pixelia BBS, teletypegames.org:2332 |
| a Definitely not an Impostor játék utáni terminálja | Impostor BBS, teletypegames.org:2324 |
| Wikipédia, hírcsatornák, könyvek, a C64-es játéklexikon | Alexandria BBS 2326, Feedia BBS 2327, Scriptorium BBS 2330, Commodex BBS 2331 |
| mindegyik egyetlen portról | TTG Gate BBS, teletypegames.org:2399 |
| az FTP-fa régi gépeknek | ftp.teletypegames.org, sima HTTP-n pedig archive.teletypegames.org |
A Board > BBS Network (és a Help > Where are the games, files, wiki?, C64-en az N) ezeket a klubház falán lógó várostérképen mutatja, és a TTG Master is ugyanezt válaszolja.
2026-11-01 óta a board úgy is néz ki, ami: klubház (lásd lent: A klubház). A hívás a régi módon indul: a modem tárcsáz és kapcsol (CONNECT 38400/ARQ/V42BIS), utána a hívó a bejáratnál áll: az ajtó a lámpája alatt, a csengő, a fogason a bent lévők kabátjai, és a nyitott vendégkönyv a legutóbbi három vendéggel és a bejegyzés sorszámával (a hívó sorszáma). A nevet (üresen hagyva Anonymous) és a regisztrált név jelszavát a vendégkönyvbe írja; minden más név vendég. Utána jön a belépési szekvencia: Welcome back, a hívó sorszáma, a korábbi hívásaid (első, utolsó, összes idő), és a régi BBS-ek ellenőrzései — új levelek, új üzenetek falanként az utolsó olvasásod óta, a szavazásaid —, végül a nap idézete, egy csapattag mottója. Az ENTER nyitja a teljes képernyős felületet az irányítópulttal (dashboard), a klubházzal az utcáról: kivilágított ablak minden bent lévő hívónak, füst a kéményből, amíg az élő chatben beszélnek, zászló a postaládán a leveleidnek, alatta ki van bent, a hirdetőtábla és a falfirka; pár másodpercenként frissül. A Board > Dashboard minden ablakot bezár, és visszahozza. Nyitott menünél az alsó sor elmondja, mit csinál a kijelölt menüpont. Minden ablak a menüje színét és ikonját viseli: Board halvány türkiz ☼, Messages zöld ✉, People rózsaszín ☺, Doors lazac ♫, You szürke ♥, Help sárga ¿. A Board > Log off (Alt-X) egyenként lekapcsolja a klubház lámpáit, a kabátjeggyel (a hívó sorszáma és a hívás hossza), egy tagline-nal, +++, ATH0, NO CARRIER.
Az állapotsor jobb oldalán a node, az óra és a bent töltött idő látszik.
A board
F1, a gomb az asztal sarkában, Help) — a sysop, aki a hívók kérdéseire válaszol a BBS-ről: mi hol van, mi jön, és a hálózat melyik boardja viszi azt, ami ebben nincs. A tényeket a kód keresi ki (a menük és a többi board tudástára, a legutóbbi kiadások, az események, a játékok), a modell csak megfogalmazza őket, és a kód ellenőrzi, hogy a válasz megtartotta-e a tényeket, és nem talált-e ki menüt; ha igen, a hívó magát a tényt kapja.Közösség
data/boards/ alatt. Az új hozzászólások többsoros TextArea-ban készülnek, legfeljebb 1000 karakterrel. Regisztrált név esetén minden fal mellett ott az olvasatlan üzenetek száma.F7) — privát levelek regisztrált nevek között: Write, Reply, Delete. A Feedback to the Sysop… levél a sysopnak, bárki írhatja, akinek van neve; minden sysop olvassa. A hívás közben érkező levél csenget. A Discord-csatornára csak az kerül, hogy visszajelzés jött, a tartalma soha.lib/content/polls.yml szavazásai; egyet a katalógus tölt fel (a kedvenc Teletype Games-címed), egyet a doorok. Az eredmény sávdiagram; névvel lehet szavazni, és a szavazat módosítható.TELETYPE_BBS_SYSOPS listában szereplő, jelszóval belépett neveknek.TELETYPE_BBS_DISCORD_WEBHOOK webhookra mennek, megemlítések (mention) nélkül.Doorok — programok, amelyeknek a BBS átadja a telnetvonalat, és kilépéskor visszaveszi (a rubbs BBS::Door-ja). Csak az itt élő programok doorok. A Doors > Games Room… a klubház hátsó játéktermének öt állomásaként mutatja őket, egy lámpa ég afölött, amelyikben valaki bent van; a Doors > Door Lobby… mindet felsorolja: mi az, milyen képernyő kell hozzá, és ki van bent.
sermo gemként): adj ki parancsot, vagy csak beszélgess vele; az EXIT visszavisz a BBS-be. Amit szavakkal mondasz, az a Lapis-ACP-hez megy: egy kis helyi modell (Qwen3.5 0.8B) az 1977-es kánon personájával. Lassú, szűkszavú, és néha téved, részben szándékosan.READY. promptnál (kék C64-, szürke Plus/4-képernyő, 40 oszlop), egy kis BASIC V2-vel: a 10 PRINT CHR$(205.5+RND(1)); : GOTO 10 kirajzolja a labirintust, bármelyik billentyű RUN/STOP. A lemezen az adott gépre készült játékaink vannak: a LOAD"$",8 és a LIST megmutatja a directoryt (a blokkszám a valódi .prg-méretből, az FTP-szerver /WARP mappájából, mert a katalógus-API nem ad méretet), a LOAD"NÉV",8 (joker karakterrel is) betölt egy játékot, a LIST megmutatja, a RUN kiírja az adatlapját a katalóguslinkkel. A Plus/4 a DIRECTORY-t és a DLOAD-ot is ismeri; a SYS 64738 újraindítja a C64-et; az EXIT visszavisz a BBS-be.RIDDLE a piramis egy talányát adja fel, amit a kód ellenőriz (HINT, SKIP); három megfejtés után Ra megáld. A GAME megmondja, hol a játék.lib/content/trivia.yml-ből; a legjobb tíz játék a dicsőségtáblája.Technikai
data/ alatt, ami Docker-kötet, így túlélik az újraindítást.A Commodore 64 (CCGMS, StrikeTerm, C64-módú SyncTERM, vagy WiFi-modem mögötti C64) PETSCII-ben kapja a boardot, 40×25-ön. A képek (a bejárat, a főmenü, a várostérkép, a játékterem, a vitrin, a helyiség-kártyák, a távozás) a C64 nagybetűs/grafikus karakterkészletében készülnek, egyszer az egész képernyő, utána csak ami változik; az olvasó képernyők (posztok, levelek, chat, hirdetmények, a Master) a kisbetűs készletben maradnak. A főmenü a klubház: fent a ház, ugyanabból a jelenetből kivilágítva, mint a modern arcon, alatta ki hív és mi jön, és a helyiségek kurzoros menüként: M Cork board, E Mailbox, O Graffiti wall, L Sofa chat, I Radio (IRC), P Ring the bell, U Notice board, D Workshop, C Guestbook, H Trophies, V Ballot box, S You, R Games room, N Town map, T Ask the bar (a TTG Master), Q Leave; ? súgó, Y rendszerinfó. Egy olvasó helyiség hívásonként egyszer megmutatja a kártyáját. A játékteremben a C64 és a Plus/4 nyitható; a SERMO, a Chat of Ra és a TTG Trivia 80 oszlopot kér, ezek a modern arcon vannak. A játékaink XMODEM-mel jutnak C64-re a WarpEngine BBS-ről.
A * a képek helyett a régi, sima szöveges menüt adja, és vissza; akinek a neve csupa nagybetűvel érkezik, az rögtön ezt kapja, mert az UltimateTerm (a C64 Ultimate terminálja) ANSI-módban felcseréli a kis- és nagybetűt, és a grafikát sem tudja megjeleníteni.
A board a hálózat klubháza: nem könyvtár és nem raktár — azok a város többi épülete —, hanem ahová az ember beül, beírja a nevét a vendégkönyvbe, megnézi, ki van bent, üzen a többieknek, és hátul játszik egyet. Minden nagy képen van valami a board saját adataiból (a node-ok, a chat, a levelek, az új posztok, a foglalt doorok, a vendégkönyv, az események, a fal), mindkét arcon ugyanaz; külső lekérdezés nincs, a várostérkép statikus.
| Menü (modern) | Helyiség (C64-billentyű) | Élő elem a képen |
|---|---|---|
| a belépés | a bejárat: ajtó, lámpa, csengő, vendégkönyv | az utolsó három vendég, a bejegyzés sorszáma, a kabátok a fogason (a node-ok) |
| Board > Dashboard | a klubház az utcáról | kivilágított ablak node-onként, az ajtó és a lámpa, füst a kéményből (chatsor az utolsó percben), a postaláda zászlaja és a levelek száma |
| Messages > Boards… | a parafatábla (M) |
az új cédulák |
| Messages > Mail… | a postarekeszek (E) |
a zászló a postaládán |
| Messages > Oneliners | a falfirka (O) |
a fal a ház alatt |
| Messages > Live Chat | a kanapésarok (L) |
a füst |
| People > Who is Online, Last Callers | a vendégkönyv (C) |
— |
| People > Hall of Fame | a trófeás vitrin (H) |
a nevek a kupákon |
| Board > Bulletins…, Dev Log | a hirdetőtábla (U), a műhely (D) |
— |
| Board > BBS Network | a várostérkép (N) |
statikus |
| Doors > Games Room… | a játékterem (R) |
lámpa a foglalt állomások fölött |
| Help > Ask the TTG Master | a pult (T) |
— |
| Log off | távozás (Q) |
kialvó lámpák, a kabátjegy |
A ház Budapest napszakát követi (hajnal, nappal, alkony, éjjel) és az évszakot: hó decembertől februárig, tök október utolsó hetében, tűzijáték szilveszterkor, zászlófüzér a game jam napjain.







C64-en ugyanezek a helyiségek, külön PETSCII-ben rajzolva:







A képek a rubbs BBS::Art YAML-formátumában vannak a lib/content/art/ alatt, kétszer, gépenként külön rajzolva: a modern/ 437-es kódlappal és 256 színnel, a c64/ a C64 nagybetűs/grafikus készletével. Azok a cellák, amelyeket a board az adataiból tölt ki, a kép hotspotjai; az évszakok rétegek, napszakonként egy. A rubbs art-preview-ja rajzolás közben ellenőrzi a képet (ANSI a terminálon, a PETSCII-bájtok, C64-es képernyőkép). A várostérkép a lib/content/network.yml-ből dolgozik: minden board a nevével, portjával, épületével, színeivel és az épülete helyével; új board = egy új sor és a két épülete (building_ID.yml, 12×4 és 3×3).
A C64-es vonal lassú, ezért a képeknek bájtkeretük van, a bin/c64-bytes méri: a főmenü minden napszakban és évszakban 1105–1123 bájt (legfeljebb 1,2 KB), a sáv egy lépése 146–205, egy füstpamacs kb. 60, a bejárat kb. 1,1 KB, a várostérkép 1000 (egy lépés 161–209), a játékterem 770, a vitrin 609, egy helyiség-kártya 231–265, a távozás 570, a lámpák egyenként 29–78 bájt alatt alszanak ki.
A 2323-as port nyitva van az internet felé, ezért a telnetes jelszópróbálgató botok másodpercenként hívják, és root, admin és hasonló neveket gépelnek be. 2026-10-20-ig mind bekerült az utolsó betelefonálók közé. Most:
., _ és - jelet tartalmazhat; minden más (GET / HTTP/1.1) Anonymous lesz.| Menü | Elemek |
|---|---|
| Board | Dashboard · Bulletins… · Dev Log · System Info · BBS Network · Log off |
| Messages | Boards… · New Post… · Mail… · Oneliners · Live Chat · IRC #teletypegames · Voting Booth · Feedback to the Sysop… · Page the Sysop |
| People | Who is Online · Last Callers · User Listing · Hall of Fame · Team |
| Doors | Games Room… · Door Lobby… · SERMO · Commodore 64 · Commodore Plus/4 · Chat of Ra · TTG Trivia |
| You | Your Stats · Profile… · Register… · Sysop Console (csak jelszóval belépett sysopoknak) |
| Help | Ask the TTG Master… · What is coming up? · Where do I start? · Where are the games, files, wiki? · Which doors are there? · New to BBSes? · Keys · About |
Minden menüpontnak van súgója: amíg ki van jelölve, az alsó sor elmondja, mit csinál.
| Billentyű | Művelet |
|---|---|
Alt+betű |
A megfelelő felső menü megnyitása |
F10 |
A legbaloldalibb menü megnyitása |
F1 |
Kérdés a TTG Masternek |
F2 |
Üzenőfalak |
F3 |
Gyors hozzászólás |
F4 |
Chat |
F7 |
Levelezés (Mail) |
Alt-X |
Kilépés (Log off) |
Tab / Shift-Tab |
Fókuszléptetés az ablakon belül |
Enter |
A fókuszált gomb aktiválása / beküldés |
F5 / Alt-Enter |
Teljes képernyő és vissza a sok tartalmú ablakoknál; ugyanezt teszi a címsor [↑] / [↕] gombja vagy a dupla kattintás a címsoron |
F6 / Shift-F6 |
A következő / előző ablak előrehozása; egy ablakra kattintás is előrehozza |
Alt-1 … Alt-9 |
Az adott számú ablak előrehozása (a szám a felső keret jobb oldalán) |
Ctrl-F5 |
Ablak mozgatása a nyilakkal, méretezése Shift+nyilakkal (a Tab vált), az Enter befejezi (az F6 is, amíg ez az egyetlen ablak); egérrel a címsort vagy a ┘ sarkot kell húzni |
betű / Alt+betű |
Megnyomja az ablak azzal a gyorsbillentyűvel jelölt gombját (szövegmezőben Alttal) |
Esc |
A legfelső ablak vagy menü bezárása |
Másold az env-example fájlt .env néven:
| Változó | Alapérték | Leírás |
|---|---|---|
BBS_PORT |
2323 |
TCP-port. |
TELETYPE_BBS_SYSOPS |
üres | Sysop-nevek vesszővel elválasztva. A fiókjuk csak a bin/account-tal hozható létre. |
TELETYPE_BBS_DISCORD_WEBHOOK |
üres | Discord-webhook az új posztokhoz és a sysop-broadcastokhoz; üresen kikapcsolva. |
TELETYPE_BBS_ACCOUNTS_PATH |
data/accounts.csv |
Regisztrált nevek sózott PBKDF2-SHA256 hash-sel, 600-as fájlmóddal. |
TELETYPE_BBS_BOARDS_PATH |
data/boards |
Falankénti CSV-fájlok. |
TELETYPE_BBS_MESSAGES_PATH |
data/messages.dat |
Örökölt, egyfalas fájl; az első futáskor átkerül a General falra. |
TELETYPE_BBS_LAST_CALLERS_PATH |
data/last_callers.csv |
Befejezett hívások. |
TELETYPE_BBS_PROFILE_PATH |
data/profiles.csv |
Felhasználói profilok. |
TELETYPE_BBS_ONELINERS_PATH |
data/oneliners.csv |
Az oneliners fal. |
TELETYPE_BBS_MAIL_PATH |
data/mail.csv |
Privát levelek és visszajelzések, 600-as fájlmóddal. |
TELETYPE_BBS_LAST_READ_PATH |
data/last_read.csv |
Melyik regisztrált név meddig olvasta az egyes falakat. |
TELETYPE_BBS_VOTES_PATH |
data/votes.csv |
A Voting Booth szavazatai. |
TELETYPE_BBS_TRIVIA_SCORES_PATH |
data/trivia_scores.csv |
A TTG Trivia játszmái. |
TELETYPE_BBS_FTP_HOST |
ftp.teletypegames.org |
Az FTP-szerver, amelynek /WARP mappájából a Commodore-doorok a játékok blokkszámát veszik. |
TELETYPE_BBS_IRC_SERVER |
irc.libera.chat |
A csak olvasható csatornaablak IRC-szervere (TLS); üres = kikapcsolva. |
TELETYPE_BBS_IRC_PORT |
6697 |
A TLS-portja. |
TELETYPE_BBS_IRC_CHANNEL |
#teletypegames |
A csatorna, amit a board hallgat. |
TELETYPE_BBS_IRC_NICK |
ttgbbs |
A board nickje ott; ha foglalt, ttgbbs_. |
TELETYPE_BBS_IRC_PASSWORD |
üres | A nick NickServ-jelszava (SASL PLAIN); üres = nincs bejelentkezés. |
SERMO_LLM_URL |
a compose állítja | A SERMO modellje, http://llm:8080; üresen csak beégetett válaszok. |
SERMO_LLM_MODEL |
a compose állítja | A modell neve a modellszolgáltatásban, qwen3.5-0.8b. |
SERMO_LLM_API_KEY |
üres | A SERMO kulcsa a modellszolgáltatáshoz; nélküle a SERMO beégetett válaszokat ad. |
TELETYPE_BBS_LLM_URL / _MODEL / _API_KEY |
a SERMO-é | Ra és a TTG Master modellje; ha nincs megadva vagy üres, a SERMO_LLM_* értéket használja. |
A TELETYPE_BBS_SYSOPS listában szereplő nevet telneten nem lehet regisztrálni, így senki nem foglalhatja le elsőként. A fiókot — vagy bármelyik jelszó visszaállítását — a szerver shelljéből kell elvégezni:
docker exec -it teletype-bbs bin/account Tasi
docker compose up --build # vagy Ruby 3.x-szel: bundle install && ruby bbs.rb
telnet localhost 2323
A compose egy konténert indít, a teletype-bbs-t. A SERMO mögötti modell, a Qwen3.5 0.8B, a szerver közös modellszolgáltatásában fut, az interstack hálózaton http://llm:8080-ként; amíg nem válaszol, a SERMO beégetett válaszokat ad. A docker-compose.dev.yaml ehelyett a BBS mellett tartja a modellt: egy teletype-bbs-acp konténer a llama.cpp llama-server-ével, kulcs nélkül.
Egy door a TeletypeBBS#doors egy eleme (lib/domain/teletype_bbs.rb): a neve, a program, a címke a gyorsbillentyűjével, a legkeskenyebb képernyő, amire rajzol, és három szöveg (tag a C64-es listához, hint az állapotsorhoz, about a Door Lobbyhoz). A modern arc mindet deklarálja, és a Doors menüje magától felsorolja őket; a PETSCII-arc a 40 oszloposakat kínálja.
Door.new(name: :c64, program: Commodore.os(Commodore::C64, games: @games, sizes: @warp_sizes),
label: '&Commodore 64', cols: 40, tag: 'c64 + our games',
hint: 'A Commodore 64 at READY., with our C64 games on its disk: LOAD"$",8 lists them',
about: 'A Commodore 64 at its READY. prompt, with a small BASIC V2. …')
Egy door lehet BBS::FakeOS-definíció (SERMO, a Commodore-ok) vagy hívható objektum. A sermo gem egy revízióra van rögzítve a Gemfile.lock-ban; az entrypoint induláskor csak a rubbs-t frissíti. A sermo-bbs változása után emeld meg a bundle lock --update sermo paranccsal, és élesíts újra.
Ra és a TTG Master a modellszolgáltatás Qwen3.5 0.8B modelljén fut, a rubbs BBS::AI-ján át. Egy ilyen kis modell jó egy rövid, karakteres válaszban, de rossz a tényekben, ezért a tényeket a kód tartja: Ra talányait és a játék címét a kód adja, a deflect szabályok megválaszolják, amit a modell bárhogy kérdezve elrontana (kód, vers, „bot vagy?”), a Master megfogalmazását pedig a kód a tényekhez méri, mielőtt megjelenik. A Master tudástára (lib/characters/master_knowledge.yml, a C64-es archoz master_knowledge_c64.yml) csak az ezen a boardon lévő dolgokhoz ad menüutat; amit egy másik board visz, ahhoz a board nevét és portját.
A personákat méréssel hangoljuk, nem egy-egy válasz alapján: a bin/persona-eval ra|master|master_c64 3 többször felteszi a mérőkérdéseket (lib/characters/eval/), és megszámolja a hibákat: szerepből kiesés, markdown, túl hosszú válasz, a Masternél tévesztés (rossz menüút vagy elveszett tény).
docker exec teletype-bbs bin/persona-eval master 3
bbs.rb belépési pont: a terminál-kérdés, utána az egyik arc
bin/account fiók létrehozása / jelszó visszaállítása
bin/persona-eval egy karakter hibáinak számolása sok futáson át
bin/c64-bytes a C64-es képek bájtjai a vonalon
lib/
domain/teletype_bbs.rb a board: a tárolóikhoz kötött szolgáltatások, a doorok,
a hálózat listája, amit egy hívás több szolgáltatáson át tesz
domain/
repository/ node-ok, falak, katalógus, site (események, tagok), fiókok,
utolsó betelefonálók, profilok, oneliners, FTP (fájlméretek),
Gitea, levelek, olvasási jelzők, szavazatok, a hálózat
(várostérkép); http_json (GET + 5 perces cache)
service/ online, fal, játékok, site, fiók, chat, IRC, utolsó betelefonálók,
profil, oneliner, WARP-méretek, dev log, discord_notifier,
levelezés, szavazás, tagline-ok, hálózat, jelenet (amit
a klubház képei mutatnak, mindkét arcnak)
model/ értékobjektumok (MessageModel, GameModel, …)
doors/commodore.rb a C64- és a Plus/4-door; a commodore/basic.rb a BASIC-jük
doors/ra.rb Chat of Ra
doors/trivia.rb TTG Trivia
content/ szavazások, Trivia-kérdések, tagline-ok, hirdetmények, network.yml
content/art/ a klubház képei: modern/ (cp437) és c64/ (PETSCII)
characters/ Ra és a TTG Master: personák, talányok, tudástár, mérőkérdések
ui/arts.rb a képek betöltése és tárolása
ui/modern.rb a modern arc: modem, bejárat, ablakok, menük, doorok
ui/modern/ az irányítópult, a kép-helyiségek (várostérkép, játékterem),
a bejárat, a távozás, a kártyák, a vitrin, a formázók
ui/petscii.rb, ui/petscii/ a C64-es arc: bejárat, a klubház képei
(petscii/clubhouse.rb), az olvasó szekciók
data/
boards/<id>.csv falankénti üzenetek (automatikusan jön létre)
last_callers.csv befejezett hívások
profiles.csv felhasználói profilok
accounts.csv regisztrált nevek
oneliners.csv az oneliners fal
mail.csv, last_read.csv,
votes.csv, trivia_scores.csv
https://git.teletypegames.org/bbs/teletype-bbs