Skip to content

SI CLI Reference

The si CLI is a unified command-line tool for managing System Initiative schemas, templates, and components.

Global Options

All commands support these global options:

OptionTypeDescriptionDefault
--auth-api-url <URL>stringAuth API endpoint URLhttps://auth-api.systeminit.com
--base-url <URL>stringAPI endpoint URL-
--api-token <TOKEN>stringYour System Initiative API token-
--root <PATH>stringProject root directory (searches for .siroot)Auto-discovers from current directory
-v, --verbose [level]numberEnable verbose logging (0-4)2
--no-colorflagDisable colored output-
-h, --helpflagShow help-
-V, --versionflagShow version-

Verbosity Levels

  • 0 - Errors only
  • 1 - Errors + Warnings
  • 2 - Errors + Warnings + Info (default)
  • 3 - Errors + Warnings + Info + Debug
  • 4 - Errors + Warnings + Info + Debug + Trace

Environment Variables

VariableDescription
SI_AUTH_API_URLAuth API endpoint URL
SI_BASE_URLAPI endpoint URL
SI_API_TOKENYour System Initiative Workspace API token (required for authenticated commands)
SI_ROOTProject root directory (searches for .siroot if not specified)

whoami

Displays authenticated user information.

Syntax

bash
si whoami

Parameters

None

completion

Generate shell completions.

completion bash

Generate shell completions for bash.

Syntax

bash
si completion bash

Parameters

None


completion fish

Generate shell completions for fish.

Syntax

bash
si completion fish

Parameters

None


completion zsh

Generate shell completions for zsh.

Syntax

bash
si completion zsh

Parameters

None


login

Login to System Initiative.

Syntax

bash
si login

Parameters

None

logout

Logout from System Initiative.

Syntax

bash
si logout [OPTIONS]

Parameters

NameTypeRequiredDescriptionDefault
--clearflagfalseAlso delete stored tokens for the current user from diskfalse

workspace

Manage workspaces you have access to.

workspace switch

Switch to a different workspace.

Syntax

bash
si workspace switch [workspace]

Parameters

NameTypeRequiredDescription
workspacestringfalseWorkspace to switch to

workspace create

Create a new workspace.

Syntax

bash
si workspace create <name>

Parameters

NameTypeRequiredDescription
namestringtrueName of workspace

workspace leave

Leave a workspace (remove yourself as a member).

Syntax

bash
si workspace leave <workspace>

Parameters

NameTypeRequiredDescription
workspacestringtrueWorkspace ID or name to leave

WARNING

You cannot leave your current workspace. Switch to a different workspace first using si workspace switch.

workspace delete

Delete a workspace (soft delete - can be recovered by contacting support).

Syntax

bash
si workspace delete <workspace>

Parameters

NameTypeRequiredDescription
workspacestringtrueWorkspace ID or name to delete

WARNING

You cannot delete your current workspace. Switch to a different workspace first using si workspace switch.

To recover a deleted workspace, contact customer service at support@systeminit.com. Note that this operation will leave any existing resources running.


workspace members

Manage workspace members (view and invite/update).

workspace members list

List all members of the current workspace.

Syntax

bash
si workspace members list
Parameters

None

Output

Displays a table showing:

  • Email address
  • Nickname
  • Role (OWNER, APPROVER, or COLLABORATOR)

Members are sorted by role (Owner first, then Approvers, then Collaborators).

Example
bash
$ si workspace members list

Members of workspace "Production":

Email                    Nickname  Role
alice@example.com        Alice     OWNER
bob@example.com          Bob       APPROVER
charlie@example.com      Charlie   COLLABORATOR

Total members: 3

workspace members manage

Invite new members or update existing member roles in the current workspace.

Syntax

bash
si workspace members manage [email] [OPTIONS]
Parameters
NameTypeRequiredDescription
emailstringfalseSingle email to invite as collaborator
--approversstringfalseComma-separated list of emails to invite/update as approvers
Behavior

For new members:

  • Members are invited to the workspace
  • Default role is collaborator
  • Members invited with --approvers are promoted to approver role after invitation

For existing members:

  • Detects if the user is already a member
  • Updates their role if different from the requested role
  • Supports both role upgrades (collaborator → approver) and downgrades (approver → collaborator)
  • Skips invitation if user already has the correct role
Examples
bash
# Invite a single collaborator
si workspace members manage alice@example.com

# Invite multiple collaborators
si workspace members manage alice@example.com,bob@example.com

# Invite/promote users to approvers
si workspace members manage --approvers charlie@example.com,dave@example.com

# Promote existing collaborator to approver
si workspace members manage --approvers alice@example.com

# Demote existing approver to collaborator
si workspace members manage bob@example.com

