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 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.
| flag | type | default | what it does |
|---|---|---|---|
--path | stringArray | Another 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 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.
| flag | type | default | what it does |
|---|---|---|---|
--apply | bool | false | Make 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 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 repo
Reads and updates the workspace's inventory of source repositories, kept in <workspace>/.saphan/workspace.json.
saphan workspace repo add
Adds an existing git repository to the inventory without moving or cloning it.
| flag | type | default | what it does |
|---|---|---|---|
--path | string | The repository's path relative to the workspace root; defaults to sources/<name>. | |
--technology | string | The 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 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.
| flag | type | default | what it does |
|---|---|---|---|
--clear | bool | false | Remove 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.
| flag | type | default | what it does |
|---|---|---|---|
--clear | bool | false | Remove the repository's technology declaration. |
Global options apply to every command — see Every command.