Read first
This manual describes source on main; installed binaries can be older or
built from another revision. Check the installed program's version and its
live app.describe or HELP response before relying on an API. An accepted
decision records the intended contract and can describe work still being
implemented; it is not proof that every planned feature is available.
- Repository rules and layout
- Mix gotchas: read before writing Mix.
- Component index: source paths, kinds and install profiles.
- Driving apps over the Bus: discovery, commands and captures.
Source and build map
One public repository, markc/mixos, holds one Cargo workspace and the site source. Paths below are relative to its root.
libs/mix/: themixCargo package and Rust library, with the lexer, parser, evaluator, builtins and language regression tests.cli/mix-shell/: themix-shelllibrary, owning the interactive shell, script runner, command dispatch and supervised Bus citizen runtime.cli/system/: thesystempackage that builds themixexecutable. Its default daemon personalities arenoded,monitord,maild,webdanddnsd. Other services, includingsettingsd,hostd,portaldandcompd, have their own packages and executables.apps/: GUI applications;services/: daemons;libs/: shared libraries. GUI apps use egui/eframe and wgpu, with common widgets inlibs/toolkit/. Each app links its libraries into its own executable: shared widget code changes require rebuilding and restarting each affected app.docs/mix/: the public Mix manual;docs/_build/gen-site.mix: the native Mix site generator, including this index andllms-full.txt.
In the designated Rust build environment,
cargo build --locked --profile release-fast -p system --bin mix produces
target/release-fast/mix. cargo build -p mix builds the language library,
not the shell executable. Installed binaries belong under /opt/mixos/bin.
Mix programs run directly with /opt/mixos/bin/mix script.mix; editing a
program does not require compiling Rust. Use mix builtins NAME for builtin
contracts, run_argv or run_argv_must for processes and ssh_mix for remote
Mix programs.
The .mix program / .mx document split is an accepted migration target.
Existing readers still use legacy names such as *.conf.mix and scene.mix;
check the owning reader before renaming data or assuming a loader's behaviour.