TIP

All members are invited as collaborators by default. Use --approvers to invite or promote members to the approver role, which allows them to approve change sets and invite other members.


change-set

Manage change sets.

change-set create

Create a new change set.

Syntax

bash
si change-set create <name>

Parameters

NameTypeRequiredDescription
namestringtrueName of change set

change-set abandon

Abandon (delete) a change set.

Syntax

bash
si change-set abandon <change-set-id-or-name>

Parameters

NameTypeRequiredDescription
change-set-id-or-namestringtrueChange set ID or name

change-set open

Open a change set in the browser.

Syntax

bash
si change-set open <change-set-id-or-name>

Parameters

NameTypeRequiredDescription
change-set-id-or-namestringtrueChange set ID or name

change-set apply

Apply a change set to HEAD.

Syntax

bash
si change-set apply <change-set-id-or-name>

Parameters

NameTypeRequiredDescription
change-set-id-or-namestringtrueChange set ID or name

change-set list

List all change sets.

Syntax

bash
si change-set list

Parameters

None

ai-agent

Manages the SI AI Agent (MCP server).

ai-agent init

Initialize AI agent (one-time setup: configure token and create MCP files).

Syntax

bash
si ai-agent init [OPTIONS]

Parameters

NameTypeRequiredDescriptionDefault
--target-dirstringfalseDirectory to create config filesCurrent directory
--toolstringfalseAI tool to use: claude, codex, opencode, cursor-

ai-agent start

Launch Claude Code (MCP server starts automatically).

Syntax

bash
si ai-agent start [OPTIONS]

Parameters

NameTypeRequiredDescriptionDefault
--toolstringfalseAI tool to launchclaude

ai-agent config

View or update AI agent configuration.

Syntax

bash
si ai-agent config [OPTIONS]

Parameters

NameTypeRequiredDescriptionDefault
--showflagfalseShow current configuration (default if no other options)false
--update-tokenflagfalseUpdate the API tokenfalse
--toolstringfalseUpdate the AI tool: claude, cursor, windsurf, none-

ai-agent stdio

Run MCP server in stdio mode (for external AI tools to connect).

Syntax

bash
si ai-agent stdio

Parameters

None

schema

Manage schemas: initialize project, generate functions locally, pull from and push to remote workspaces.

schema init

Initialize a new System Initiative project in the current or specified directory.

Syntax

bash
si schema init [ROOT_PATH]

Parameters

NameTypeRequiredDescriptionDefault
ROOT_PATHstringfalseDirectory to initializeCurrent directory

schema action generate

Generate action functions for schemas.

Syntax

bash
si schema action generate [SCHEMA_NAME] [ACTION_NAME]

Parameters

NameTypeRequiredDescription
SCHEMA_NAMEstringfalseName of the schema
ACTION_NAMEstringfalseAction name: create, destroy, refresh, update

schema authentication generate

Generate authentication functions for schemas.

Syntax

bash
si schema authentication generate [SCHEMA_NAME] [AUTH_NAME]

Parameters

NameTypeRequiredDescription
SCHEMA_NAMEstringfalseName of the schema
AUTH_NAMEstringfalseName of the authentication function

schema codegen generate

Generate code generator functions for schemas.

Syntax

bash
si schema codegen generate [SCHEMA_NAME] [CODEGEN_NAME]

Parameters

NameTypeRequiredDescription
SCHEMA_NAMEstringfalseName of the schema
CODEGEN_NAMEstringfalseName of the code generator

schema management generate

Generate management functions for schemas.

Syntax

bash
si schema management generate [SCHEMA_NAME] [MANAGEMENT_NAME]

Parameters

NameTypeRequiredDescription
SCHEMA_NAMEstringfalseName of the schema
MANAGEMENT_NAMEstringfalseName of the management function

schema qualification generate

Generate qualification functions for schemas.

Syntax

bash
si schema qualification generate [SCHEMA_NAME] [QUALIFICATION_NAME]

Parameters

NameTypeRequiredDescription
SCHEMA_NAMEstringfalseName of the schema
QUALIFICATION_NAMEstringfalseName of the qualification function

schema scaffold generate

Generate a complete schema scaffold with all default functions.

Syntax

bash
si schema scaffold generate [SCHEMA_NAME]

Parameters

NameTypeRequiredDescription
SCHEMA_NAMEstringfalseName of the schema to scaffold

schema pull

Pulls schemas from your remote System Initiative workspace. Supports wildcard patterns like Fastly::* to pull all schemas in a category, or * to pull all schemas.

Syntax

bash
si schema pull [SCHEMA_NAME...]

Parameters

