# Hot starts

## Overview

Hot starting is creating a pool of sandbox instances that are instantly available when an end user starts your track. Without Hot Start, sandbox environments start on demand. This means end users have to wait for Instruqt to provision the sandbox environment before they can access them.&#x20;

{% hint style="warning" %}
**Billing**

You are billed for Hotstarted sandboxes, even if end users are not using them.&#x20;

The goal of a correct Hotstart pool set up is to give every participant an almost instant-start experience without overprovisioning sandboxes you'll pay for but no one uses.
{% endhint %}

## Manage Hot start pools

The right Hot Start configuration depends on the type of event you are running. A live workshop with 50 attendees needs a different setup than an always-available embedded lab on your website.

#### Quick Reference

| Event type                                                                                                                                                                                                             | Hot Start type                            | Auto-refill                   | Pool size guideline                                      | Provisioning lead time                  | Cleanup                                      |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------- | ----------------------------- | -------------------------------------------------------- | --------------------------------------- | -------------------------------------------- |
| [Self-paced on-demand training](https://docs.instruqt.com/resources/hot-starts-best-practises#self-paced-on-demand-training-university-education-platform-embedded-lab) (university, education platform, embedded lab) | Always Hot                                | On                            | 2–4 per track                                            | N/A – runs continuously                 | Review monthly                               |
| [Live workshop](https://docs.instruqt.com/resources/hot-starts-best-practises#live-workshop)                                                                                                                           | Scheduled or Invite-scoped                | Off                           | 65–70% of registrations                                  | 1 hour before (more for complex setups) | Kill 15–30 min after scheduled session start |
| [Webinar](https://docs.instruqt.com/resources/hot-starts-best-practises#webinar)                                                                                                                                       | Scheduled or Invite-scoped                | On                            | 20–30% of registrations                                  | 1 hour before (more for complex setups) | Kill 30 min after start                      |
| [Multi-day training](https://docs.instruqt.com/resources/hot-starts-best-practises#multi-day-training)                                                                                                                 | Scheduled - separate pools per time block | Off                           | 90–100% of enrolled participants                         | 1 hour before each session              | Kill 30 min after each session starts        |
| [Conference hands-on session](https://docs.instruqt.com/resources/hot-starts-best-practises#conference-hands-on-session)                                                                                               | Scheduled or Invite-scoped                | Off                           | 70–80% of registered seats                               | 1 hour before (more for large pools)    | Kill 30–45 min after start                   |
| [Conference booth / expo demo](https://docs.instruqt.com/resources/hot-starts-best-practises#conference-booth-expo-demo)                                                                                               | Scheduled                                 | On                            | 2–8 per track (based on station count and demo duration) | When expo opens                         | Kill when expo closes                        |
| [Single prospect or small group demo](https://docs.instruqt.com/resources/hot-starts-best-practises#single-prospect-or-small-group-demo)                                                                               | Scheduled or Invite-scoped                | Off (single) / On (recurring) | 1 per track                                              | 1 hour before sharing                   | Set an end date or review weekly             |

{% hint style="info" %}
**Note:** Setting a pool end time only removes unclaimed sandboxes. Participants who have already started a sandbox are not affected - their session depends on Idle TimeOut setting, or continues until the track's time-to-live (TTL) expires.
{% endhint %}

### **Create an always hot pool**

Take the following steps to create an always hot pool:

{% tabs %}
{% tab title="🌐 Web UI" %}

1. Click **Settings -> Hot Start** to open the **Manage** hot start page.
2. Click **Create**.
3. In the **Name** field, enter a name for the pool.
4. Use the **Region** dropdown to set where hosts are provisioned.&#x20;
5. To create an always hot pool - under **What is the scope of this Hot Start pool? -** select **Available to all users**.
   * Hot starts are used **whenever the selected tracks are started**, **regardless of how users access them.**
6. Under **What are you targeting?**, select either:
   1. **Specific tracks** – **only the tracks** you select can use this Hot Start.
   2. **Sandbox preset** – any track that uses **the selected preset(s)** can use this Hot Start.
7. Select **the tracks or sandbox presets** that you want to be preheated.
8. In the **Number of hot sandboxes per track/sandbox preset** field, enter your desired number.
9. Toggle **Auto-refill** on if you want the pool to automatically refill as sandboxes are claimed.
10. Under **When should the Hot Starts be available?**, set the **From date** and time for when the pool should start provisioning.
11. Leave the **Until** field empty to keep the pool running continuously.
    * Since this pool is always hot, it stays active until you delete it. Set an end date only if you want to stop it at a specific time.
12. Click **Create**.
    {% endtab %}
    {% endtabs %}

{% hint style="info" %}
**Be cost-effective**

Start with a single instance in your hot start pool and increase the number if your end users experience delays. Since the pool refills automatically, you will rarely need more than four or five instances to ensure fast startup times for a steady flow of end users.
{% endhint %}

### Create a scheduled pool

Take the following steps to create a scheduled pool:

{% tabs %}
{% tab title="🌐 Web UI" %}

1. Click **Settings ->** **Hot start** to open the *Manage hot start* page.
2. Select **Create**.
3. In the **Name** field, enter a name for the pool.
4. Use the **Region** dropdown to set where hosts are provisioned.
5. Under **What is the scope of this Hot Start pool?**, select **Available to all users.**
   * To create **a scheduled pool scoped to a specific invite instead**, see Create hot starts from invites below.
6. Under **What are you targeting?**, select either **Specific tracks** or **Sandbox preset,** then select the tracks or sandbox presets you want to be preheated.
7. In the **Number of hot sandboxes per track/sandbox preset** field, enter your desired number.
8. Toggle **Auto-refill** off if you do not want the pool to refill as sandboxes are claimed.&#x20;
   * Toggligin the Auto-refill off helps you control the number of hotstarted sandboxes you will be billed for.
9. Under **When should the Hot Starts be available?**, set the **From date** **and time** for when the pool should start provisioning.
10. Set the **Until date** and time for when the pool should stop.
11. Click **Create**.

{% hint style="info" %}
Specifying an end date helps manage costs and ensures that hot start pools do not run indefinitely. Long-running hot starts without an end date can lead to significantly high bills.
{% endhint %}
{% endtab %}
{% endtabs %}

### Create hot starts from invites

**You can scope a Hot Start pool to a specific invite.** This ensures pre-provisioned sandboxes are reserved exclusively for users accessing tracks through that invite - pools are not shared across invites unintentionally.

When creating an invite-scoped pool, you can also choose **which tracks or sandbox presets within the invite get a Hot Started pool.** Tracks you don't select still **work through the invite as usual - they just won't be pre-warmed.**

#### **Key behaviors:**

* **Dedicated capacity:** Sandboxes in the pool are used only when users access tracks through the linked invite.
* **Selective preheating:** Remove individual tracks or presets from the pool to avoid pre-warming content you don't need.
* **Preset-level pooling:** When tracks in an invite share the same sandbox preset, a single shared pool covers all of them - no need to multiply the pool size by the number of tracks.
* **Automatic sync:** The pool automatically inherits the tracks and expiration date from the linked invite.
* **Updates:** If you update the invite (e.g., change tracks or extend the expiration), the Hot Start pool updates automatically.

#### To create an invite-linked pool:

{% tabs %}
{% tab title="🌐 Web UI" %}

1. Click **Settings -> Hot Start** to open the *Manag*e hot start page.
2. Click **Create**.
3. In the **Name** field, enter a name for the pool.
4. Use the **Region** dropdown to set where hosts are provisioned.
5. Under **What is the scope of this Hot Start pool?**, select **Invite-only access**.&#x20;
   * A **Select invite** dropdown appears
6. **Select the invite** you want to link this pool to.
7. Under **What are you targeting?**, choose how to **target the pool**:
   1. **Specific tracks**
      1. **The tracks** from your selected invite are listed automatically.
      2. Optionally **remove tracks you don't want to prehea**t by clicking **×** next to them. Removed tracks still work through the invite - they just won't be Hot Started.
      3. In the **Number of hot sandboxes per track** field, enter your desired number.
      4. **Pool size = hot sandboxes × number of selected tracks.**
   2. **Sandbox preset**

      1. **The sandbox preset**s used by tracks in the selected invite are listed automatically.
      2. Optionally **remove presets you don't want to preheat** by clicking **×** next to them.
      3. In the **Number of hot sandboxes per sandbox preset** field, enter your desired number.
      4. **Pool size = hot sandboxes × number of selected presets.**

      **Note:** If the invite contains tracks that use a track sandbox instead of a preset, those tracks will not be Hot Started. To Hot Start all content in the invite, either target Specific tracks instead, or create a separate Hot Start pool for those tracks.
8. Click **Create.**
   {% endtab %}
   {% endtabs %}

#### Shortcut from the invite page:

{% tabs %}
{% tab title="🌐 Web UI" %}
You can also create an invite-scoped Hot Start pool directly from the **Manage track invites page**.&#x20;

Click the ••• of an invite and select **Create Hot Start pool**. The creation form opens with t**he invite pre-selected.**
{% endtab %}
{% endtabs %}

### Duplicate hot start pools

Duplicate a hot start pool with the following steps:

{% tabs %}
{% tab title="🌐 Web UI" %}

1. Click **Settings -> Hot start** to open the *Hot start* page.
2. Click the ••• of the pool you want to duplicate.
3. Click **Duplicate** on the pop-up.\
   ↳ The *Create Hot Start* page opens, with the settings pre filled.
4. Check the settings and click **Create** to create the pool.
   {% endtab %}
   {% endtabs %}

### Delete hot start pools

Delete a hot start pool with the following steps:

{% tabs %}
{% tab title="🌐 Web UI" %}

1. Click **Settings -> Hot start** to open the *Hot start* page.
2. Click the ••• of the pool you want to delete.
3. Click **Delete** on the pop-up.\
   ↳ The *Delete Hot Start* confirmation opens.
4. Click **Confirm**.
   {% endtab %}
   {% endtabs %}

## Best practices

To ensure a smooth and efficient experience with the Hot Start feature, follow these best practices for setup, timing, and cost management.

### General tips

* **Always test before the event.** Create a small test pool of 1–2 sandboxes well in advance. Don't just verify that the pool provisions - also claim a sandbox, confirm the track launches correctly, and check that auto-refill replaces the claimed sandbox. Testing the full flow from provisioning to claiming to refill avoids surprises during your event.
* **Set your track's time-to-live (TTL) to match the event duration.** If the TTL is shorter than your event, sandboxes will expire while participants are still working. They will have to restart and claim a new Hot Start instance. For live events, set the TTL to at least the full duration of the event.
* **Monitor your pool during the event.** Check the Hot Start page to see how many sandboxes have been claimed vs. how many are still available. This gives you data to improve sizing for future events.
* **Understand how provisioning scales.** Instruqt does not spin up all sandboxes at once. It provisions in batches, starting with around 20 and scaling up from there. For large pools (100+ sandboxes), make sure you start provisioning at least 1 hour before the event – and test your timing beforehand so you know exactly how long your pool takes to fully ready.

### Use Track-Level Setup Scripts with Health Checks

The Hot Start feature relies on the successful completion of track-level setup scripts to determine if a sandbox environment is ready for a user.

* Track-level Setup Scripts: Ensure all tracks in your hot start pool use track-level setup scripts for all setup tasks. A successful setup script execution (exiting with a zero exit code) signals that the instance is ready.
* Challenge-level Setup Scripts: When you need to customize a sandbox environment for a specific user, you can leverage the setup script of the first challenge. This script will have user specific parameters injected as environment values. Keep in mind that this will add extra wait time for users, potentially rendering the Hot Start feature less useful.
* Implement Health Checks: Add health checks to the end of your setup scripts to verify the environment is fully functional. For example, you can try calling HTTP endpoints or check that all necessary containers are running.
* Automatic Retries: If a track setup fails (exits with a non-zero exit code), the instance will be terminated automatically, and a new one will be provisioned until the configured limit is reached. This mechanism ensures end users only access instances that provisioned correctly.

### Time Your Provisioning Strategically

Properly timing the provisioning of your hot start pool is crucial for having environments ready when your event starts.

* General Guideline: Start provisioning the hot start pool about one hour before your event begins.
* Adjust for Scale: You may need to start earlier if:
  * A single instance takes more than a few minutes to provision.
  * You are provisioning a very large pool of instances.
* Test Your Timing: It's a good practice to test your provisioning time to ensure everything is ready for your actual event.

### Terminate the Pool to Save Costs

Avoid unnecessary costs by terminating the hot start pool once most users have started their sessions.

* When to Terminate: A hot start pool typically doesn't need to run for more than 15 to 30 minutes after the session starts.
* Setting a pool end time only removes **unclaimed sandboxes.** Participants who have already started a sandbox are not affected - their session depends on Idle TimeOut setting, or continues until the track's time-to-live (TTL) expires.

### Aligning Region with End User Location for Optimal Performance

The **Region** setting is used to select the geographical location where the Hot Start sandboxes will be provisioned. Choosing a region is crucial for reducing the latency between the sandbox hosts and improving the overall end user experience. Select a region that is geographically closest to your target end users to ensure a faster, more responsive sandbox environment.

## FAQ

<details>

<summary>Why are my tracks taking awhile to load, even with hot start?</summary>

When you hot start a track, Instruqt pre-provisions sandboxes and runs all of the corresponding *Track* setup scripts. The initial *challenge's* setup script will not run until a user clicks **Launch** on your track. This means if the challenge setup script takes 3 minutes to complete, users will need to wait 3 minutes! You can mitigate this by placing as much configuration as possible in the initial Track setup script, and keeping the initial challenge setup script as simple as possible. \
\
**Note**: Certain user-related environment variables, such as `INSTRUQT_USER_ID`, will be empty if they are referenced within track setup scripts and hot started. In this case, you will need to leverage challenge setup scripts if you require those variables.&#x20;

</details>

<details>

<summary>How far in advance should I create my scheduled hot start pools?</summary>

The answer is, of course, it depends! Generally speaking, we recommend scheduling your hot start pools an hour ahead of when you'll need them. If you have very complex and long running setup scripts, consider adding more time.&#x20;

</details>

<details>

<summary>Why is my hot start pool filling so slowly?</summary>

Instruqt provisions hot start pools incrementally. At first, only a small batch of sandboxes (\~20) are provisioned. If all of the initial sandboxes deploy successfully, the amount of concurrent sandboxes provisioning increases. In the event errors are detected, Instruqt automatically reduces the number of concurrent sandboxes provisioning, preventing large of amounts of failures to occur.

</details>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.instruqt.com/sandboxes/manage/hot-start.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
