githubEdit

Hot starts

Pre-provision sandboxes for instant access later on.

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.

circle-exclamation

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 trainingarrow-up-right (university, education platform, embedded lab)

Always Hot

On

2–4 per track

N/A – runs continuously

Review monthly

Scheduled or Invite-scoped

Off

65–70% of registrations

1 hour before (more for complex setups)

Kill 15–30 min after scheduled session start

Scheduled or Invite-scoped

On

20–30% of registrations

1 hour before (more for complex setups)

Kill 30 min after start

Scheduled - separate pools per time block

Off

90–100% of enrolled participants

1 hour before each session

Kill 30 min after each session starts

Scheduled or Invite-scoped

Off

70–80% of registered seats

1 hour before (more for large pools)

Kill 30–45 min after start

Scheduled

On

2–8 per track (based on station count and demo duration)

When expo opens

Kill when expo closes

Scheduled or Invite-scoped

Off (single) / On (recurring)

1 per track

1 hour before sharing

Set an end date or review weekly

circle-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.

Create an always hot pool

Take the following steps to create an always hot pool:

  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.

  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.

circle-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.

Create a scheduled pool

Take the following steps to create a scheduled pool:

  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.

    • 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.

circle-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.

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:

  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.

  5. Under What is the scope of this Hot Start pool?, select Invite-only access.

    • 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 preheat 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 presets 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.

Shortcut from the invite page:

You can also create an invite-scoped Hot Start pool directly from the Manage track invites page.

Click the β€’β€’β€’ of an invite and select Create Hot Start pool. The creation form opens with the invite pre-selected.

Duplicate hot start pools

Duplicate a hot start pool with the following steps:

  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.

Delete hot start pools

Delete a hot start pool with the following steps:

  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.

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

chevron-rightWhy are my tracks taking awhile to load, even with hot start?hashtag

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.

chevron-rightHow far in advance should I create my scheduled hot start pools?hashtag

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.

chevron-rightWhy is my hot start pool filling so slowly?hashtag

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.

Last updated

Was this helpful?