Overview

The Tempest developer platform is built around a few simple core concepts:

  • Recipes are pre-configured sets of resources that are used to build Projects.
  • Projects are used to build Resources.
  • Resources are provided by Apps.
  • Apps are developed by you or Tempest.

The diagram below shows how these concepts fit together.

Extending Tempest

Our developer tools open Tempest up to extension via Private Apps. Private Apps are designed to be simple, lightweight, and easy to understand and enable near-feature parity with our first party apps when used in your recipes.

Developing a Private App also comes with a number of unique benefits:

  • Complete control: You have full control over the app and its behavior.
  • Customization: You can customize the app to your needs, including adding your own features or changing the behavior of the app.
  • Distribution: You can deploy and distribute your apps however you want.
  • Security: Private Apps are secure-by-design and can be used as an abstraction layer to add additional security to your internal workflows.

Core Objects and their Properties

When developing your own Private App, you’ll be implementing the properties and methods for two core objects: apps and their resources. Let’s go over how we can implement them.

Apps

Apps are an abstraction generally used to represent a single provider. This can be a vendor like AWS, or Microsoft Azure, in the case of commercial cloud software. They can also be used to represent internal teams that may own and manage resources for your organization.

Apps and their versions are created in your Tempest web console. Once created, you can connect an implementation to a specific version of your app in your Tempest. When a new version of your app is published, the schema and capabilities of that version are locked—but you can continue to update the implementation of your private app as needed.

You would typically create a new version of your app when you need to update the schema or capabilities of your app. This design enables you to evolve your software, while maintaining continuity and minimizing disruption for your users.

App Properties

ID
Configured in web console

The unique identifier for the app. This is a unique slug that is used to identify the app in your recipes. It is generated when you create your Private App in the web console.

Version
Automatically generated

A monotonically increasing version number in the format of v1, v2, etc. These are automatically generated by Tempest.

Recipe Version
Configured in web console

The version of your recipe that is available for management in your organization’s recipes.

Connecting Apps

When building your apps with our SDK, you connect an code-defined implementation of your app to a version in Tempest. This is generally done via the app connect CLI command or app.connect API method.

Resources

Resources are the core objects that are provisioned and managed by Tempest. They are the building blocks of your recipes. All resources belong to an app, and an app may have a one-to-many relationship with its resources.

For example, AWS provides resources like EC2 instances, S3 buckets, and RDS databases—each serving a distinct purpose but belonging to the AWS app.

For more examples, see our first party app directory.

When developing Private Apps, you have a great deal of control over how your resources are defined and behave. Let’s go over the properties and methods you can customize.

All of these properties and methods are defined by your Private App implementation.

Defining a Resource

Display Name
Defined in your code
required

The human-readable name of the resource that will be shown in the Tempest UI.

Description
Defined in your code

A description explaining what this resource type represents and what it’s used for.

Properties Schema
Defined in your code
required

A JSON schema that defines the configuration properties available for this resource type.

Lifecycle Stage
Defined in your code
required

Indicates where this resource fits in the developer journey and lifecycle.

An array of links to documentation and other helpful resources for using this resource type.

Instructions Markdown
Defined in your code

Markdown-formatted instructions for setting up and using the resource. In our Go SDK, this field supports the interpolation of properties defined in your resource’s Properties Schema.

Customizing Resource Behavior

In addition to defining the properties of your resource, Tempest provides a rich set of methods that you can implement to customize the behavior of your resource.

Provisioning Methods

OperationDescription
CreateCalled when users create resources in Tempest (typically via recipes). Handles initial provisioning and setup.
Read & ListCalled when Tempest syncs your resource metadata. Frequency determined by your plan.
UpdateHandles state changes and configuration updates for existing resources.
DeleteCalled when users delete resources. Handles cleanup and deprovisioning.

Management Methods

OperationDescription
HealthchecksService discovery and healthchecks for the resources managed by your Private App.
InstructionsCustom installation instructions for your Private App resources.
LinksAdd links to your Private App resources for documentation, dashboards, endpoints, and more.
TaxonomyDefine how your Private App resources are categorized and organized.
Actions Custom user-triggerable actions for your Private App resources.