Saphan StudioDocs
Reference/Commands

saphan workspace

Manages this machine's registry of the workspaces its daemon serves (workspaces.json in Saphan Studio's configuration directory), and each workspace's inventory of source repositories.

Manages this machine's registry of the workspaces its daemon serves (workspaces.json in Saphan Studio's configuration directory), and each workspace's inventory of source repositories.

saphan workspace

saphan workspace import

Fills the registry from the configured default workspace plus any --path you give; each path is resolved to its real location, given an identity marker if it has none, and added or updated.

saphan workspace import
flagtypedefaultwhat it does
--pathstringArrayAnother workspace path to import (repeatable).

saphan workspace list

Lists the registered workspaces with their id, path and whether each is enabled, marking STALE any whose path no longer resolves to a directory.

saphan workspace list

saphan workspace migrate

Moves an existing workspace into the per-repository layout: repositories under sources/<repo> and worktrees under worktrees/<repo>/wt-<slug>, with the paths stored in the run record rewritten to match; signed records are left as signed. It also moves the trees of admitted remote (ssh) machines on those machines and re-signs their machine records. When --apply has remote machines to change, it is an owner act: it prints a one-time six-character code and waits for it to be typed back, and it is refused with no terminal (scripts, CI), inside the console's browser terminal, and after five wrong codes. Without --apply it only prints the moves; it refuses while any run is live or when a destination already exists, refuses when run through a gateway client instead of on the host that holds the record, and a run that stopped part-way is finished by the next --apply.

saphan workspace migrate
flagtypedefaultwhat it does
--applyboolfalseMake the moves; without it the command only rehearses and prints them.

saphan workspace register

Adds a workspace path to this machine's registry and prints its id. If the workspace has no identity marker (.saphan/workspace.json), one is created; the id comes from that marker, so a moved workspace keeps its entry, and registering the same path again, or a symlink to it, updates the one entry. Re-registering never re-enables a disabled entry.

saphan workspace register <path>

saphan workspace remove

Removes a workspace from this machine's registry, matched by id or by path; the workspace's files and record are left untouched.

saphan workspace remove <path|id>

saphan workspace repo

Reads and updates the workspace's inventory of source repositories, kept in <workspace>/.saphan/workspace.json.

saphan workspace repo

saphan workspace repo add

Adds an existing git repository to the inventory without moving or cloning it.

saphan workspace repo add <name>
flagtypedefaultwhat it does
--pathstringThe repository's path relative to the workspace root; defaults to sources/<name>.
--technologystringThe repository's technology, go or node; Saphan Studio derives the permissions of agents building in it from this, so omit it only for a repository no agent will build in.

saphan workspace repo list

Lists each repository's name, relative path and the state of that path, such as git, not-git, missing or linked-worktree.

saphan workspace repo list

saphan workspace repo set-build

Sets, or with --clear removes, the one-line build command saphan merge runs on the merged tree before the target branch moves, for example go build ./... && go vet ./.... ⚠ Anyone who can run this command in the workspace decides what every later merge of that repository executes.

saphan workspace repo set-build <name> [<command>]
flagtypedefaultwhat it does
--clearboolfalseRemove the build command; merges then land with no build check and say so.

saphan workspace repo set-technology

Sets, or with --clear removes, the technology (go or node) of a repository already in the inventory.

saphan workspace repo set-technology <name> [<technology>]
flagtypedefaultwhat it does
--clearboolfalseRemove the repository's technology declaration.

Global options apply to every command — see Every command.

On this page