Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
166 changes: 80 additions & 86 deletions .llms-snapshots/llms-full.txt

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion .llms-snapshots/llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ Juno is your self-contained serverless platform for building full-stack web apps
- [Infrastructure](https://juno.build/docs/miscellaneous/infrastructure.md): Discover how Juno's infrastructure blends self-hosted deployment with WebAssembly containers, focusing on simplicity, control, and modern Web2-compatible tooling.
- [Memory](https://juno.build/docs/miscellaneous/memory.md): This page explains how memory works conceptually and how you can monitor its usage through the Console.
- [Provisioning Options](https://juno.build/docs/miscellaneous/provisioning-options.md): The creation wizard for Satellites and Orbiters includes advanced provisioning options for developers who need more control.
- [Wallet](https://juno.build/docs/miscellaneous/wallet.md): This section provides guidance on managing your assets and cycles with your wallet, which are essential for maintaining and providing enough resources for your modules in the Juno ecosystem.
- [Wallet](https://juno.build/docs/miscellaneous/wallet.md): This section provides guidance on managing your cycles with your wallet (your account), which are essential for maintaining and providing enough resources for your modules in the Juno ecosystem.
- [Workarounds](https://juno.build/docs/miscellaneous/workarounds.md): This page is dedicated to helping you make the most of Juno features, even when some functionalities are not yet fully supported out of the box. Below, you'll find practical workarounds and guidance for processes which in the future will be resolved by new features.

## Reference
Expand Down
2 changes: 1 addition & 1 deletion docs/build/analytics/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ You have the capability to delete all collected data within your Analytics at an

## How does it work?

To gather analytics for your dapps, you need to create a module called [orbiter]. Creating an Orbiter requires ICP, and its price is defined in the [transaction costs](../../pricing#transaction-costs).
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).

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

Expand Down
10 changes: 10 additions & 0 deletions docs/components/cycles.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
The amount of cycles available determines whether a module will be active, inactive, or eventually decommissioned (deleted).

This ensures that related costs cannot surpass the amount of cycles available.

Think of cycles like prepaid mobile data:

- Just like your mobile plan allows you to make calls and browse the internet, cycles enable your containers to process computations and store data.
- When your data (cycles) runs out, your service becomes inactive.
- To keep your modules running smoothly, you need to top up your cycles regularly (manually or automatically).
- If you don’t top it up, after some time, it will be decommissioned, similar to losing your prepaid number due to prolonged inactivity.
16 changes: 8 additions & 8 deletions docs/guides/local-development.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ This enables:
- A smooth dev loop, from prototype to deployment
- A unique way to build, debug, and validate smart contract logic and frontend behavior — all in one place

![A screenshot of the DEV Console UI login screen](../img/dev-console/login.webp)
![A screenshot of the DEV Console UI login screen](../img/dev-console/login.png)

---

Expand Down Expand Up @@ -131,8 +131,8 @@ Likewise, not all services are mounted by default - but they can be turned on (o
| ICP Index | ✅ | ✅ |
| NNS Governance | ✅ | ➖ |
| Cycles Minting (CMC) | ✅ | ➖ |
| Cycles Ledger | | ➖ |
| Cycles Index | | ➖ |
| Cycles Ledger | | ➖ |
| Cycles Index | | ➖ |
| Registry | ➖ | ➖ |
| SNS | ➖ | ➖ |
| NNS-dapp | ➖ | ➖ |
Expand Down Expand Up @@ -214,16 +214,16 @@ await initSatellite({

The admin server running on port `5999` provides a variety of internal management. Below are some tips and example scripts to make use of this little server.

### Get ICP
### Get Cycles

If you're using the full environment, the Console UI includes a "Get ICP" button in the wallet. It's a quick way to get ICP out of the box.
If you're using the full environment, the Console UI includes a "Get Cycles" button in the wallet. It's a quick way to get Cycles out of the box.

![A screenshot of the wallet with the Get ICP call to action of Console UI in dev mode](../img/dev-console/wallet.webp)
![A screenshot of the wallet with the Get Cycles call to action of Console UI in dev mode](../img/dev-console/wallet.png)

You might want to transfer some ICP from the ledger to a specified principal, which can be particularly useful when you're just getting started developing your app and no users currently own ICP. This can be achieved by querying:
You might want to transfer some Cycles from the ledger to a specified principal, which can be particularly useful when you're just getting started developing your app and no users currently own Cycles. This can be achieved by querying:

```
http://localhost:5999/ledger/transfer/?to=$PRINCIPAL
http://localhost:5999/ledger/transfer/?to=$PRINCIPAL&ledgerId=um5iw-rqaaa-aaaaq-qaaba-cai&amount330000000000000
```

For example, you can use the following script:
Expand Down
Binary file added docs/img/dev-console/login.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed docs/img/dev-console/login.webp
Binary file not shown.
Binary file added docs/img/dev-console/wallet.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed docs/img/dev-console/wallet.webp
Binary file not shown.
Binary file added docs/img/wallet/wallet-buy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed docs/img/wallet/wallet-id.png
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file modified docs/img/wallet/wallet-receive-oisy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed docs/img/wallet/wallet-receive-wallet-id-qrcode.png
Binary file not shown.
Binary file modified docs/img/wallet/wallet-receive-wallet-id.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/img/wallet/wallet-receive.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/img/wallet/wallet-send-form.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/img/wallet/wallet-send-review.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified docs/img/wallet/wallet-send.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion docs/management/monitoring.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ Keeping your modules running smoothly is essential for any application. The moni

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

---

Expand Down
82 changes: 38 additions & 44 deletions docs/miscellaneous/wallet.mdx
Original file line number Diff line number Diff line change
@@ -1,95 +1,89 @@
# Wallet

This section provides guidance on managing your assets and cycles with your [wallet](../terminology.mdx#wallet), which are essential for maintaining and providing enough resources for your modules in the Juno ecosystem.
This section provides guidance on managing your cycles with your wallet (your account), which are essential for maintaining and providing enough resources for your modules in the Juno ecosystem.

:::important

Just like your modules, your wallet is fully under your control — Juno cannot access, move, or recover the ICP or cycles held inside.
Just like your modules, your wallet is under your control — Juno cannot access, move, or recover the cycles held inside.

Because of this non-custodial model, there are no refunds, reversals, or recovery options. Always double-check destination addresses before sending funds.
Because of this model, there are no refunds, reversals, or recovery options. Always double-check destination addresses before sending funds.

As a best practice, we recommend not holding large amounts of ICP in your Juno wallet unless necessary. Use it as a utility wallet for fueling your modules — not as a long-term vault.
As a best practice, we recommend not holding large amounts of cycles unless necessary. Use it as a utility for fueling your modules — not as a long-term vault.

We also recommend enabling [monitoring](../management/monitoring.md) to ensure your Mission Control stays alive and responsive at all times.
We also recommend enabling [monitoring](../management/monitoring.md) to ensure your projects and analytics stay alive and responsive at all times.

:::

---

## What are ICP?
## What are Cycles?

ICP are the native cryptocurrency of the [Internet Computer](https://internetcomputer.org). They provide utility for powering the network and are also used for governance.
Cycles are used to pay for infrastructure usage. Your Satellite, Mission Control or Orbiter consume cycles while they are active.

One key usage is converting ICP tokens to cycles, which are used to cover the computational and storage costs of running modules.
import Cycles from "../components/cycles.md";

---

## Why do I need ICP?

Given that Juno is built on top of the Internet Computer (see [architecture](architecture.md)), your modules require cycles to stay alive.

While you don’t necessarily need ICP in the Juno ecosystem since you can acquire cycles with Stripe through [cycle.express](https://cycle.express), having some ICP can still be interesting.

It provides independence by allowing you to top up your modules without relying on third-party services. Depending on how you obtain your tokens, using ICP can also help lower transaction costs and offers interoperability with other Internet Computer projects, making it a flexible and practical option.
<Cycles />

---

## Buying ICP
## Buying Cycles

To get ICP from the outside world into your wallet, you can use most cryptocurrency exchange platforms that allow you to buy ICP (refer to this [list](https://coinranking.com/fr/coin/aMNLwaUbY+internetcomputerdfinity-icp/exchanges) of major ones). These platforms let you convert dollars (or other currencies) into ICP. Keep in mind that exchanges charge a fee for this service.
The easiest way to purchase cycles — and get the best deal — is through [Cycle.express](https://cycle.express), which lets you pay with a credit card via Stripe.

Once you have obtained ICP on those platforms, you can initiate a transaction to send it to your wallet. For this purpose, you will need to provide a destination address where the ICP should be sent. This destination address corresponds to the [Account Identifier](../terminology.mdx#account-identifier) of your wallet.
The service is integrated directly into the Juno Console. From your wallet, click "Buy" and follow the steps.

You can locate the destination address in Juno's [console]. Once you've logged in, go to your [wallet](https://console.juno.build/wallet) and click "Receive".
:::note

![A screenshot of the wallet with the "Receive" button](../img/wallet/wallet-receive.png)
The default purchase amount is $1 USD. You can change this amount on Stripe's payment page (maximum $100).

Select "Account identifier".

![A screenshot of the wallet "Receive" modal with an arrow pointing to the Account Identifier option](../img/wallet/wallet-receive-account-identifier.png)

Either copy your account identifier or use the provided QR code. This is the address you should use to receive ICP from the outside world.
:::

![A screenshot of the Account Identifier and QR code](../img/wallet/wallet-receive-account-identifier-qrcode.png)
![A screenshot of where to find the call to action Buy](../img/wallet/wallet-buy.png)

---

## Receiving ICP
## Receiving Cycles

If you already hold ICP, you can transfer it from wallets within the ecosystem such as the [NNS dapp](https://nns.internetcomputer.org/), [OISY](https://oisy.com) or [others](https://internetcomputer.org/ecosystem?tag=Wallet).
If you already hold cycles or want to swap some, you can use the [OISY Wallet](https://oisy.com).

To initiate a transaction to send it to your wallet, you will need to provide a destination address, which in this case is your wallet ID.
To initiate a transaction manually, you will need to provide a destination address. To find it in the [console], open the shortcut to your [wallet](https://console.juno.build/wallet) and click "Receive" select "Wallet ID".

You can locate your wallet ID in Juno's [console]. Once you've logged in, go to your [wallet](https://console.juno.build/wallet), where the information is easy to find.
![A screenshot of where to find the call to action Receive](../img/wallet/wallet-receive.png)

![A screenshot of the wallet with "Wallet ID" information](../img/wallet/wallet-id.png)
![A screenshot of where to find the link to the Wallet ID](../img/wallet/wallet-receive-wallet-id.png)

If you wish to use a QR code, click "Receive" and select "Wallet ID".
You can also connect OISY to Juno's console to initiate the transaction and proceed with the approval. This eliminates the need to copy, paste, or scan any addresses.

![A screenshot of the wallet "Receive" modal with an arrow pointing to the Wallet ID option](../img/wallet/wallet-receive-wallet-id.png)

Either copy your account identifier or use the provided QR code. This is the address you should use to transfer ICP within the ecosystem.
![A screenshot of the wallet "Receive" modal with an arrow pointing to the OISY option](../img/wallet/wallet-receive-oisy.png)

![A screenshot of the Wallet ID and QR code](../img/wallet/wallet-receive-wallet-id-qrcode.png)
---

If you are using OISY, you can also connect this third-party wallet to Juno's console to initiate the transaction and proceed with the approval. This eliminates the need to copy, paste, or scan any addresses.
## Send Cycles

![A screenshot of the wallet "Receive" modal with an arrow pointing to the OISY option](../img/wallet/wallet-receive-oisy.png)
Sending Cycles to the ecosystem or the outside world can be initiated from your wallet in Juno's [console]. To start a transaction, click "Send".

---
:::important

## Send ICP
Sending cycles transfers them to another wallet. To add manually cycles (resources) to your modules (Satellites, Orbiters, or Mission Control), use the **Top-up** feature instead.

Sending ICP to the ecosystem or the outside world can be initiated from your wallet in Juno's [console]. To start a transaction, click "Send".
:::

![A screenshot of the wallet with the "Send" button](../img/wallet/wallet-send.png)

Enter the destination wallet ID or account identifier where you want to send ICP, along with the amount.
Enter the destination wallet ID or account identifier where you want to send cycles, along with the amount.

![A screenshot of the wallet send form](../img/wallet/wallet-send-form.png)

Review the transaction details and confirm to execute it.

![A screenshot of the wallet send review mask](../img/wallet/wallet-send-review.png)

---

## Legacy Support

For backwards compatibility with Mission Control that operated in ICP, the wallet features still support those tokens. You can receive and send ICP if needed.

However, using cycles is now the recommended approach for all operations.

[console]: https://console.juno.build
27 changes: 17 additions & 10 deletions docs/pricing.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ keywords:
Juno pricing,
operating costs,
transaction fees,
ICP,
cycles,
infrastructure costs,
storage costs,
Expand All @@ -18,8 +17,8 @@ keywords:

Juno has a simple starting point:

- ✅ Free to get started: new developers receive credits to create one managing container and one project container.
- 💰 Pay as you grow: additional modules (for projects or analytics) cost 0.4 ICP each to create.
- ✅ Free to get started: new developers receive credits to create a container for their first project, with initial resources included, ready to use.
- 💰 Pay as you grow: additional modules (for projects, monitoring or analytics) cost 3 T Cycles each to create.
- 📦 Operating costs: ongoing costs for storage, compute, and deployments are paid with cycles.

From there, you can dive into the details below to estimate storage, deployment, and data costs more precisely.
Expand All @@ -34,21 +33,29 @@ To ensure that your infrastructure usage is covered, you must maintain a minimum

You can top up your cycle balance in the Juno [console](https://console.juno.build/) through one of the following methods:

- Using ICP from your wallet.
- Purchasing cycles with Stripe, thanks to our friends at [cycle.express](https://cycle.express).
- Using cycles from your [wallet](miscellaneous/wallet.mdx).
- Transferring cycles between modules, such as moving cycles from one Satellite to another.

---

## Transaction costs

New developers who join Juno are granted credits to create a Mission Control and their initial [satellite].
New developers who join Juno are granted credits to create an initial [Satellite].

To create additional Satellites, a fee of 0.4 ICP is necessary, along with the infrastructure costs for setting up the container.
To create additional Satellites, a fee of 3 T Cycles is necessary, along with the infrastructure costs for setting up the container.

Similarly, enabling analytics by creating an [orbiter] entails a fee of 0.4 ICP.
Similarly, enabling analytics by creating an [Orbiter] or monitoring with a [Mission Control] entails a fee of 3 T Cycles.

Please note that additional transaction fees may be introduced in the future, and pricing and models are subject to change.
Each module is provisioned with approximately 1.5 T Cycles in usable resources.

:::note

- For backwards compatibility, modules can still be created using Mission Control (deprecated). The transaction cost for this approach is 1.5 ICP.

- Additional transaction fees may be introduced in the future, and pricing and models are subject to change.

:::

---

Expand Down Expand Up @@ -84,11 +91,11 @@ It's important to note that subsequent deployments of your project can have sign

Querying data on the Internet Computer is currently free, so there are no additional costs to expect when reading data.

In terms of persisting data, based on our experience, storing 100 instances of a JSON sample data with approximately 90 fields, totaling around 900 bytes, costs approximately 0.0005 TCycles or 0.00017 ICP ($0.000675). This means that the cost for a single transaction of this nature would be approximately 0.000005 TCycles or 0.0000017 ICP ($0.00000675).
In terms of persisting data, based on our experience, storing 100 instances of a JSON sample data with approximately 90 fields, totaling around 900 bytes, costs approximately 0.0005 TCycles ($0.000675). This means that the cost for a single transaction of this nature would be approximately 0.000005 TCycles or 0.0000017 ICP ($0.00000675).

:::note

Pricing information was last reviewed on Sept. 26, 2025.
Pricing information was last reviewed on Jan. 7, 2026.

Figures are estimates and may change as the Internet Computer evolves.

Expand Down
2 changes: 1 addition & 1 deletion docs/reference/configuration.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -416,7 +416,7 @@ You can customize the ports exposed by the emulator:
| Field | Description | Default |
| ------- | -------------------------------------------------------------------------------- | ------- |
| server | The local Internet Computer replica port. Your app or project interacts with it. | `5987` |
| admin | Admin server used for internal tasks (e.g., ICP transfer). | `5999` |
| admin | Admin server used for internal tasks (e.g., Cycles transfer). | `5999` |
| console | Console UI port (only used with `skylab`). | `5866` |

:::note
Expand Down
Loading