NameTypeRequiredDescription
SCHEMA_NAMEstring[]falseSchema names to pull (supports wildcards)
--builtinsflagfalseInclude builtin schemas (schemas you don't own)

schema push

Pushes schemas to your remote System Initiative workspace.

Syntax

bash
si schema push [SCHEMA_NAME...]

Parameters

NameTypeRequiredDescription
SCHEMA_NAMEstring[]falseSchema names to push
-s, --skip-confirmationflagfalseSkip confirmation prompt
-b, --update-builtinsflagfalseChange builtin schema, without creating overlays

schema contribute

Contribute a schema to the module index (works on HEAD change set only).

Syntax

bash
si schema contribute <SCHEMA>

Parameters

NameTypeRequiredDescription
SCHEMAstringtrueName of the schema

schema overlay

Manage schema overlays: generate overlay functions and push them to remote workspaces.

schema overlay action generate

Generate action overlay functions.

Syntax

bash
si schema overlay action generate [SCHEMA_NAME] [OVERLAY_NAME]
Parameters
NameTypeRequiredDescription
SCHEMA_NAMEstringfalseName of the schema
OVERLAY_NAMEstringfalseName of the action overlay

schema overlay authentication generate

Generate authentication overlay functions.

Syntax

bash
si schema overlay authentication generate [SCHEMA_NAME] [OVERLAY_NAME]
Parameters
NameTypeRequiredDescription
SCHEMA_NAMEstringfalseName of the schema
OVERLAY_NAMEstringfalseName of the authentication overlay

schema overlay codegen generate

Generate code generator overlay functions.

Syntax

bash
si schema overlay codegen generate [SCHEMA_NAME] [OVERLAY_NAME]
Parameters
NameTypeRequiredDescription
SCHEMA_NAMEstringfalseName of the schema
OVERLAY_NAMEstringfalseName of the codegen overlay

schema overlay management generate

Generate management overlay functions.

Syntax

bash
si schema overlay management generate [SCHEMA_NAME] [OVERLAY_NAME]
Parameters
NameTypeRequiredDescription
SCHEMA_NAMEstringfalseName of the schema
OVERLAY_NAMEstringfalseName of the management overlay

schema overlay qualification generate

Generate qualification overlay functions.

Syntax

bash
si schema overlay qualification generate [SCHEMA_NAME] [OVERLAY_NAME]
Parameters
NameTypeRequiredDescription
SCHEMA_NAMEstringfalseName of the schema
OVERLAY_NAMEstringfalseName of the qualification overlay

schema overlay push

Pushes overlay funcs to your remote System Initiative workspace.

Syntax

bash
si schema overlay push [SCHEMA_NAME...]
Parameters
NameTypeRequiredDescription
SCHEMA_NAMEstring[]falseSchema names (overlays) to push

component

Component-related operations.

component get

Get component data by name or ID.

Syntax

bash
si component get <component> [OPTIONS]

Parameters

NameTypeRequiredDescriptionDefault
componentstringtrueComponent name or ID-
-c, --change-setstringfalseChange set ID or nameHEAD
-o, --outputstringfalseOutput format: info, json, or yamlinfo
--cachestringfalseCache output to file; format determined by file extension (.json, .yaml, .yml)-
--rawflagfalseOutput raw API response as JSON and exitfalse

component create

Create component from JSON/YAML file (idempotent).

Syntax

bash
si component create <input-file> [OPTIONS]

Parameters

NameTypeRequiredDescriptionDefault
input-filestringtruePath to input file (JSON or YAML)-
-c, --change-setstringfalseChange set ID or nameHEAD
-o, --outputstringfalseOutput format: info, json, or yamlinfo
--cachestringfalseCache output to file; format determined by file extension-
--rawflagfalseOutput raw API response as JSON and exitfalse

component update

Update a component from JSON/YAML file (idempotent).

Syntax

bash
si component update <input-file> --change-set <id-or-name> [OPTIONS]

Parameters

NameTypeRequiredDescription
input-filestringtruePath to input file (JSON or YAML)
-c, --change-setstringtrueChange set ID or name
--componentstringfalseComponent ID or name (overrides componentId from file)
--dry-runflagfalseShow diff without applying changes

component delete

Delete a component by name or ID.

Syntax

bash
si component delete <component> --change-set <id-or-name> [OPTIONS]

Parameters

NameTypeRequiredDescription
componentstringtrueComponent name or ID
-c, --change-setstringtrueChange set ID or name
--dry-runflagfalsePreview deletion without applying changes

component erase

Erase a component by name or ID.

Syntax

bash
si component erase <component> --change-set <id-or-name> [OPTIONS]

Parameters

NameTypeRequiredDescription
componentstringtrueComponent name or ID
-c, --change-setstringtrueChange set ID or name
--dry-runflagfalsePreview deletion without applying changes

Search for components using a search query.

Syntax

bash
si component search <query> [OPTIONS]

Parameters

NameTypeRequiredDescriptionDefault
querystringtrueSearch query-
-c, --change-setstringfalseChange set ID or nameHEAD
-o, --outputstringfalseOutput format: info, json, or yamlinfo
-a, --attributestring[]falseAttribute paths to include in output (repeatable)-
--full-componentflagfalseShow full component details for each resultfalse

component upgrade

Upgrade component(s) to the latest schema version.

This command checks if components can be upgraded before creating a change set, preventing orphaned change sets for no-op operations. If no change set is specified, it automatically creates one with a descriptive name.

Syntax

bash
# Upgrade a specific component
si component upgrade <component> [OPTIONS]

# Upgrade all upgradable components
si component upgrade --all [OPTIONS]

Parameters

NameTypeRequiredDescriptionDefault
componentstringfalseComponent name or ID (required unless --all is specified)-
-c, --change-setstringfalseChange set ID or name (creates new change set if not specified)-
--allflagfalseUpgrade all upgradable components (required if no component specified)false
--schema-categorystringfalseFilter by schema category (e.g., AWS::EC2) when using --all-
--dry-runflagfalsePreview upgrades without applying changesfalse

Examples

bash
# Upgrade a specific component (auto-creates change set)
si component upgrade my-ec2-instance

# Upgrade a component in an existing change set
si component upgrade my-s3-bucket -c my-changes

# Upgrade all upgradable components
si component upgrade --all

# Upgrade only AWS::EC2 components
si component upgrade --all --schema-category AWS::EC2

# Preview what would be upgraded
si component upgrade --all --dry-run

Behavior

  • Checks if components can be upgraded in HEAD before creating a change set
  • If nothing can be upgraded, exits cleanly without creating a change set
  • For bulk upgrades (--all), processes components one at a time
  • Individual component failures don't stop bulk upgrades
  • Auto-created change sets are abandoned on error
  • Returns exit code 1 if any components fail to upgrade

Notes

  • Components can only be upgraded in a change set, not on HEAD
  • The canBeUpgraded flag indicates if a newer schema version is available
  • Use --schema-category to filter bulk upgrades (e.g., AWS::EC2, Hetzner::Cloud)
  • Schema category filters use the format Provider::Service (e.g., Microsoft.Network won't work, use Microsoft)

secret

Manage secrets and credentials.

secret create

Create a new secret.

Syntax

bash
si secret create <secret-type> [OPTIONS]

Parameters

NameTypeRequiredDescriptionDefault
secret-typestringtrueType of secret to create-
--namestringfalseName for the secret instance-
--descriptionstringfalseDescription for the secret-
-c, --change-setstringfalseChange set ID or name (creates new change set if not specified)-
--use-local-profileflagfalseDiscover credentials from local environment (e.g., AWS credentials)false
--interactiveflagfalsePrompt for all values interactivelyfalse
--dry-runflagfalseShow what would be created without making changesfalse

secret update

Update an existing secret by component name or ID.

Syntax

bash
si secret update <component-name-or-id> [OPTIONS]

Parameters

NameTypeRequiredDescriptionDefault
component-name-or-idstringtrueComponent name or ID-
--namestringfalseNew name for the secret-
--descriptionstringfalseNew description for the secret-
-c, --change-setstringfalseChange set ID or name (creates new change set if not specified)-
--use-local-profileflagfalseDiscover credentials from local environment (e.g., AWS credentials)false
--interactiveflagfalsePrompt for all values interactivelyfalse
--dry-runflagfalseShow what would be updated without making changesfalse

template

Manages System Initiative templates.

template generate

Generate a new template structure file.

Syntax

bash
si template generate <name> [OPTIONS]

Parameters

NameTypeRequiredDescriptionDefault
namestringtrueName of the template-
-o, --output-dirstringfalseOutput directory for the template fileCurrent directory

template run

Run a SI template file (local path or remote URL).

Syntax

bash
si template run <template> --key <invocationKey> [OPTIONS]

Parameters

NameTypeRequiredDescription
templatestringtruePath to template file or remote URL
-k, --keystringtrueInvocation key for the template; used for idempotency
-i, --inputstringfalsePath to input data file (JSON or YAML); validated against template's input schema
-b, --baselinestringfalsePath to baseline data file (JSON or YAML)
-c, --cache-baselinestringfalsePath to cache baseline results; format determined by file extension (.json, .yaml, .yml)
--cache-baseline-onlyflagfalseExit after writing baseline cache (requires --cache-baseline)
--dry-runflagfalseShow planned changes without executing them