|
| 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 | + |
| 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 |
0 commit comments