Saphan StudioDocs
Reference/Commands

saphan install

Sets up this machine for Saphan Studio by running every step a new workspace needs, in order, and reporting each as already done, done now, or not done with the reason.

Sets up this machine for Saphan Studio by running every step a new workspace needs, in order, and reporting each as already done, done now, or not done with the reason. It is safe to run again: completed steps are left alone. You must name the workspace with --workspace (or the workspace environment variable); it is never guessed. Two steps ask for consent before writing (a permission file, and seating the assistant you run this from as your coordinating seat in the signed machine registry); without --yes they are skipped and named.

⚠ Two further steps are the owner's own acts: admitting this machine to the signed machine registry, and signing the write-set when the root key is on this machine. Each asks for the one-time code at your terminal; --yes does not answer for them, and without a terminal they are refused. The console's setup page confirms them with your passkey instead.

saphan install --workspace /path/to/workspace --yes
saphan install
flagtypedefaultwhat it does
--actorstringWho this installation belongs to; defaults to your Git user name, and the install refuses if Git does not know it either. Ignored when this machine already has an identity.
--defer-owner-actsboolfalseSkips the steps that need the owner's confirmation and reports them as waiting for your passkey; used by the console's setup page, not needed in a terminal.
--display-namestringYour name as it should appear in Saphan Studio; used only together with --actor, and only when this machine has no identity yet.
--emailstringYour email address; used only together with --actor, and only when this machine has no identity yet.
--for-setupboolfalsePrints this machine's steps in plain words, one line each, as the console's Welcome page shows them; add --verbose for the full report.
--gateway-sanstringArrayAn extra host name or address the gateway's certificate must include, for a machine reached at an address other than the console's; repeatable.
--kindstringWhat the workspace is for (by default coding, devsecops, sandbox or other); passed on to saphan init, which prints the owner's command to record it.
--operator-userstringWith --service-user: the operator's login, for whom this install creates their own device key and second machine entry; defaults to the user who ran sudo.
--owner-actsboolfalsePrints, as JSON, the steps this install would perform that need the owner's confirmation, then stops without writing or asking anything; used by the setup page.
--passkey-beginboolfalsePrints the passkey registration challenge for the setup page and stops; used by the setup page when the server is not running yet.
--passkey-registerboolfalseEnrols the passkey the setup page registered, read from the pipe named by --presence-grant-fd and authorised by a one-time code; used by the setup page only.
--presence-beginboolfalsePrints the passkey challenge the setup page's consent screen needs, bound to this install's owner steps, and stops; used by the setup page only.
--presence-grant-fdint3The inherited pipe descriptor from which the owner's passkey confirmation is read, standing in for typed confirmation of the named owner steps only; used by the setup page.
--service-userstringFor a machine-wide install: run every step that creates the store, secrets, keys, trust anchor, device key or seat as this system user, then check the file modes. Creating that user and setting ownership are printed for the owner to do, never run.
--start-at-loginbooltrueRegisters Saphan Studio's services with the service supervisor once this machine is admitted — to start when you log in on a per-user installation, at boot on a machine-wide one; set --start-at-login=false to record that it should not, which later runs remember.
--verboseboolfalseWith --for-setup, prints the full report of every step, including operator notes.
--yesboolfalseGives consent to the two steps that ask: writing a permission file and seating this assistant as your coordinating seat. It is never assumed, and it does not answer the owner's terminal confirmation.

Global options apply to every command — see Every command.