The serverless platform for AI virtual workstations.
Build agents that use a browser, join online meetings, execute code - anything you can do from a laptop.
AgentStation is an API for agents to get work done using a virtual workstation.
We are gradually letting developers onto the platform.
 Early access signups get $50 in free credits.
Virtual workstations allow AI to access software and data across thousands of services - in just a few lines of code.
package main
import asv1 "github.com/agentstation/go-sdk/v1"
func main() {
    client, _ := asv1.NewClient()        // Key from $AGENTSTATION_API_KEY
    ws, _ := client.RequestWorkstation() // Request a new workstation
    // Join an existing meeting by URL
    ws.Meeting.Join("https://us06web.zoom.us/j/40216873492")
    ws.Recorder.Start() // Start recording the workstation screen & audio
    ws.Meeting.Unmute() // Unmute meeting microphone
    // Introduce the AI assistant, and ask attendees if they have any questions
    ws.Voice.Speak("Hello! I am an AI assistant here to help out and take notes.")
    resp, _ := ws.Voice.Question("Do you have any questions?")
    print(resp) // Pass this to a LLM to process or a vector database to search
}package main
import (
 asv1 "github.com/agentstation/go-sdk/v1"
)
func main() {
 // New client and request a workstation
 client, _ := asv1.NewClient()
 ws, _ := client.RequestWorkstation()
 // Join an existing meeting by URL
 url := "https://us06web.zoom.us/j/402168 "
 ws.Meeting.Join(url)
 // Start workstation recording
 ws.Recorder.Start()	
  
 // Unmute meeting microphone
 ws.Meeting.Unmute()  
 // Introduce agent, and ask a question
  ws.Voice.Speak(`
   Hello! I am an AI assistant.
   I'm here to help out and take notes.
  `)
 resp, _ := ws.Voice.Question("Questions?")
 
 // Pass this to a LLM to process
 // or a vector database to search
 print(resp)
}package main
import (
    asv1 "github.com/agentstation/go-sdk/v1"
    "github.com/agentstation/go-sdk/v1/keys"
)
func main() {
    client, _ := asv1.NewClient()        // Key from $AGENTSTATION_API_KEY
    ws, _ := client.RequestWorkstation() // Request a new workstation
    // Open a browser tab, type a search query, and press enter
    ws.Browser.OpenTabWithURL("https://google.com")
    ws.Browser.Input("textarea[title='Search']", "2024 Olympics")
    ws.Browser.Keyboard(keys.Press, keys.Enter)
    html, _ := ws.Browser.HTML()      // Grab page html
    bss, _ := ws.Browser.Screenshot() // Take browser screenshot
    sss, _ := ws.System.Screenshot()  // Take OS screenshot
    ws.Release()                      // Release workstation
    print(html.URL, bss.URL, sss.URL) // Print file URLs
}package main
import (
 asv1 "github.com/agentstation/go-sdk/v1"
 "github.com/agentstation/go-sdk/v1/keys"
)
func main() {
 // New client and request a workstation
 client, _ := asv1.NewClient()
 ws, _ := client.RequestWorkstation()
 // Open a browser tab
 ws.Browser.TabOpenURL("https://google.com")
 // Type a search query and press enter
 selector := "textarea[title='Search']"
 query := "2024 Olympics"
 ws.Browser.Input(selector, query)
 ws.Browser.Keyboard(keys.Press,keys.Enter)
 // Grab page html and take screenshot
 html, _ := ws.Browser.HTML()
 file, _ := ws.System.Screenshot()
 ws.Release() // Release the workstation
 // Print html and screenshot download URLs
 print(html.URL, bss.URL, sss.URL)
}package main
import asv1 "github.com/agentstation/go-sdk/v1"
func main() {
  client, _ := asv1.NewClient()		// Key from $AGENTSTATION_API_KEY
  ws, _ := client.RequestWorkstation()  // Request a new workstation
  // Execute a prompt instruction to complete a task
  result, _ := ws.AI.Prompt(`
    Open a new browser tab, go to google.com, search for '2024 Olympics', 
    grab the html of the results page, and take a screenshot of the results.
  `)
  ws.Release() // Release the workstation
  // Print the html and screenshot download URLs
  for _, file := range result.Files {
    print(html.URL, bss.URL, sss.URL)
  }
}package main
import (
 asv1 "github.com/agentstation/go-sdk/v1"
)
func main() {
 // New client and request a workstation
 client, _ := asv1.NewClient()
 ws, _ := client.RequestWorkstation()
 // Execute a prompt to complete a task
 result, _ := ws.AI.Prompt(`
  Open a new browser tab, 
  go to google.com, 
  search for '2024 Olympics', 
  grab the html of the results page, 
  and take a screenshot of the results.
`)
 ws.Release() // Release the workstation
 // Print html and screenshot download URLs
 for _, file := range result.Files {
  print(html.URL, bss.URL, sss.URL)
 }
}package main
import asv1 "github.com/agentstation/go-sdk/v1"
func main() {
  client, _ := asv1.NewClient()		// Key from $AGENTSTATION_API_KEY
  ws, _ := client.RequestWorkstation()  // Request a new workstation
  // Execute a prompt instruction to complete a task
  result, _ := ws.AI.Prompt(`
    Open a new browser tab, go to google.com, search for '2024 Olympics', 
    grab the html of the results page, and take a screenshot of the results.
  `)
  ws.Release() // Release the workstation
  // Print the html and screenshot download URLs
  for _, file := range result.Files {
    print(html.URL, bss.URL, sss.URL)
  }
}package main
import asv1 "github.com/agentstation/go-sdk/v1"
func main() {
  // New client and request a workstation
  client, _ := asv1.NewClient()
  ws, _ := client.RequestWorkstation()
  // Execute a prompt to complete a task
  result, _ := ws.AI.Prompt(`
    Open a new browser tab, 
    go to google.com, 
    search for '2024 Olympics', 
    grab the html of the results page, 
    and take a screenshot of the results.
  `)
  ws.Release() // Release the workstation
  // Print the html and screenshot download URLs
  for _, file := range result.Files {
    print(html.URL, bss.URL, sss.URL)
  }
}
From AI-assisted workflows to fully autonomous agents.
We manage a pool of ready-to-use environments, so you can request workstations from the API or dashboard with no warm-up times.
We price per minute of a requested workstation.
