Installation
Website reading edition · D1–D3 accepted source, schema 37. The older 0.1.0 binary download predates this work. Existing Files and transfer foundations are documented here; full Files caller UX and transfer acceptance remain D4 work. Current status · Start here.
Status
- Verified: The prebuilt
aarch64-apple-darwinarchive was built, checksum verified, extracted, and used for clean setup and live client acceptance on Apple Silicon macOS. Locked source installation remains supported. - Development Preview: The archive is not signed with an Apple Developer ID and is not notarized. Follow the checksum-first macOS first-run procedure.
- Planned: Linux, Windows, Intel macOS binaries, native installers, service units, signing/notarization, and an automatic release channel.
Current distribution status
Normal operators should use the identified Development Preview archive when it is downloaded from the official GitHub Release. It contains a prebuilt binary and does not require Git, Cargo, or repository research fixtures. Verify and install it exactly as described in the Development Preview Package.
The published archive was downloaded again from GitHub and matched canonical
SHA-256
6c4d7ad492b1acee92481a3a577b49934c08e79822e98de50e918489a8fc9c97.
Source builds are the developer/unsupported-host route. The code is designed for portability, but only the Apple Silicon package has release acceptance.
Prebuilt prerequisites
You need the .tar.gz archive, its adjacent .sha256, an Apple Silicon Mac,
and a terminal. SQLite is embedded; no separate database server is required.
Source-build prerequisites
You need:
- Git;
- a stable Rust toolchain with Cargo (1.97.1 built the accepted preview);
- the host compiler/linker prerequisites required by Rust; and
- a terminal for the interactive setup password prompts.
SQLite is bundled by the Rust dependency; a separately managed SQLite server is not required. Terminal clients are installed separately after the server. The Cargo manifests do not currently declare a minimum supported Rust version, so older compiler compatibility is not claimed.
Developer source workflow
If you do not already have a checkout:
git clone https://github.com/cdaters/spitfire-ng.git
cd spitfire-ng
git switch main
Confirm the checkout before building:
git status --short --branch
git log -1 --oneline
Install with Cargo
From the repository root:
cargo install --path crates/sf-bbs --locked --force
Cargo normally installs spitfire beneath its configured binary directory,
usually $HOME/.cargo/bin. Ensure that directory is on PATH, then verify:
spitfire --version
--force ensures that a previously installed preview binary with the same
0.1.0 package version is replaced by the current checkout. To keep a preview
installation isolated, select a prefix:
cargo install --path crates/sf-bbs --root ./local-install --locked --force
./local-install/bin/spitfire --version
If the exact dependency set is already cached and network access is
unavailable, add --offline. Offline mode cannot fetch missing dependencies:
cargo install --path crates/sf-bbs --locked --force --offline
Build without installing
For a repository-local build:
cargo build --release -p sf-bbs
./target/release/spitfire --version
Use the same resolved binary consistently for setup, run, backup, and restore. For preview upgrades, preserve the old binary/source revision with a cold backup; see Upgrades.
Verify the checkout
Developers and release builders should run the complete workspace gates:
cargo fmt --all --check
cargo test --workspace
cargo clippy --workspace --all-targets -- -D warnings
git diff --check
A Sysop installing an identified source revision does not need the ignored historical research corpus to create or run a native board.
Installation boundaries
- Do not run
init-fixture; it is a development/test-board command, not the first-time operator path. - Do not copy an existing board as a substitute for
setup. - Do not pipe setup answers from a file. The initial password reader requires a controlling terminal and intentionally disables echo.
- Do not expose Telnet, RAW, or RLogin to an untrusted network without understanding that they do not encrypt caller passwords or session data. Prefer the disabled-by-default SSH caller listener for encrypted remote terminal access; verify its board-local host fingerprint, firewall, and login-identifier policy before a non-loopback bind. SSH provides the BBS only, never host administration.
Source: public docs/operator/installation.md. Navigation is adapted for this site; stale overview version/networking labels are reconciled with the accepted D3 checkpoint.