Simterm is an open-source Rust framework for building immersive, command-driven terminal games and experiences. This page explains what Simterm is, how it separates reusable engine code from campaign content, and what you can build with it — whether you are evaluating the framework, planning your first campaign, or exploring the source.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/0x-unkwn0wn/simterm/llms.txt
Use this file to discover all available pages before exploring further.
The core mental model
Simterm cleanly separates the framework (Rust runtime and terminal frontend) from the content (campaign data written in RON). You write missions, hosts, commands, text, and endings as data files; Simterm loads and interprets them at runtime..ron files that the loader reads from disk. This boundary means you can ship a private or commercial campaign separately from the open-source framework — the engine loads it at runtime without any recompilation.
The bundled sample campaign demonstrates a simulated hacking scenario. That scenario is a neutral illustration of the framework’s capabilities, not the only kind of experience you can build. Any fiction or system that benefits from a rich, command-driven terminal interface can be expressed as a Simterm campaign.
Two crates, one clean boundary
Simterm ships as a Cargo workspace with two crates:-
simterm-engineis a library crate. It contains the campaign data model, the RON loader, mutable game state, player action handlers, terminal emulation helpers, and the semantic validator. It has noratatuiorcrosstermdependency, so any frontend — or a headless test harness — can embed it without pulling in a terminal UI. -
simtermis the playable terminal binary. It parses CLI arguments, loads the campaign chosen by--campaign, owns terminal setup and teardown viaratatuiandcrossterm, dispatches player input to the engine, and provides optional per-mission audio playback. The frontend contains no campaign content.
Key features
Data-driven campaigns in RON
Missions, hosts, commands, objectives, endings, and theme all live in plain RON files. No Rust required to author or modify a campaign.
Virtual filesystem
Each target host exposes a navigable virtual filesystem with files, loot, hashes, reversible binaries, and encoded content for players to explore.
Declarative commands
Campaigns define custom commands with triggers, conditions, and effects — set flags, adjust trace, unlock achievements, complete missions — entirely in data, without writing Rust.
POSIX shell emulation
Commands like
uname, ps, netstat, ifconfig, env, grep, head, and wc are synthesized from the host definition. Players get a believable shell from data they already wrote.Multi-host network missions
Missions can model multi-host networks with pivot entry vectors, requiring players to
connect and pivot between machines before reaching the objective.Achievements system
The engine tracks built-in runtime achievements (first foothold, first root, clean operation) and campaigns can declare their own data-driven achievements with triggers like
ReadFile, CompleteMission, and ChooseEnding.Autoplay testing modes
--autoplay runs a visible automated playthrough as an end-to-end check. --autoplay-deterministic avoids probabilistic paths for strict CI validation. Use --autoplay-delay to control cadence.Semantic validation (--doctor)
--doctor runs a full semantic analysis — dangling references, unreachable content, bad ranges — and exits non-zero on errors. --check confirms a campaign loads and has missions without opening the TUI.Repository layout
The repository is a Cargo workspace. Framework code lives undercrates/; campaign content is loaded at runtime from outside the repository.
campaigns/ directory is the conventional place to put local or private campaigns during development. It is not part of the open-source repository.
What’s next
Quickstart
Run the sample campaign in under five minutes, explore CLI flags, and copy-paste your first campaign.
Campaign overview
Learn the structure of a campaign directory, the
campaign.ron root, and how missions chain together.