Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.uplink.build/llms.txt

Use this file to discover all available pages before exploring further.

To use AI features in Uplink, you need to create an AI agent and configure it with your preferred provider.

Installation

First, install the AI package:
npm install @uplink-code/ai

Creating an Agent

Use the ai.createAgent() factory function to create an agent:
import ai from '@uplink-code/ai'

const agent = ai.createAgent({
  provider: 'anthropic',
  options: {
    apiKey: process.env.ANTHROPIC_API_KEY
  }
})

Provider Configuration

Anthropic (Claude)

Anthropic’s Claude models are fully supported and recommended for browser automation.
import ai from '@uplink-code/ai'

const agent = ai.createAgent({
  provider: 'anthropic',
  model: 'claude-sonnet-4-5-20250929', // optional, this is the default
  maxTokens: 4096, // optional
  options: {
    apiKey: process.env.ANTHROPIC_API_KEY,
    // Additional Anthropic SDK options
    baseURL: 'https://api.anthropic.com', // optional
    defaultHeaders: {} // optional
  }
})
Get an API key: Sign up at console.anthropic.com and create an API key. Available models:
  • claude-sonnet-4-5-20250929 (default) - Best balance of speed and intelligence
  • claude-opus-4-5-20251101 - Most capable, slower and more expensive
  • claude-haiku-4-20241024 - Fastest and cheapest, less capable

OpenAI (GPT)

OpenAI support is coming soon and not yet available.
// Coming soon
const agent = ai.createAgent({
  provider: 'openai',
  model: 'gpt-4',
  maxTokens: 4096,
  options: {
    apiKey: process.env.OPENAI_API_KEY
  }
})

Using the Agent

You can set the agent at two levels: Set the agent when connecting to apply it to all browsers and pages:
import uplink from '@uplink-code/uplink'
import ai from '@uplink-code/ai'

const agent = ai.createAgent({
  provider: 'anthropic',
  options: {
    apiKey: process.env.ANTHROPIC_API_KEY
  }
})

// Agent applies to all browsers and pages
const session = await uplink.session('<project-api-key>', {
  projectId: '<project-id>',
  include: { ecdsa: true, ecdh: true }
})
const client = await uplink.client.fromSession(session, { agent })
const browser = await client.launch()
const page = await browser.newPage()

// AI methods now available
await page.act('Click the login button')

Page-Level Agent

Override the agent for a specific page:
const session = await uplink.session('<project-api-key>', {
  projectId: '<project-id>',
  include: { ecdsa: true, ecdh: true }
})
const client = await uplink.client.fromSession(session)
const browser = await client.launch()
const page = await browser.newPage()

// Set agent on this page only
const agent = ai.createAgent({
  provider: 'anthropic',
  options: {
    apiKey: process.env.ANTHROPIC_API_KEY
  }
})

page.setAgent(agent)

// AI methods now available on this page
await page.act('Fill in the form')

Environment Variables

Store API keys in environment variables for security:
# .env
ANTHROPIC_API_KEY=sk-ant-api03-...
Access them in your code:
const agent = ai.createAgent({
  provider: 'anthropic',
  options: {
    apiKey: process.env.ANTHROPIC_API_KEY
  }
})
Never commit API keys to version control. Use environment variables or a secrets manager.

Complete Setup Example

Here’s a complete example with environment variables and error handling:
import uplink from '@uplink-code/uplink'
import ai from '@uplink-code/ai'
import 'dotenv/config' // Load .env file

// Validate API key
if (!process.env.ANTHROPIC_API_KEY) {
  throw new Error('ANTHROPIC_API_KEY environment variable is required')
}

// Create agent
const agent = ai.createAgent({
  provider: 'anthropic',
  options: {
    apiKey: process.env.ANTHROPIC_API_KEY
  }
})

// Connect with agent
const session = await uplink.session('<project-api-key>', {
  projectId: '<project-id>',
  include: { ecdsa: true, ecdh: true }
})
const client = await uplink.client.fromSession(session, { agent })

try {
  const browser = await client.launch()
  const page = await browser.newPage()

  await page.goto('https://example.com')
  await page.act('Click the get started button')

  await page.close()
  await browser.close()
} finally {
  await client.close()
}

Cost Considerations

AI automation makes API calls to your chosen provider, which incurs costs:
  • Anthropic Claude: ~$3-15 per 1M input tokens depending on model
  • OpenAI GPT: ~$2.50-30 per 1M input tokens depending on model
Each act() or extract() call sends page context (usually 1-5K tokens) plus your instruction. Tips to reduce costs:
  • Use Haiku model for simple tasks
  • Use act() sparingly for complex interactions only
  • Combine multiple actions into one instruction when possible
  • Cache results when extracting the same data repeatedly

Next Steps

Natural Language Actions

Use page.act() to perform actions with AI

Data Extraction

Extract structured data with page.extract()