Calisto

Install Calisto

Install

Open Azure Cloud Shell (Bash), signed in to the subscription Calisto should live in, and run:

curl -sL https://calisto.run/install.sh | bash

That installs the trial layout in australiaeast, in the subscription Cloud Shell is using. To choose them, add options:

curl -sL https://calisto.run/install.sh | bash -s -- --subscription <subscription-id> --region australiaeast

When it finishes it prints Calisto's address. Sign in there and finish the read-only grants on the Permissions page. For a landing zone with your own subnets, internal ingress and a hub firewall, see install options.

Upgrade

In Cloud Shell, in the subscription Calisto is installed in:

curl -sL https://calisto.run/upgrade.sh | bash

Only the container image changes. The database, its data and the install's network settings are kept.

Both scripts fetch the installer published in calisto-install. Read them first if you like: install.sh, upgrade.sh.

Calisto assesses an agency against ASD's Essentials: enterprise IT, cloud and operational technology. It runs in the agency's own Azure subscription and reads Azure and Microsoft 365 with read-only access. AWS is a preview in this release and will be fully supported in the next.

Calisto is free to use for Azure and Microsoft 365, with no licence fee and no subscription. The agency pays only for the Azure resources Calisto runs on in its own subscription (standing cost). AWS assessment is free while it is a preview and will be a paid option once it is fully supported.

This repository holds what an agency needs to install and run it:

File Purpose
deploy/install.sh installs or upgrades Calisto from Azure Cloud Shell
deploy/azuredeploy.json the ARM template the installer deploys
deploy/hub-firewall-rules.bicep egress rules for a hub Azure Firewall
Running Calisto installation, network design, permissions, upgrade and teardown
Releases each release's image digest
About who builds Calisto, and how to get in touch
Audit the code how to audit Calisto's code and what you can check without access

Calisto's source code is not published, but agencies and their security assessors are welcome to audit it (Audit the code). Ask for read access at contact@calisto.run and we will arrange a review of the full source, build pipeline and tests. The container image is ghcr.io/abhijitsghosh/calisto, signed by the release pipeline so you can check it was built from that source (see below).

Install from GitHub

In Azure Cloud Shell (Bash), signed in to the subscription Calisto should live in:

curl -sL https://calisto.run/install.sh | bash

Or straight from this repository:

curl -sL https://raw.githubusercontent.com/abhijitsghosh/calisto-install/main/deploy/install.sh | bash -s -- --subscription <subscription-id> --region australiaeast --verify

That is the trial layout: a small VNet, a public app address that requires an Entra sign-in, and a private database. For a landing zone with your own subnets, internal ingress and a hub firewall, see Running Calisto.

To pin a release, use the installer from its tag and name the image:

curl -sL https://raw.githubusercontent.com/abhijitsghosh/calisto-install/v0.4.21/deploy/install.sh \
  | CALISTO_BASE=https://raw.githubusercontent.com/abhijitsghosh/calisto-install/v0.4.21/deploy \
    bash -s -- --subscription <subscription-id> --region australiaeast --image ghcr.io/abhijitsghosh/calisto:0.4.21 --verify

Verify the image yourself

cosign verify ghcr.io/abhijitsghosh/calisto@sha256:<digest> \
  --certificate-identity-regexp '^https://github\.com/abhijitsghosh/calisto/\.github/workflows/release\.yml@refs/tags/v.*$' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com

The digest for each release is in Releases. --verify runs the same check before the installer deploys anything.