Welcome to context,

The standalone context distribution has the following structure. Installations
like texlive use a different organization.

    tex/texmf-context                 : the files in this tree (zip)
    tex/texmf-<platform>/bin          : the tex binaries and runners
    tex/texmf-modules                 : optional user installed modules
    tex/texmf-project                 : user project files
    tex/texmf-fonts/data/<collection> : user installed fonts

There is only one binary: luametatex, two if you also have luatex, so the amount
of binary code is rather small. The mtxrun and context runners (stubs) are links
but when that doesn't work you can make copies luametatex (which is not that
large anyway). Because luametatex is also its own runner, there are no
dependencies on other binaries.

    luametatex[.exe]   : the main tex binary, also runner [around 3MB]

    mtxrun[.exe]       : a (sym)link to luametatex
    context[.exe]      : a (sym)link to luametatex

    mtxrun.lua         : the main runner code
    context.lua        : the context runner code

    luatex[.exe]       : optional

The lua files have to be alongside its runner. Wrapping a runner in some launcher
makes no sense and is not supported. The whole idea is to have one single
independent framework that is the same on all main platforms (windows, linux,
osx). The mtxrun runner also handles the other mtx-* scripts that are in the
context tree, which is why we have only a few files in the binary path. It also
reduces the risk for clashes in binary names.

Once the bin path is added to the PATH environment variable the commands:

  context
  mtxrun

will manage your tex runs. For example:

  mtxrun --generate
  mtxrun --script fonts --reload

  context --make
  context --make pdftex
  context --make luatex

  context          foo.tex
  context --pdftex foo.tex
  context --luatex foo.tex

When mkii (with pdftex or xetex) is used the texexec ruby script is launched. By
using the runners the likelyhood of a clash with other program in a tex
distriubution is minimized. Other ways of running context and its related scripts
is not officially supported by the:

An installation can be done using the installer but also by unzipping the archive
or fetching from github (contextgarden). You can, if needed, compile the binary
yourself from the includes source code.

All tex resources (macros, styles, fonts, patterns, etc.) are located relative
to the binary path so you only need to make sure that the binary is in the path.

The project and font trees can be shared (using links) and are untouched by the
installers. By keeping fonts in the tree you retain stability, By using the
project tree you can make sure that your styles are found when you process files
outside the tex tree.

After installing you need to run 'mtxrun --generate' so that a successive
'context' run can find the files it needs.

You can get help and more information on the context garden, mailing lists and user
forums cq. platforms.

Per mid 2025 the reference installation described here uses some 340 MB disk
space, much of which is taken by the documentation. If needed you can also
install context in texlive in which case you end up with 9.2 GB for a full
installation and even 560 MB for context only because quite some files and
programs get installed that we don't need or even support. For the record:
luametatex formats are generated but luatex not (xetex format generation fails
and hb engines are present but not supported anyway). Just stick to the regular
'mtxrun' and 'context' commands. Also be aware that support for commercial (os
related) fonts are not installed by default. Support on the mailing lists uses
the reference installation so in case of troubles, try that one first.
