Write Tests
Deploy and manage Windows instances
Overview
At its core, Skylight hosts stable, cloud-based Windows desktop virtual machines, serving as the infrastructure for deploying agents at scale. Each Skylight instance is a fully functional Windows desktop, preloaded with essential software and ready for agent interaction. These instances can be controlled programmatically or used with built-in or custom agents to perform automated tasks.
By default, instances come pre-configured with Microsoft Word, Excel, PowerPoint, VS Code, Firefox, and Paint. You can also install additional apps.
This guide walks you through managing your instances — starting, pausing, and terminating them as needed.
Start a Windows Instance
The start
endpoint returns a JSON with these properties:
Property | Description | Example |
---|---|---|
instance_id | Unique identifier of the created instance | "i-123456" |
message | Human-readable status message | "Instance ready to use" |
livestream_url | URL to livestream the instance | "launchskylight.com/embed/i-123456" |
state | State of the instance | "running" , "pending" , "hibernated" , or "terminated" |
When starting an instance, you can specify a timeout period (in minutes) after which the instance will automatically terminate. The default timeout is 60 minutes:
Instance State Management
To optimize costs, it is recommended to manage the state of your instances.
Check instance state
Instances can be running, pending, hibernated, or terminated:
- Running: you can interact with the instance and operate it with the AI agent
- Pending: the instance is starting up
- Hibernated: this preserves the state without incurring full runtime costs. Hibernated instances maintain knowledge, files, and the desktop state.
- Terminated: the instance is shut down and cannot be recovered. All information (including knowledge, files, and desktop state) is wiped, so make sure to save any important data before terminating.
You can retrieve the current state of your Windows instance:
The state
endpoint returns a JSON with these properties:
Property | Description | Example |
---|---|---|
instance_id | Unique identifier of the instance | "i-123456" |
state | Current state of the instance | "running" , "pending" , "hibernated" , or "terminated" |
timeout | Timeout in minutes before instance auto-termination | 60 |
used_minutes | Minutes used by the instance so far | 10 |
knowledge | Current knowledge of the instance | "unknown" |
livestream_url | URL to livestream the instance | "launchskylight.com/embed/i-123456" |
assigned_at | When the instance was assigned | "2023-01-01T12:00:00Z" or null |
Pause an instance
Hibernate your instance to save its state:
The pause
endpoint returns a JSON with these properties:
Property | Description | Example |
---|---|---|
status | Status of the operation | "success" |
message | Human-readable status message | "Operation completed successfully" |
state | State of the instance | "hibernated" |
Note: Paused instances are charged one tenth of the price of a running instance per minute.
Resume an instance
Resume a previously paused instance:
The resume
endpoint returns a JSON with these properties:
Property | Description | Example |
---|---|---|
status | Status of the operation | "success" |
message | Human-readable status message | "Operation completed successfully" |
state | State of the instance | "running" |
livestream_url | URL to livestream the instance | "launchskylight.com/embed/i-123456" |
Terminate an instance
Completely shut down and remove an instance:
The terminate
endpoint returns a JSON with these properties:
Property | Description | Example |
---|---|---|
status | Status of the operation | "success" |
message | Human-readable status message | "Operation completed successfully" |
state | State of the instance | "terminated" |
Warning: Termination is irreversible and all unsaved data (including knowledge, files, and desktop state) will be lost.
List all instances
Get a list of all your Windows instances:
The instances
endpoint returns a list of instances with these properties:
Property | Description | Example |
---|---|---|
instances | Array of instance objects | [{...}] |
instances[].instance_id | Unique identifier of the instance | "i-123456" |
instances[].state | Current state of the instance | "running" |
instances[].timeout | Timeout in minutes before auto-termination | 60 |
instances[].used_minutes | Minutes used by the instance so far | 10 |
instances[].knowledge | Current knowledge of the instance | "unknown" |
instances[].livestream_url | URL to livestream the instance | "launchskylight.com/embed/i-123456" |
instances[].assigned_at | When the instance was assigned (ISO timestamp) | "2023-01-01T12:00:00Z" |
Knowledge
Instances gain knowledge from agent runs over time. Knowledge gives agents context of what previous agents have done to avoid task repetition or ‘forgetting’ of information.
When an agent completes a task, it produces a summary of its actions and the final result. Information in the summary is automatically stored in the knowledge of the specific instance to provide context to the agent for future tasks.
You can also edit knowledge yourself to give the agent any other context it may need to complete its task. Currently, you can only edit knowledge through the Playground UI.
Best Practices
- Use timeouts to prevent unintended billing - set an appropriate timeout when starting an instance
- Pause VMs when not in use to reduce costs while preserving state
- Check VM state before performing operations to ensure it’s in the expected state
- Save important data before terminating - download your files and save any other important information before terminating instances
Instance Resources
By default, Windows instances are provisioned with standard CPU and RAM configurations. If you need additional resources such as:
- More RAM
- Additional CPU cores
- GPU acceleration
Contact us to upgrade your instance resources.
Pricing
Standard Skylight Windows virtual instances are billed at $0.005 a minute.
Paused instances are not billed for compute time but incur storage charges of $0.0005 a minute for the preserved state.