Core Concepts: Private Apps
Learn about the technical details of Private Apps
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
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.
A monotonically increasing version number in the format of v1
, v2
, etc. These are automatically generated by Tempest.
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
The human-readable name of the resource that will be shown in the Tempest UI.
A description explaining what this resource type represents and what it’s used for.
A JSON schema that defines the configuration properties available for this resource type.
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.
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
Operation | Description |
---|---|
Create | Called when users create resources in Tempest (typically via recipes). Handles initial provisioning and setup. |
Read & List | Called when Tempest syncs your resource metadata. Frequency determined by your plan. |
Update | Handles state changes and configuration updates for existing resources. |
Delete | Called when users delete resources. Handles cleanup and deprovisioning. |
Management Methods
Operation | Description |
---|---|
Healthchecks | Service discovery and healthchecks for the resources managed by your Private App. |
Instructions | Custom installation instructions for your Private App resources. |
Links | Add links to your Private App resources for documentation, dashboards, endpoints, and more. |
Taxonomy | Define how your Private App resources are categorized and organized. |
Actions | Custom user-triggerable actions for your Private App resources. |
Was this page helpful?