A developer friendly API for agents to get work done using a virtual workstation.
Use a browser, join Zoom meetings, have audio conversations, execute code, and much more.
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/40216873492"
ws.Meeting.Join(url)
// Start workstation recording
ws.Recorder.Start()
// Unmute meeting microphone
ws.Meeting.Unmute()
// Introduce agent, and ask if any questions
ws.Voice.Speak(`
Hello! I am an AI assistant.
I'm here to help out and take notes.
`)
resp, _ := ws.Voice.Question("Any 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 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() {
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)
}
}