Developer Center

Workspaces

Your PowerTools workspace is a collection of services and environments that your team deploys.

A workspace is a team's set of services, environments and groups in PowerTools. Each workspace is tied to a single repository which contains a .powertools/workspace.yml schema and the code for each service.

Workspace

Most teams will have a single PowerTools workspace.

A workspace has environments where services are deployed to.

A workspace has groups to partition and group services.

PowerTools automatically context switches between workspaces on your computer, based on your current directory.

Code repository

PowerTools never has access to your code.

Your PowerTools workspace is linked to a single code repository with a .powertools/workspace.yml file. This is how an authenticated PowerTools user can develop, build and deploy apps.

To add users to a workspace, simply share your code repository with them using Github or your source control tool of choice, and then add their email in the .powertools/workspace.yml schema.

Learn more.

If your team does not work from a mono repository, please let us know!

Workspace Schema

A workspace schema is a simple yaml file that lives at .powertools/workspace.yml in your code repository.

When you signup for a new workspace, a template schema is selected to kickstart your workspace. Your workspace schema allows you to declare environments, groups, users and other configurations for your workspace.

You can run `pt new --kind=workspace` at any time to create a new schema.

Environments

Environments represent different stages of a team's software. For instance, some teams may want a test, stage and production environment. Other teams may want alpha, beta and prod, and some teams may want two prod environments for reliability.

You can add new environments by updating your .powertools/workspace.yml schema and then syncing your workspace.

Learn more.

Environments represent completely independent sets of infrastructure. A single workspace can have environments in multiple clouds, multiple cloud accounts or multiple cloud regions.

A --release environment is used to denote a "production" environment.

Groups

Services within a workspace are split into groups. Groups can be used to control the type of hardware a service is deployed onto, who can build and deploy it, and what other applications it can access.

Groups can be used to split your organization into teams, to split applications into tiers or run some workloads on different types of hardware.

You can add new environments by updating your .powertools/workspace.yml schema and then syncing your workspace.

Learn more.

Syncing

Syncing your workspace is literally as simple as running a single command. It just works!

When you first create a workspace, you will run:

$ pt workspace sync

This will configure your cloud accounts, build infrastructure and set up your workspace for deploying apps. You can make changes to your .powertools/workspace.yml schema at any time and simply re-run the sync command.

Depending upon how many environments you have, this command may take up to 10 minutes or so. Behind the scenes, many resources are being created and configured so grab a ☕️ while you wait!

Workspaces are highly extensible as your team grows.