Skip to content

Commit 87ef6e7

Browse files
chore: merge main
Signed-off-by: David Dal Busco <[email protected]>
2 parents e396aa6 + f87d724 commit 87ef6e7

File tree

10 files changed

+272
-159
lines changed

10 files changed

+272
-159
lines changed

.llms-snapshots/llms-full.txt

Lines changed: 130 additions & 116 deletions
Large diffs are not rendered by default.
92.7 KB
Loading
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
---
2+
slug: architecture-changes-for-better-developer-experience
3+
title: Architecture Changes for a Better Developer Experience
4+
authors: [peterpeterparker]
5+
tags: [architecture, dx, platform]
6+
date: 2026-01-08
7+
---
8+
9+
Happy New Year 🥳
10+
11+
We're kicking off 2026 with a major [release](https://github.com/junobuild/juno/releases/tag/v0.0.63) that ships significant changes in the architecture and design of the Juno Console with a single goal: making the DX more straightforward and comprehensive.
12+
13+
---
14+
15+
## Mission Control and Monitoring merged
16+
17+
Mission Control was originally designed as a dedicated control center for developers — a place to create and manage projects (Satellites) and analytics (Orbiters). Over time, it was also extended to include Monitoring.
18+
19+
The original idea was simple: the Console would only know a developer's identity and their Mission Control ID — nothing else.
20+
21+
While this approach had advantages, it also introduced significant drawbacks.
22+
23+
On every new sign-up, the Console had to automatically create a Mission Control. This meant that when a developer signed in and created their first (free) project, Juno had to provision **two containers instead of one**, increasing infrastructure costs.
24+
25+
It also led to a confusing user experience. Mission Control could not be hidden from the UI because modules must be provisioned with resources (cycles) to avoid being decommissioned. As a result, it was always visible, and many developers were unsure what Mission Control was or why it existed.
26+
27+
For these reasons, Mission Control and Monitoring have now been merged:
28+
29+
- A Mission Control is created **only when a developer explicitly enables Monitoring**
30+
- Monitoring is now treated as a dedicated microservice
31+
32+
This architectural change brings clear benefits:
33+
34+
- **For developers:** a clearer, more straightforward experience and simpler long-term maintenance
35+
- **For Juno:** acquisition costs for new developers are effectively cut in half
36+
37+
There are a few trade-offs to note:
38+
39+
- The Juno Console now keeps track of all containers created by developers (Satellites, Orbiters, and Mission Controls), whereas previously it only knew the Mission Control ID.
40+
- When Monitoring is enabled, module metadata must be duplicated inside the Mission Control so it knows what to monitor. This introduces a risk of inconsistencies if a bug causes a mismatch between the Console and Monitoring data. To mitigate this, a Console feature is planned to compare and verify this information.
41+
42+
---
43+
44+
## Deprecate ICP, use only Cycles
45+
46+
Over the past year, I've been refining both the platform and its communication to reinforce Juno's vision: a platform to build, deploy, and run applications in WASM containers, with ownership and zero DevOps.
47+
48+
As part of this effort, I've aimed to remove all blockchain and crypto-slangs.
49+
50+
While merging Mission Control and Monitoring, a new wallet ID - derived from the developer's sign-in - had to be introduced.
51+
52+
During this work, it became really clear again that the onboarding for new developers was just confusing:
53+
54+
> Why do I need ICP to get cycles?
55+
56+
Since this release already introduced breaking changes, it felt like the right moment to simplify the model further.
57+
58+
As a result, **ICP is now deprecated in favor of using cycles only**.
59+
60+
This significantly simplifies the user journey:
61+
62+
- You start using Juno for free
63+
- You learn about cycles as the resource that powers your containers and services
64+
- When you need more resources or want to spin up additional modules, you acquire cycles
65+
66+
To support this, the primary call to action for acquiring cycles now points to [cycle.express](https://cycle.express), which allows developers to convert dollars directly into cycles. Third-party wallets like [OISY](https://oisy.com) remain supported, but are now positioned as secondary options for users already familiar with them.
67+
68+
Together with the other changes in this release, this should make both the developer experience and the mental model of how Juno works much more approachable.
69+
70+
![](cycles-everywhere.png)
71+
72+
---
73+
74+
## Price increase
75+
76+
Previously, creating new Satellites or Orbiters cost 0.4 ICP. In practice, this was undervalued: each module is provisioned with 1.5 T cycles, while 0.4 ICP corresponds to roughly 0.93 T cycles—effectively a significant bonus.
77+
78+
Going forward:
79+
80+
- Additional Satellites and Orbiters cost 3 T cycles (roughly $4).
81+
- Enabling Monitoring (which spins up a Mission Control) requires the same fee.
82+
83+
:::note
84+
85+
See the [Pricing](/docs/pricing) documentation for more details.
86+
87+
:::
88+
89+
---
90+
91+
I believe these changes represent a significant step forward in making Juno more accessible and easier to understand. Whether you're just getting started or have been with us for a while, I hope these improvements make your development experience that much better.
92+
93+
To infinity and beyond<br />David

docs/build/analytics/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ You have the capability to delete all collected data within your Analytics at an
8181

8282
## How does it work?
8383

84-
To gather analytics for your dapps, you need to create an [orbiter]. Creating an Orbiter requires Cycles, and its price is defined in the [transaction costs](../../pricing#transaction-costs).
84+
To gather analytics for your dapps, you need to create a module called [orbiter]. Creating an Orbiter requires Cycles, and its price is defined in the [transaction costs](../../pricing#transaction-costs).
8585

8686
Each Orbiter is used to collect analytics for one or multiple [satellites].
8787

docs/create-a-satellite.mdx

Lines changed: 21 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,32 +2,43 @@
22
description: "A quick guide to creating a Satellite on Juno in production — the container that powers your app."
33
keywords:
44
[
5-
create a Satellite,
5+
create a satellite,
66
deploy with Juno,
77
Juno Satellite,
88
Juno container,
9-
Internet Identity,
109
Juno production guide,
1110
Juno app deployment,
12-
launch Satellite,
11+
launch satellite,
1312
Juno hosting
1413
]
1514
---
1615

1716
# Create a Satellite
1817

19-
When you're ready to deploy your project to production, you'll need to create a [satellite].
18+
When you're ready to deploy your project to production, you'll need to create a [Satellite].
2019

21-
1. To get started, sign-in to the Juno [console](https://console.juno.build). If you are a new developer on Juno and the Internet Computer, you may be prompted to create your first anonymous [Internet Identity].
22-
2. Click **Launch a new Satellite**.
20+
1. To get started, sign-in to the Juno [Console](https://console.juno.build).
21+
2. Click **Launch your first Satellite**.
2322
3. Enter a name for your Satellite (note: this is for display purposes only and does not need to be unique).
24-
4. Confirm with **Create a Satellite.**
25-
5. The platform will then create your Satellite and provision its resources.
26-
6. Once the process is complete, click **Continue** to access the overview page.
23+
4. Select whether you're deploying a **Website** or **Application**.
24+
5. Confirm with **Create a Satellite.**
25+
6. The platform will then create your Satellite and provision its resources.
26+
7. Once the process is complete, click **Continue** to access the service page.
2727

2828
🎉 You’re all set! You can now deploy your frontend app, static website, or publish your serverless functions to production.
2929

3030
➡️ Continue with the [deployment](/docs/category/deployment) guides to take the next step.
3131

32+
---
33+
34+
:::note
35+
36+
Choose **Website** if you're deploying a static site, blog, portfolio, etc.
37+
38+
Choose **Application** if your project needs user sign-in, data management, or serverless functions.
39+
40+
You can change this later in your Satellite "Hosting" settings.
41+
42+
:::
43+
3244
[satellite]: terminology.mdx#satellite
33-
[Internet Identity]: terminology.mdx#internet-identity

docs/faq.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ For reproducibility, developers can run the official Docker build for Juno and i
3737

3838
### What happens if Juno disappears?
3939

40-
In the unlikely event of Juno's disappearance, you, as the sole controller of your [mission control] and [satellites], would retain full control over your creations. They would continue to function independently without any reliance on Juno.
40+
In the unlikely event of Juno's disappearance, you retain full control over your creations. They would continue to function independently without any reliance on Juno.
4141

4242
### Can I just deploy my website on the Internet Computer?
4343

@@ -51,7 +51,7 @@ No, Juno is an independent project. In 2024, we received a [Developer Grant](htt
5151

5252
No, Juno does not exert any control over developers' work. Juno is designed to provide developers with true control and autonomy over their projects.
5353

54-
Developers have full ownership and control over their [mission control], [satellites], and the applications they build on the platform.
54+
Developers have full ownership and control over their modules, and the applications they build on the platform.
5555

5656
Juno's philosophy aligns with the principles of Web3, empowering developers with transparency, decentralization, and the freedom to create and innovate without external interference.
5757

docs/management/monitoring.md

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ keywords:
1414

1515
# Monitoring
1616

17-
Keeping your modules running smoothly is essential for any application. The monitoring feature ensures your [Mission Control] (your wallet) and modules — Satellites and Orbiter (Analytics) — stay operational by automatically refilling cycles when they run low. This helps prevent unexpected downtime, allowing you to focus on building and growing your product without worrying about cycle balances.
17+
Keeping your modules running smoothly is essential for any application. The monitoring feature ensures your modules — Satellites and Orbiter (Analytics) — stay operational by automatically refilling cycles when they run low. This helps prevent unexpected downtime, allowing you to focus on building and growing your product without worrying about cycle balances.
1818

1919
![A screenshot of the monitoring overview within Juno Console](../img/monitoring/monitoring-dashboard.webp)
2020

@@ -23,23 +23,23 @@ Keeping your modules running smoothly is essential for any application. The moni
2323
## Features
2424

2525
- **Cycle refilling**: Monitored modules are automatically topped up when their balance falls below what's needed to stay active.
26-
- **Self-Monitoring**: Your Mission Control ensures that both your wallet and modules maintain sufficient cycles, with full control remaining in your hands at all times.
26+
- **Self-Monitoring**: The monitoring monitors itself to maintain sufficient cycles, with full control remaining in your hands at all times.
2727
- **Hourly Checks**: The system evaluates balances once an hour.
2828
- **Automatic ICP Conversion**: Can mint new cycles from the ICP in your wallet, ensuring your modules stay adequately funded.
2929

3030
---
3131

3232
## Why Enable Monitoring?
3333

34-
When a smart contract runs out of [cycles] on the [Internet Computer](https://internetcomputer.org), it stops functioning, which can disrupt your application or service. Enabling monitoring provides peace of mind by automating the management of cycles, ensuring your modules are always ready to perform. It also saves a little time by eliminating the need for manual top-ups.
34+
When a container runs out of [cycles] on the [Internet Computer](https://internetcomputer.org), it stops functioning, which can disrupt your application or service. Enabling monitoring provides peace of mind by automating the management of cycles, ensuring your modules are always ready to perform. It also saves a little time by eliminating the need for manual top-ups.
3535

36-
It's important to note that if your wallet or a module run out of cycles, they will enter a grace period. During this time, the module stops working but can still be restored. If no action is taken, the module eventually gets deleted, resulting in the permanent loss of its data and functionality.
36+
It's important to note that if your modules run out of cycles, they will enter a grace period. During this time, the module stops working but can still be restored. If no action is taken, the module eventually gets deleted, resulting in the permanent loss of its data and functionality.
3737

3838
---
3939

4040
## How does it work?
4141

42-
Monitoring runs hourly within your Mission Control, which acts as the central hub for managing all monitored modules. The process follows these steps:
42+
Monitoring runs hourly within a dedicated service called Mission Control, which acts as the central hub for managing all monitored modules. The process follows these steps:
4343

4444
---
4545

@@ -130,9 +130,14 @@ In the case of failed attempts (e.g., when Mission Control or a module could not
130130

131131
## Configuration
132132

133-
To enable monitoring, go to the [Monitoring Section](https://console.juno.build/monitoring) in the Juno Console. Start the wizard by clicking **Enable Auto-Refill** and follow the prompts to select the modules you want to monitor, choose a pre-defined strategy or create a custom one, and enable the feature.
133+
To enable monitoring, go to the [Monitoring Section](https://console.juno.build/monitoring) in the Juno Console. Start the wizard by clicking **Get started** and follow the prompts to:
134134

135-
The wizard simplifies the setup process, making it easy to configure monitoring according to your needs.
135+
- Create the Mission Control service
136+
- Select the modules you want to monitor
137+
- Choose a pre-defined strategy or create a custom one
138+
- Enable the feature
139+
140+
The wizard guides you through the setup process, making it easy to configure monitoring according to your needs.
136141

137142
[Analytics]: ../build/analytics/index.md
138143
[Satellites]: ../terminology.mdx#satellite

docs/miscellaneous/access-keys.md

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,12 @@ description: Learn how to manage access keys in Juno, their roles, and how to ge
44

55
# Access Keys
66

7-
Access keys play a crucial role in granting permissions to Mission Controls, Satellites or Analytics within Juno.
7+
Access keys play a crucial role in granting permissions to Mission Controls, Satellites or Orbiters within Juno.
88

9-
When you sign in to Juno's [Console] using [Internet Identity](https://internetcomputer.org/internet-identity), you — and no one else (including not Juno) — become the owner of your [mission control]. This information is then sent back to your browser, where you can manage your modules.
9+
When you sign in to Juno's [Console] (for example, with Internet Identity) and create modules, you — and no one else, not even Juno — become their owner.
1010

1111
![Juno's console flow](../img/console.png)
1212

13-
When you create a [satellite], you and your Mission Control become its owners. Per extension, you — and no one else (including not Juno) — own your satellite.
14-
1513
:::note
1614

1715
- What was previously referred to as _controllers_ in earlier versions of the documentation is now called _administrative access keys_. The concept remains the same — only the terminology has been updated for clarity and consistency.
@@ -31,7 +29,7 @@ Each access key is assigned a **role** that defines what it can do:
3129
| **Write** | Editor |||||
3230
| **Submit** | Submitter |||||
3331

34-
An **administrator** can perform tasks such as configuring or deploying an app, topping up a Mission Control or satellite, creating a new collection in the [datastore](../build/datastore/index.mdx) or [storage](../build/storage/index.mdx), or configuring a custom domain in the [hosting](../build/hosting/index.md).
32+
An **administrator** can perform tasks such as configuring or deploying an app, topping up a module, creating a new collection in the [datastore](../build/datastore/index.mdx) or [storage](../build/storage/index.mdx), or configuring a custom domain in the [hosting](../build/hosting/index.md).
3533

3634
An **editor** can publish new serverless function versions to a Satellite’s CDN, deploy your frontend application, and read data from a collection. However, it cannot directly upgrade a Satellite or start/stop a module.
3735

@@ -101,7 +99,7 @@ When you run the command, the CLI checks if an access key is already present on
10199

102100
### Generate a new access key
103101

104-
To **generate a new access key** and attach it to your desired Mission Controls and Satellites, you can run:
102+
To **generate a new access key** and attach it to your desired module, you can run:
105103

106104
```bash
107105
juno login

docs/miscellaneous/architecture.md

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,6 @@ Juno provides supporting services to manage your projects, while keeping everyth
5151

5252
The Console is a platform for managing your projects. It runs as its own container, combining a user interface with orchestration logic.
5353

54-
It only holds one piece of data: a keypair linking each developer's anonymous ID to their Mission Control ID.
55-
56-
When you sign in, the Console returns your Mission Control ID. From there, all project management happens under your control. The Console does not have access to your apps, your data, or your infrastructure.
57-
5854
It provides services such as:
5955

6056
- Creating, upgrading, and deleting Satellites.
@@ -91,13 +87,7 @@ While it functions as a CDN, technically it's not a traditional content delivery
9187

9288
## Developer-Owned Spaces
9389

94-
### Mission Control
95-
96-
Mission Control is your personal management container. It tracks your Satellites and Orbiters, and it acts as your wallet.
97-
98-
You use it for example to spin up new containers or provide [cycles](../terminology.mdx#cycles) to keep your modules running. It serves as your central hub for managing projects and resources.
99-
100-
Mission Control belongs to you. No one else can access it — not Juno, not the Console, not any other service.
90+
Juno's architecture is built on a microservices approach, where each component runs independently as its own WASM container, giving you modular control over your infrastructure.
10191

10292
### Satellites
10393

@@ -113,6 +103,12 @@ Satellites are your applications. Each one is a self-contained unit that bundles
113103

114104
Orbiters provide analytics — a decentralized alternative to services like Google Analytics. Orbiters collect traffic, page views, and device information, under your ownership and without exposing user data to third parties.
115105

106+
### Mission Control
107+
108+
Mission Control is an optional monitoring service that automatically tracks and maintains your Satellites and Orbiters.
109+
110+
When enabled, it monitors [cycles](../terminology.mdx#cycles) balances across your modules and automatically tops them up when needed, ensuring your applications stay running without manual intervention.
111+
116112
---
117113

118114
## CI/CD and Deployment

docs/terminology.mdx

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,9 @@ It is free and passwordless. It integrates WebAuthn for maximum compatibility an
4040

4141
## Mission control
4242

43-
Mission control is the command center for your project. It is under your exclusive control, allowing it, for example, to hold ICP and perform various operations such as topping up your modules.
43+
Mission Control is an optional monitoring service. When enabled, it automatically monitors and tops up your Satellites and Orbiters to keep them running smoothly.
4444

45-
Think of it like the command center for a space mission. Just as NASA's Mission Control coordinates spacecraft and Satellites, your Mission Control manages all your [satellites] or [orbiters](#orbiter).
46-
47-
Because it can hold ICP and is only controlled by you, your Mission Control also functions as your [wallet](#wallet).
48-
49-
For a schematic representation, refer to the [Architecture](miscellaneous/architecture.md) documentation page.
45+
Think of it like the command center for a space mission. Just as NASA's Mission Control monitors spacecraft and Satellites, your Mission Control watches over all your modules and ensures they have the resources they need.
5046

5147
## Modules
5248

0 commit comments

Comments
 (0)