Two Small Clouds

Control Dashboard

Signed out

Account

Setup status

0Sites
0Environments
0SSH keys
0Deploy tokens

Pilot path

First real site

Pilot guide

Sign in to load the guided setup path.

Signed-in user

Operational next steps

  • Register a site, then add at least one environment.
  • Add an SSH key before launching infrastructure.
  • Create a deploy token and CI template for repeatable web-native deploys.
  • Use the CLI for local database, files, and project bundling tasks.

Sites

Registry

Environments

Runtime targets

Deployments

Status and rollback

Tasks

Environment operations

Artifacts

Uploads and reusable artifacts

Manual site upload

Upload a structured Drupal archive, prepare launch artifacts, then launch the selected environment with its database and files.

Archive structure

  • Use one .tar.gz, .tgz, or .zip file.
  • The archive may contain files at root or inside one top-level folder.
  • The Drupal root must include composer.json and web/index.php. If .tsc/ is missing, the prep job adds the deploy helpers.
  • Public files must be at web/sites/default/files.
  • Put one DB dump at root as db.sql, db.sql.gz, site.sql, site.sql.gz, or any single .sql/.sql.gz file, or under database/.
my-site/
  composer.json
  composer.lock
  web/
    index.php
    sites/default/files/
  db.sql.gz

The prep job adds TSC deploy helpers when needed, builds deployable code, normalizes the DB dump as db.sql.gz, and packages public files. It rejects missing DB/files, multiple DB dumps, multiple likely Drupal roots, and unsafe archive paths.

Deploy tokens

CI access

SSH keys

User access keys

Support

Tickets

Create ticket

Organisation

Access and members

Create an organisation

Request access

CI templates

Web-native deployment


        

CLI Tool

CLI glossary

Install and initialise

The CI Tool lives inside a Drupal project as ./tsc. Install the launcher when you want to run tsc from anywhere on your PATH.

./tsc install --bin-dir ~/.local/bin
./tsc init
./tsc settings
./tsc setup

Command glossary

install
Installs a global launcher that finds the nearest TSC project and delegates to its bundled tool.
init
Detects Drupal defaults and writes .tsc/config.
settings
Adds the Drupal environment settings block needed by Docker Compose and hosted deploys.
setup
Signs in, checks organisation access, and registers an SSH key when needed.
version
Prints the bundled client release version.
update
Updates the bundled client from the public update feed.
clean
Removes generated local client state; use --dry-run first.

First useful run

./tsc site register --name "Client site"
./tsc env add --name Demo --profile demo
./tsc launch --environment Demo --sql ./site.sql.gz

Sites

./tsc site register --name "Client site"
./tsc site create --site-name "Client site" --environment Demo
./tsc site list
./tsc site show
./tsc site show site-abc12345
./tsc site rename site-abc12345 --name "New name"
./tsc site deregister site-abc12345

Site terms

Site
The top-level registry record. It groups environments, artifacts, deploy tokens, and deployments.
Site ID
The stable identifier used by API calls and CI templates, for example client-site-a1b2c3d4.
site register
Creates only the registry entry.
site create
Compatibility path for launch-style creation; it provisions through the hosted workflow.
site deregister
Hides a site from the registry after active environments are removed.

Environments

./tsc env add --name Demo --profile demo
./tsc env add site-abc12345 --name Stage --profile drupal-basic --profile-extra cloudfront
./tsc env add --domain www.example.com --profile drupal-basic
./tsc env list
./tsc env list site-abc12345
./tsc env rename Demo --name Stage
./tsc env remove Stage

Environment terms

Environment
A runtime target under a site, such as Demo, Stage, or Production.
Profile
The infrastructure shape. Current values are demo and drupal-basic.
Profile extra
An optional capability added to a profile, such as cloudfront.
Custom domain
The public hostname for an environment. Supplying --domain can also name the environment.

Deploy lifecycle

./tsc launch --environment Demo --sql ./site.sql.gz
./tsc launch --environment Demo --install-profile standard
./tsc deploy --environment Demo
./tsc restore --environment Demo --sql ./site.sql.gz
./tsc sync-files --environment Demo
./tsc retire --environment Demo
./tsc destroy --environment Demo

Deploy terms

launch
Bundles the project, uploads artifacts, provisions infrastructure, and deploys the first release.
deploy
Uploads and deploys a new code bundle to an existing environment.
restore
Restores a SQL dump, then runs Drupal post-restore maintenance.
sync-files
Uploads Drupal public files separately from deployable code.
retire
Retires temporary hosted infrastructure.
destroy
Alias for retire.

Deploy options

--environment NAME
Selects the target environment by display name or ID.
--sql PATH
Uses a specific database dump for launch or restore. Without it, restore uses DEFAULT_SQL_DUMP.
--install-profile PROFILE
Installs a Drupal profile when launching without a database dump.
--no-ssh-keys
Launches without adding registered SSH keys to the instance.
--verbose
Streams hosted output while still writing the local log file.

Artifacts and rollback

