Skopos™ Release Notes

Join the chat at

You can get questions answered by our developers on Gitter, or reach us at

Version 0.14 BETA (update #2)

Version tag 0.14.18

Key changes:

  • docker-swarm plugin:

Version 0.14 BETA (update #1)

Version tag 0.14.16

Key changes:

Version 0.14 BETA

Version tag 0.14.0

Key new capabilities:

Usability improvements:

  • added support for accessing insecure registries with docker and docker-swarm plugins
  • ability to display the effective environment

Notable bugfixes:

  • improved handling of long project names, component names and version numbers in the web UI
  • self-contained skopos utility works faster

Version 0.12 BETA update

Version tag 0.12.14

Bugfixes / usability improvements:

  • skopos utility is now self-contained and available for Linux, OS X and Windows

  • Docker Swarm support improvements (docker-swarm plugin)

    • non-default networks: multiple networks and aliases are supported
    • resource limits and reservations for memory and CPU resources

Version 0.12 BETA

Version tag 0.12.9

Key new capabilities:

Usability improvements:

  • Single-command CLI deployments

    • skopos run --wait runs the deploy synchronously, displaying progress and final status (including any errors on failure)
    • skopos run|start --interactive option enables automatic pause-on-error even for CLI-initiated run/start (default is off)
    • ability to save the effective model and deployment plan for audit purposes automatically prior to running a deploy (only on run)
  • Skopos Packaging

    • skopos utility is now available for download directly, e.g., using curl or wget, for use in Dockerfiles, CICD/automated builds
    • skopos utility can be run directly from the Skopos container, using docker run
    • running transient deploys using Skopos container without resident engine or skopos utility (single Docker run command)
    • Skopos can be started as a container or as a swarm service (the latter provides for easier upgrades)
  • Model improvements

    • model now allows using variable substitution for replica counts, enabling environment-specific settings for replicas
    • model now allows plugin-specific attributes for gateways, not just components; both can support raw settings
    • lifecycle injection steps support calling the core plugin without specifying its name (multi-environment models)
    • support for literal $ sign in model values (escaping the variable substitution syntax)
  • Docker support improvements (docker plugin)

    • the default project network is now created automatically if it does not exist
    • default volume names are now prefixed with the project name (project-local volumes)
    • configurable volume prefix to allow host-mapped directories as default volumes (nfs, AWS EFS and dev/test mounts)
    • accepts integer values for gateway ports (relaxed type checking)
    • support for in-application plugin execution and the http quality gate plugin
  • Docker Swarm support improvements (docker-swarm plugin):

    • support for host-mapped directory mounts (bind mounts), complements support for volume mounts
    • support for selecting endpoint mode (dnsrr or vip)
    • support for selecting port publish mode for endpoints (host value disables use of routing mesh per component)
    • improved support for --replace-all (and force_replace: true attribute) forced re-deploy option
    • added stability check time period for initial deploys, not only for upgrade
    • use rolling timeout on deploy/update so timeout does not need to change for large replica counts
    • increased default deploy timeout to 120 seconds to accommodate larger image pulls
    • support for in-application plugin execution and the http quality gate plugin
  • AWS EC2 Autoscaling group support improvements:

    • ability to bypass remote container registry checks
    • verify access to remote container registry (access and authorization)
    • control whether Skopos runs in the same VPC as the application (when running on AWS EC2)
    • if Skopos is configured to run in the same VPC as the deployed application
      • the VPC name can be omitted from the target environment file (simpler configuration)
      • if the VPC name is specified, Skopos will enforce it (fail if running on the wrong VPC)

Notable bugfixes:

  • docker-swarm plugin: support for global services now works properly on teardown
  • docker plugin: images in the model specified without a tag assume :latest and don't try to pull all available tags
  • ec2-asg plugin: it is OK now to have launch configurations without explicit ssh key (key attribute can be inherited from template launch configurations)
  • auto-pause on deploy failure is now not triggered after a user-forced failure of a manual gate step

Backward compatibility notes and cautions:

  • docker plugin: the default volume names assumed if no volume map is provided have changed (now prefixed by the project name and/or an additional configurable prefix). This is done for improved usability and consistency between the docker and docker-swarm plugins.
  • model env vars can no longer use the golang syntax for variable interpolation, use the shell syntax instead. This allows env vars to contain golang template values supported by the runtime, such as {{.Task.Slot}} in Docker Swarm
  • a deprecated variable substitution mechanism has changed, from {{.<var>}} to {{.vars.<var>}} in order to avoid name conflict and provide namespace separation. New projects should use the ${var} syntax for user-defined variables

Version 0.11 BETA

Version tag 0.11.13

Key new capabilities:

Usability and other improvements:

  • variable substitution in models, allowing for versions and other params to be stored in target env files
  • support for multiple, stacked target environment files, allowing separation of concerns (e.g., plugin config separate from versions, separate from env vars)
  • support docker-compose v3 format when importing docker-compose files into models (e.g., replicas count)
  • show image digest for images without tags (instead of showing 'unknown')
  • add effective option to model get API, to request the effective version of the model, including all variables resolved to values
  • updated the sample project model and environment to use up-to-date capabilities (works with Docker and emulator targets)
  • added a step-by-step Tutorial with a beefed up version of the Pet Voting app (requires Docker)


  • single step loops now can show nested step details (instead of zooming out on click)
  • failure in a single step loop now properly causes step to be highlighted and show the failure details
  • improvements and fixes in error messages

Backward compatibility notes and cautions:

  • the skopos utility has been changed to support multiple --env options and pass them to the Skopos engine. The prior versions skopos will not work with the new version of the engine and vice-versa. Make sure you extract the new version of skopos (see Installing Skopos); if the load or run command fails, make sure you have the right version (run skopos --version, should say 0.11.13 BETA).

Version 0.10 BETA

Version tag 0.10.4

Key new capabilities:

  • auto-pilot for deployments (autonomous deploy / continuous deployment)
    • Skopos now monitors changes in application state and images.
    • in auto-detect mode, it will just detect the changes, generate a deployment plan and await a "start" command
    • in auto-deploy mode, it will detect changes, generate a deployment plan and start executing it
    • changes that are now recognized that Skopos can autonomously deploy/remediate:
      • changes in the model and/or environment file (requires re-load of file)
      • changes in available images (e.g., new :latest or :staging tag), in local and/or remote registries
      • changes in application state (e.g., crashed instance or deviation from the specified number of replicas or set of component services)
    • there are 3 autonomy modes: auto-detect (detect only), auto-deploy (full autonomy) and off (no monitoring). The default is auto-detect.
    • autonomy mode can be selected on the command line or in the API; it can also be changed in the UI (auto-pilot button)
    • a command line option can set the state and image polling interval
  • support for detecting changes in mutable image tags (e.g., :latest)
    • Skopos will now detect changes in images specification for a component even if the image specification has not changed but the image has. This helps when using images with mutable tags (e.g., :latest, :prod, :staging) as opposed to specific version tags (:1.2.3 or @sha256:aa...12)
  • reset command and button
    • reset is equivalent to loading the same model. Useful after a deployment completes, successfully or not, to identify any further changes. It is also useful in auto-pilot mode to restart auto-pilot mode after certain deployment failures (when Skopos goes off-cruise control).

Usability and other improvements:

  • docker containers are now created with restart policy suitable for production use (unless-stopped)
  • support for login to remote repositories; works with environment variables, as well as old and new style Docker config files
  • support local-only repository access (disable pulling of remote images for developer workflows)
  • UI plan view: clicking on an open component step anywhere zooms out (no need to hunt for the zoom out icon)
  • pressing the "c" key in the UI now prints component coordinates on the javascript console (useful when updating visuals in the model YAML file)
  • mode, autonomy, etc., options are now returned by the API
  • reduced image size by removing packages that are no longer necessary


  • consul plugin timeout now works properly
  • support for Docker 1.13, including changes in image pull API error handling
  • ec2-asg plugin now coexists better with non-Skopos ASG in the same VPC
  • error reporting in the UI now includes configuration errors previously available only in the log (e.g., missing plugin, wrong parameters)
  • improved error messages from plugins on known errors to reduce clutter
  • streamlined how listen IP and port are defined on the command line (empty command line now takes the defaults)

Backward compatibility notes and cautions:

  • the fixed consul timeout may expose the need for extending the timeout (see join_timeout in consul plugin config)
  • loading explicit deployment plans now requires turning off autonomy mode

skopos load --autonomy off --env env.yaml model.yaml plan.yaml

Version 0.8 BETA

Version tag 0.8.174

Key new capabilities:

  • automatic generation of deployment plan based on model and current application state
  • support for initial deploy, rolling upgrades, replica scaling and application teardown
  • support for stateless and stateful singleton services
  • docker support: containers, volumes, host-port mapping, service discovery/RRDNS for inter-service connections
  • importing models from docker-compose manifests
  • variable interpolation in values of component environment vars (model's env section), using values defined in the target environment file

Usability and other improvements:

  • improved support for AWS EC2 classic and application-level load balancers
  • automated pre-flight checks for plugin configuration settings and resource bindings
  • automatic pause on error when running in interactive mode to allow for troubleshooting
  • new http plugin, supporting http GET, POST and wait-for-healthy state (REST API calls)
  • new emulator plugin, for creating mock-ups of deployments and testing scenarios
  • configurable timeouts for consul, docker and AWS EC2 load balancer plugins
  • support for YAML format in target environment files
  • numerous visual improvements, minor features and bugfixes

Version 0.7 BETA

Version tag 0.7.0

  • in the ec2-asg plugin, increased the load balancer in-service timeout to 5 minutes
  • in the consul plugin, added a new configuration parameter node_id to support AWS EC2-style hostnames as node names

Version 0.6 BETA

Version tag 0.6.447

  • new ec2-asg plugin, supersedes and deprecates ec2-docker
  • failed plan steps are highlighted red in the UI; have state=failed in the API
  • the error message for a failed plan step can be seen by clicking on the step
  • error messages on load are now returned to the client in addition to being logged
  • warn and log step attributes now log at the correct log levels
  • usability and visual improvements
  • edge case bugfixes

Version 0.5 BETA

  • Initial release