Skip to main content


Controllers play a crucial role in granting permissions to mission controls and satellites within Juno.

An administrative controller can perform tasks such as configuring or deploying an app, topping up a mission control or satellite, creating a new collection in the datastore or storage, or configuring a custom domain in the hosting.

When you sign in to Juno's console, you - and no one else (including not Juno) - become the controller of your own mission control.

When you create a satellite, you and your mission control become its controllers. Per extension, you - and no one else (including not Juno) - own your satellite.

One "controller" is identified by a principal.

Adding Controllers

You can add additional controllers. When doing so, you can choose to grant them administrative privileges or restrict their scope to reading and writing data.


You have the ability to add up to 10 administrative controllers, as per the limitation set by the Internet Computer.

When creating a new satellite, it is highly likely that you will need to assign controllers to enable its operation from your local machine or continuous integration setup.

To accomplish this, you have two available options.

Reuse an existing controller

When setting up an additional satellite, you might prefer to use an existing controller configuration you've already established on your local machine. To do this, simply run juno login and follow the provided instructions.


When you run juno login, the command checks for an existing controller on your machine. If one is found, you'll be given the option to either create a new sign-in, which generates a fresh controller, or reuse the existing one. If you opt to reuse it, the CLI will guide you through the process.

Generate a new controller

To generate a new controller and attach it to your desired mission controls and satellites, you can execute a new juno login command using the CLI. The console will guide you through the process.

However, please note that this action will overwrite the previously saved controller that was used for configuring your CLI locally.

It is generally recommended to use this method if you wish to generate a completely new controller and apply it to all your components.


You also have the option to generate new controllers directly in the console. This feature is particularly beneficial if you intend to configure GitHub Actions to automate the deployment of your application.