# scriptoriumlab/scriptorium-cli architecture

> Architecture diagram of the GitHub repository scriptoriumlab/scriptorium-cli, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/scriptoriumlab/scriptorium-cli
- Repository: https://github.com/scriptoriumlab/scriptorium-cli
- Video tour (about a minute): https://gitdiagram.com/scriptoriumlab/scriptorium-cli/video

## Overview

Scriptorium CLI is a Go developer toolchain whose documented `orium dev` workflow builds and tests the workspace, prepares either a Windows Sandbox or VMware VM, deploys product artifacts, starts a manual-test setup, monitors the environment, and cleans it up. The graph separates command orchestration, workspace build inputs, environment-specific workflow adapters, and environment infrastructure. The workflow is documented in the README; sampled source confirms orchestration and several adapter/runtime calls, while unsampled project and VM details are represented only at their supported directory paths.

Main entry points: [`internal/command/dev/command.go`](https://github.com/scriptoriumlab/scriptorium-cli/blob/master/internal/command/dev/command.go) (dev workflow), [`internal/project/project.go`](https://github.com/scriptoriumlab/scriptorium-cli/blob/master/internal/project/project.go) (Workspace), [`internal/command/dev/env/win/sandbox/command.go`](https://github.com/scriptoriumlab/scriptorium-cli/blob/master/internal/command/dev/env/win/sandbox/command.go) (Sandbox workflow), [`internal/command/dev/env/win/vm/command.go`](https://github.com/scriptoriumlab/scriptorium-cli/blob/master/internal/command/dev/env/win/vm/command.go) (VM workflow)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_commands["Command orchestration"]
  node_orium["orium CLI<br/>[main.go]"]
  node_dev["dev workflow<br/>[command.go]"]
end

subgraph group_workspace["Workspace and product"]
  node_config["Configuration<br/>[config.go]"]
  node_workspace_obj["Workspace<br/>[project.go]"]
  node_brush["Brush build<br/>[brush.go]"]
  node_inkstone["Inkstone build<br/>[inkstone.go]"]
  node_ink["Ink build"]
  node_dictionary["Dictionary source<br/>[dictionary.go]"]
  node_build_cmake["CMake runner<br/>[cmake.go]"]
  node_build_pnpm["pnpm runner<br/>[pnpm.go]"]
  node_product["Product paths<br/>[product.go]"]
end

subgraph group_adapters["Environment workflows"]
  node_sandbox_flow["Sandbox workflow<br/>[command.go]"]
  node_vm_flow["VM workflow<br/>[command.go]"]
end

subgraph group_infrastructure["Environment infrastructure"]
  node_sandbox_runtime["Sandbox runtime"]
  node_vm_runtime["VM runtime"]
end

node_developer(("Developer"))
node_windows_sandbox{{"Windows Sandbox"}}
node_vmware{{"VMware Workstation"}}

node_developer -->|"invokes"| node_orium
node_orium -->|"dispatches"| node_dev
node_dev -->|"loads workspace/product"| node_config
node_dev -->|"builds and tests"| node_workspace_obj
node_dev -->|"creates paths"| node_product
node_dev -->|"selects sandbox"| node_sandbox_flow
node_dev -->|"selects VM"| node_vm_flow
node_dev -->|"orchestrates stages"| node_sandbox_flow
node_dev -->|"orchestrates stages"| node_vm_flow
node_workspace_obj -->|"builds"| node_brush
node_workspace_obj -->|"builds"| node_inkstone
node_workspace_obj -->|"builds"| node_ink
node_workspace_obj -->|"locates source"| node_dictionary
node_brush -->|"configures/builds/tests"| node_build_cmake
node_inkstone -->|"configures/builds/tests"| node_build_cmake
node_ink -.->|"builds"| node_build_pnpm
node_workspace_obj -->|"returns artifacts"| node_dev
node_sandbox_flow -->|"loads sandbox settings"| node_config
node_vm_flow -->|"loads VM settings"| node_config
node_sandbox_flow -->|"reads deployment paths"| node_product
node_vm_flow -->|"reads deployment paths"| node_product
node_sandbox_flow -->|"prepares/deploys/starts"| node_sandbox_runtime
node_sandbox_flow -->|"monitors/cleans"| node_sandbox_runtime
node_vm_flow -->|"prepares/deploys/starts"| node_vm_runtime
node_vm_flow -->|"monitors/cleans"| node_vm_runtime
node_sandbox_runtime -->|"controls session"| node_windows_sandbox
node_vm_runtime -->|"controls VM"| node_vmware

click node_orium "https://github.com/scriptoriumlab/scriptorium-cli/blob/master/cmd/orium/main.go"
click node_dev "https://github.com/scriptoriumlab/scriptorium-cli/blob/master/internal/command/dev/command.go"
click node_config "https://github.com/scriptoriumlab/scriptorium-cli/blob/master/internal/config/config.go"
click node_workspace_obj "https://github.com/scriptoriumlab/scriptorium-cli/blob/master/internal/project/project.go"
click node_brush "https://github.com/scriptoriumlab/scriptorium-cli/blob/master/internal/project/brush.go"
click node_inkstone "https://github.com/scriptoriumlab/scriptorium-cli/blob/master/internal/project/inkstone.go"
click node_ink "https://github.com/scriptoriumlab/scriptorium-cli/tree/master/internal/project"
click node_dictionary "https://github.com/scriptoriumlab/scriptorium-cli/blob/master/internal/project/dictionary.go"
click node_build_cmake "https://github.com/scriptoriumlab/scriptorium-cli/blob/master/internal/build/cmake/cmake.go"
click node_build_pnpm "https://github.com/scriptoriumlab/scriptorium-cli/blob/master/internal/build/pnpm/pnpm.go"
click node_product "https://github.com/scriptoriumlab/scriptorium-cli/blob/master/internal/product/product.go"
click node_sandbox_flow "https://github.com/scriptoriumlab/scriptorium-cli/blob/master/internal/command/dev/env/win/sandbox/command.go"
click node_vm_flow "https://github.com/scriptoriumlab/scriptorium-cli/blob/master/internal/command/dev/env/win/vm/command.go"
click node_sandbox_runtime "https://github.com/scriptoriumlab/scriptorium-cli/tree/master/internal/env/win/sandbox"
click node_vm_runtime "https://github.com/scriptoriumlab/scriptorium-cli/tree/master/internal/env/win/vm"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_orium,node_dev toneBlue
class node_config,node_workspace_obj,node_brush,node_inkstone,node_ink,node_dictionary,node_build_cmake,node_build_pnpm,node_product toneAmber
class node_sandbox_flow,node_vm_flow toneMint
class node_sandbox_runtime,node_vm_runtime toneRose
class node_developer,node_windows_sandbox,node_vmware toneIndigo
```

## Components

### Command orchestration

- [orium CLI](https://github.com/scriptoriumlab/scriptorium-cli/blob/master/cmd/orium/main.go): `cmd/orium/main.go`
- [dev workflow](https://github.com/scriptoriumlab/scriptorium-cli/blob/master/internal/command/dev/command.go): `internal/command/dev/command.go`

### Workspace and product

- [Configuration](https://github.com/scriptoriumlab/scriptorium-cli/blob/master/internal/config/config.go): `internal/config/config.go`
- [Workspace](https://github.com/scriptoriumlab/scriptorium-cli/blob/master/internal/project/project.go): `internal/project/project.go`
- [Brush build](https://github.com/scriptoriumlab/scriptorium-cli/blob/master/internal/project/brush.go): `internal/project/brush.go`
- [Inkstone build](https://github.com/scriptoriumlab/scriptorium-cli/blob/master/internal/project/inkstone.go): `internal/project/inkstone.go`
- [Ink build](https://github.com/scriptoriumlab/scriptorium-cli/tree/master/internal/project): `internal/project`
- [Dictionary source](https://github.com/scriptoriumlab/scriptorium-cli/blob/master/internal/project/dictionary.go): `internal/project/dictionary.go`
- [CMake runner](https://github.com/scriptoriumlab/scriptorium-cli/blob/master/internal/build/cmake/cmake.go): `internal/build/cmake/cmake.go`
- [pnpm runner](https://github.com/scriptoriumlab/scriptorium-cli/blob/master/internal/build/pnpm/pnpm.go): `internal/build/pnpm/pnpm.go`
- [Product paths](https://github.com/scriptoriumlab/scriptorium-cli/blob/master/internal/product/product.go): `internal/product/product.go`

### Environment workflows

- [Sandbox workflow](https://github.com/scriptoriumlab/scriptorium-cli/blob/master/internal/command/dev/env/win/sandbox/command.go): `internal/command/dev/env/win/sandbox/command.go`
- [VM workflow](https://github.com/scriptoriumlab/scriptorium-cli/blob/master/internal/command/dev/env/win/vm/command.go): `internal/command/dev/env/win/vm/command.go`

### Environment infrastructure

- [Sandbox runtime](https://github.com/scriptoriumlab/scriptorium-cli/tree/master/internal/env/win/sandbox): `internal/env/win/sandbox`
- [VM runtime](https://github.com/scriptoriumlab/scriptorium-cli/tree/master/internal/env/win/vm): `internal/env/win/vm`

### Other components

- **Developer**
- **Windows Sandbox**
- **VMware Workstation**

## Connections

- Developer → orium CLI: invokes
- orium CLI → dev workflow: dispatches
- dev workflow → Configuration: loads workspace/product
- dev workflow → Workspace: builds and tests
- dev workflow → Product paths: creates paths
- dev workflow → Sandbox workflow: selects sandbox
- dev workflow → VM workflow: selects VM
- dev workflow → Sandbox workflow: orchestrates stages
- dev workflow → VM workflow: orchestrates stages
- Workspace → Brush build: builds
- Workspace → Inkstone build: builds
- Workspace → Ink build: builds
- Workspace → Dictionary source: locates source
- Brush build → CMake runner: configures/builds/tests
- Inkstone build → CMake runner: configures/builds/tests
- Ink build → pnpm runner: builds
- Workspace → dev workflow: returns artifacts
- Sandbox workflow → Configuration: loads sandbox settings
- VM workflow → Configuration: loads VM settings
- Sandbox workflow → Product paths: reads deployment paths
- VM workflow → Product paths: reads deployment paths
- Sandbox workflow → Sandbox runtime: prepares/deploys/starts
- Sandbox workflow → Sandbox runtime: monitors/cleans
- VM workflow → VM runtime: prepares/deploys/starts
- VM workflow → VM runtime: monitors/cleans
- Sandbox runtime → Windows Sandbox: controls session
- VM runtime → VMware Workstation: controls VM
