16.0 Utility Reference
Sysop utilities are native programs (C/C++) meant to run on the BBS computer or LAN, normally from exec/, needing a Synchronet installation. The wiki util:index page is an indexmenu hub rather than a full textbook — treat it as the catalog, then open each utility’s page.
Additional JS utilities run via JSexec. Third-party Linux helper zips are sometimes linked from the index; prefer stock tools when they cover the job.
Utilities already covered elsewhere in this manual
| Utility | Manual section |
|---|---|
scfg |
5.3 |
node |
3.1 |
uedit / allusers |
6.2 / 6.3 |
addfiles / delfiles / filelist |
10.10–10.12 |
qwknodes |
9.1.5 |
sbbsecho / echocfg |
9.4.1–9.4.2 |
When adding a new utility to your ops toolkit, read its wiki page for required paths (SBBSCTRL), whether the BBS must be stopped, and backup warnings.
Wiki: https://wiki.synchro.net/util:index
17.0 Customization
Customization spans display files, prompt text, colors, questionnaires, guru brains, and web templates. Hub: custom:index (index-style page).
Prefer:
- Edit files under
text/and overrides undermods/ - Leave stock
exec/pristine for easier upgrades - Keep a before/after copy of any
text.dator menu you rewrite
Wiki: https://wiki.synchro.net/custom:index
17.1 Text Files
Display/menu content and many system strings are driven by text files documented in config:text_files (also section 13.1). This is the primary “skin” of the terminal BBS.
Wiki: https://wiki.synchro.net/config:text_files
17.2 Message Variables (@-codes)
@-codes are message variables sandwiched in @ characters, names typically UPPERCASE, no spaces. They expand in sysop-posted content, many menus, and parts of text.dat. Also available via bbs.atcode() in JavaScript.
Important behaviors from the wiki:
- In message bases / email, @-codes expand for messages posted locally by user #1 (sysop) — not for arbitrary users’ posts (prevents macro abuse).
- Some names exist for PCBoard/Wildcat compatibility.
- PCBoard/Wildcat color codes that also use
@are separate from true @-codes; see color documentation.
Huge tables of codes live on the atcodes page — use it as a dictionary while designing menus (user alias, node, stats, dates, system info, etc.).
Wiki: https://wiki.synchro.net/custom:atcodes
17.3 Message Color Codes (Ctrl-A codes)
Ctrl-A (ASCII 1) attribute codes are two-byte sequences (Ctrl-A + operand) embedded in display files and messages. They beat raw ANSI for Synchronet because the Terminal Server can strip or translate them to match the caller’s terminal.
Highlights:
- Color and attribute changes, plus extra capabilities beyond ANSI
- Special form Ctrl-A
"filename includes another file - May need an editor that can insert ASCII 1; Synchronet-oriented editors help
- Works in menus, posts, extended file descriptions, and more
Always test menus with ANSI-off / dumb clients if you support them.
Wiki: https://wiki.synchro.net/custom:ctrl-a_codes
17.4 SIF Questionnaire File
SIF questionnaires gather structured answers from users (surveys, applications). The wiki documents file format and how Synchronet presents them. Use for new-user applications or periodic community polls; store results where your process expects (per wiki).
Wiki: https://wiki.synchro.net/custom:sif
17.5 GURU.DAT
ctrl/guru.dat (and additional guru brains) drive Artificial Guru chat personalities. The customization page describes the data format; Chat Features in SCFG attaches brains to guru entries. For JS/LLM gurus, follow the module/howto pages instead of forcing everything into .dat format.
Wiki: https://wiki.synchro.net/custom:guru · https://wiki.synchro.net/config:chat_features
20.0 Appendix
A — Command Line Specifiers
SCFG command-line fields (doors, protocol drivers, archivers, etc.) may include specifiers — macros expanded at execution time. Modules are launched with:
| Prefix | Meaning |
|---|---|
*example |
Run example.js or fall back to example.bin from mods/exec |
?example |
Run example.js only |
Specifiers (partial list — full table on wiki) include values such as:
%A— current user alias- Many additional
%codes for paths, node number, drop-file paths, protocol options, etc. (Windows vs Unix examples differ)
Also usable from Baja string functions and bbs.cmdstr() in JS. Always quote paths appropriately on Unix when expanding to spaces (prefer no spaces in Synchronet trees).
Wiki: https://wiki.synchro.net/config:cmdline
Customization workflow
- Sketch the menu tree on paper (logon → main → files/msgs/xtrn).
- Copy stock text files to editable instances only where you change them.
- Add Ctrl-A color sparingly; verify dumb-terminal readability.
- Insert @-codes for live data instead of hard-coding stats.
- Keep door command lines on specifiers, not absolute machine-specific hacks, when possible.
- Commit
text/+mods/to your own backup/repo.
Wiki: https://wiki.synchro.net/util:index · https://wiki.synchro.net/custom:index · https://wiki.synchro.net/custom:atcodes · https://wiki.synchro.net/custom:ctrl-a_codes · https://wiki.synchro.net/custom:sif · https://wiki.synchro.net/custom:guru · https://wiki.synchro.net/config:cmdline
More on stock vs mods/
Synchronet loads many JS modules from exec/ but will prefer the same filename in mods/ when present. That pattern is the supported way to customize str_cmds.js, xtrn_sec.js, logon scripts, and similar without forking upstream binaries.
When you override:
- Keep a comment at the top of your mod noting the upstream revision you started from.
- After upgrading Synchronet, diff your
mods/copies against newexec/files. - Do not scatter edits across both directories for the same script.
Display file tips
- Logon screens should stay short enough for slow links and screen readers / dumb terminals.
- Use consistent color semantics (e.g. controls in one color, data in another) via Ctrl-A.
- Put volatile announcements in a small include file rather than rewriting the whole logon menu daily.
- Remember @-code expansion rules so you do not expect user posts to expand macros.
Archiver / protocol command lines
File transfer and archive test command lines in SCFG are prime consumers of command-line specifiers. When a DOS archiver fails:
- Confirm 8.3 paths.
- Expand the configured line mentally with
%replacements fromconfig:cmdline. - Run the same binary manually from a node directory with a sample archive.
- Only then change SCFG.
Wiki (repeat hubs): https://wiki.synchro.net/config:cmdline · https://wiki.synchro.net/custom:atcodes · https://wiki.synchro.net/dir:index
See also
Web-side customization continues under SSJS templates (chapter 07 / https://wiki.synchro.net/custom:ssjs_template) when branding the HTTP UI to match terminal text/ art.