The model
sitectl organizes around three concepts:- A site is the project itself, for example
museum. - An environment is where that site runs:
local,staging,prod, and so on. - A context is the saved connection record for a site/environment pair.
~/.sitectl/config.yaml and include everything sitectl needs to connect and operate: the project location, environment files, and for remote environments, the connection details.
Local vs remote
Local contexts connect directly to Docker on your own machine. This is the standard setup for development. Remote contexts send Docker commands through an encrypted tunnel to a server. From your perspective the commands work the same way because sitectl handles the connection. You usesitectl compose ps whether the site is running locally or on a production server.
Context autodiscovery
sitectl can infer the active context from your current working directory. If your terminal is inside a project directory that matches a context’s project directory, sitectl uses that context automatically. The resolution order is:- An explicit
--contextflag on the command - A plugin claim for the current project directory
- The
current-contextset in~/.sitectl/config.yaml
drupal service and Islandora packages in composer.json, so the ISLE plugin can claim it.
After a plugin claims the checkout, sitectl first looks for a saved local context with the same canonical project directory and plugin. If no saved local context exists, sitectl creates a transient in-memory context named . for the command. This does not write to ~/.sitectl/config.yaml. You can use it explicitly:
Managing contexts
Thesitectl config subcommands manage your contexts.
1
View all contexts
2
Inspect a single context
3
Switch the active context
4
Delete a context
Targeting a specific context per command
Any sitectl command accepts--context to target a specific environment without changing your current context:
Context fields
Core fields
Core fields
Compose fields
Compose fields
Remote (SSH) fields
Remote (SSH) fields
Context names are case-insensitive when looked up by name.

