Skip to content

One command to install, one to initialise, nothing else to trust

The installer downloads one archive for your machine, verifies its digest against the release metadata before unpacking anything, and installs atomically; no git, no Rust, no Node, no root.

status
feature status: stable
domain
Surfaces

What it does

majordomus init creates the layer from the tool's skeleton and refuses to overwrite an existing one; --extend adds what is missing and overwrites nothing. A repository set up before the layer existed is moved by migrate, previewed with --dry-run, with a verified backup. The tool itself needs a POSIX shell, git and a checksum program, and it never reaches the network while it works.

With --personal, on init or on the installer, the same layer is created as one person's own in a shared repository: it is covered in the git directory's own exclude file, nothing is written to .gitignore, and the command fails unless git status reads the same after it as before. update and capture install cover what they write the same way, doctor re-verifies it on every run, and init --extend --shared hands the layer to the team when it has made its case.

What it does not do

It does not install anything into your project beyond .ai/ and the files the policy names, and it does not install git hooks: doctor names the two lines you still need to add. A personal layer does not travel: it is one checkout's, on one machine, until it is shared. A Windows archive is not published while the shell half has no Windows answer, and the distribution model says so rather than shipping an executable nothing can drive.

Why it exists

Operational moments from the Why catalogue that name one of this feature's mechanisms. Nothing here was assigned: a moment appears because it names a rule, a command, a capability or a claim this feature also names.

How it works

The capability modules of the executable this feature names, each with the capabilities it composes. The interfaces each one reaches are listed under Interfaces below: they are projections of one declaration, not separate registrations.

Distribution distribution behaviorally verified

How this project is packaged, published and installed: the platforms a release builds, the artifact names the one naming function derives, the installer's canonical command, the releases that were published, and what this build itself is. Every answer comes from share/distribution.yaml and the release records; no surface here states a fact of its own.

Release release implemented

What this project has shipped and what it would ship next, derived rather than maintained: the changelog composes the layer's release records, the decisions dated inside each release's window and the conventional commits in its range; the version report reads the one place the version is authored and the projection the shell tool prints, and says what the public contract requires it to become — or that it cannot be measured, and so decides nothing — with what the commits since the last release imply beside it as evidence.

The objects it is made of

Kinds of the layer. Each is a schema, a source class and a file on disk; the number beside it is what this repository holds today, counted at build time.

  • distribution-model1
  • release-record36

Where it sits

domain
Surfaces — One declaration in the repository becomes the command line, the HTTP API, MCP, the UI, the Cockpit, the documentation and this site, and a projection that disagrees with it fails the build.
names
Policy

Interfaces

Each capability behind it, on every interface it is projected onto. A link goes to this site's reference for that interface; an HTTP route and an MCP tool are answered by a running majordomus serve, not by this site.

Evidence

What is guaranteed

Each claim this feature names, with the status its row declares, the verdict the recorded runs support, and the test that settles it.

Executable use cases

The rules that hold it

  • blocking Distribution has one canonical modelproject.distribution-canonical
  • blocking Portable shellproject.portable-shell
  • blocking No network, no telemetry, no eval, no silent overwrite, no recursive deletionproject.no-network-no-eval
  • blocking A personal layer changes nothing sharedproject.a-personal-layer-changes-nothing-shared

The decisions behind it

Using it

The commands that run it

  • majordomus init setup

    Create the .ai/ layer in this repository, and refuse to overwrite an existing one.

  • majordomus migrate setup

    Move pre-.ai project data from .majordomus/ into .ai/, explicitly and backed up.

  • majordomus version inspect · read-only

    Print the version, without needing a repository or an installation.

  • majordomus archive inspect

    Take a snapshot of the tracked tree that can be read, or checked, somewhere else.

From the executable's command line

The synopsis of each, as the executable's own help prints it.

Where this page comes from

the file
.ai/repo/features/install.md
the same answer
majordomus product show install

Searches the titles and descriptions of every page this site publishes.