./tsc online bundle --site-name "Client site"
./tsc online status --environment Demo
./tsc online deployments list --environment Demo --json
./tsc online deployments current --environment Demo
./tsc online deployments rollback dep-abc123 --environment Demo --yes

Status and URLs

./tsc status
./tsc status arn:aws:states:eu-west-2:123:execution:job
./tsc url --environment Demo
./tsc online deployments dashboard --environment Demo --json
./tsc online artifacts list --site-id site-abc12345 --json

Drupal tools

./tsc drush --environment Demo status
./tsc drush --environment Demo cr
./tsc drush --environment Demo --ssh-key ~/.ssh/id_ed25519 uli
./tsc drush-aliases write --environment Demo
./tsc drush-aliases write --all --output drush/sites/tsc.site.yml

Operations terms

status
Shows the latest hosted job, or one specific Step Functions execution ARN.
url
Prints the public URL for an environment.
drush
Runs Drush against a hosted environment over SSH.
drush-aliases write
Writes local Drush alias YAML for one environment or every environment.
online
Direct hosted API mode for debugging and lower-level automation.

Hosted API mode

online bundle
Creates an uploadable local artifact bundle without starting a deploy.
online launch
Calls the hosted launch API directly.
online deploy
Calls the hosted deploy API directly.
online restore
Calls the hosted restore API directly.
online sync-files
Calls the hosted public-files sync API directly.
online retire
Calls the hosted retire API directly.
online deployments
Lists, shows, summarizes, and rolls back deployment runs.
online artifacts
Lists reusable code bundles for a site.

Local safety checks

./tsc settings --check
./tsc clean --dry-run
./tsc clean
./tsc version
./tsc update --force

Sign-in and keys

./tsc login
./tsc whoami
./tsc whoami --json
./tsc keys add ~/.ssh/id_ed25519.pub --label "Laptop"
./tsc keys list
./tsc keys list --json
./tsc logout

Deploy tokens

./tsc deploy-tokens create --environment Demo --name "Main branch"
./tsc deploy-tokens create --site-id site-abc12345 --environment Demo --json
./tsc deploy-tokens list --environment Demo
./tsc deploy-tokens revoke token-abc123

CI templates

./tsc ci-template --provider github-actions --environment Demo --branch main
./tsc ci-template --provider gitlab --environment Demo --branch main
./tsc ci-template --provider bitbucket --environment Demo --branch main
./tsc ci-template --provider azure-pipelines --environment Demo --branch main
./tsc ci-template --provider shell --environment Demo --token-secret-name TSC_DEPLOY_TOKEN
./tsc ci-template --kind shell --environment Demo --output deploy.sh

CI terms

Deploy token
A scoped credential for CI systems to deploy one site/environment without a browser sign-in.
Token secret name
The CI secret variable name used by generated templates. Default: TSC_DEPLOY_TOKEN.
Provider
The CI system template format: GitHub Actions, GitLab, Bitbucket, Azure Pipelines, or shell.
--json
Returns machine-readable output for scripts.
SSH key
A public key registered to allow shell and Drush access where the environment supports it.

Project config

The main local file is .tsc/config. It is loaded by the CLI Tool and by deploy helper scripts.

APP_SERVICE=php
COMPOSE_PROJECT_NAME=client-site
COMPOSE_FILE=.tsc/docker-compose.yml
DRUSH_BIN=vendor/bin/drush
DRUPAL_WEB_ROOT=web
DEFAULT_SQL_DUMP=./client-site.sql.gz
TSC_API_URL=https://api.twosmallclouds.com

Config glossary

APP_SERVICE
Docker Compose service that runs Drupal/PHP commands.
COMPOSE_PROJECT_NAME
Compose project name; also used for local container and volume naming.
COMPOSE_FILE
Compose file path used by local helper scripts.
DRUSH_BIN
Path to Drush inside the Drupal codebase.
DRUPAL_WEB_ROOT
Drupal web root, usually web or docroot.
DEFAULT_SQL_DUMP
Fallback database dump used by launch and restore.
TSC_API_URL
Hosted API endpoint used by CLI API calls.

Hosted runtime config

DEPLOY_USER
SSH user for runtime deployment hosts.
DEPLOY_PATH
Base path used for releases and shared files on the host.
PHP_IMAGE
PHP image used for Drupal runtime containers.
AUTO_BACKUP
Controls pre-deploy backup behaviour.
RUN_COMPOSER_INSTALL
Controls Composer install during deploy flows.
RUN_DB_UPDATES
Controls Drupal database updates during deploy flows.

Environment override

./tsc settings adds a Drupal settings block that reads database, hash salt, and trusted host values from environment variables.

./tsc settings --check
./tsc settings

Download latest package

Unpack the CI Tool into the root of a Drupal site, then run ./tsc init.

Loading latest release...

Unpack into a site folder

The package contains the tsc launcher and bundled .tsc helpers. Use --strip-components=1 so those files land directly in the project root.

cd /path/to/drupal-site
tar -xzf ~/Downloads/tsc-client-VERSION.tar.gz --strip-components=1
./tsc init
./tsc settings --check