> ## Documentation Index
> Fetch the complete documentation index at: https://tbd-6fc993ce-hypeship-docs-website-deploy-hook.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# wrangle the wild web

export const CopyPromptButton = () => {
  const [copied, setCopied] = useState(false);
  const prompt = `# Setup Kernel

## Prerequisites
- Read the kernel-cli skill at https://github.com/kernel/skills/blob/main/plugins/kernel-cli/skills/kernel-cli/SKILL.md for reference on commands and capabilities.

## Steps

1. **Check if Kernel CLI is installed:**
   - Run \`kernel --version\`.
   - If not found, install via \`brew install kernel/tap/kernel\`.
   - If found, run \`brew upgrade kernel/tap/kernel\` to ensure latest version.
   - Verify with \`kernel --version\` and confirm >= v0.16.0.

2. **Check authentication:**
   - Run \`kernel auth\`.
   - If authenticated, done.
   - If not, run \`kernel login\` and tell the user to complete the browser flow.
     Poll \`kernel auth\` every 5 seconds, up to 5 minutes.
     If it times out, stop and ask the user for help.

3. **Create a browser and open Live View:**
   - Run a Kernel CLI command that creates a browser session and goes to \`https://www.kernel.sh/docs/browsers/live-view\`
   - Capture the returned \`browser_live_view_url\`.
   - Open that URL in the user's browser.
   - Tell the user they can use the live view immediately.
   - If browser creation fails, stop and ask the user for help.`;
  const handleCopy = useCallback(async () => {
    try {
      await navigator.clipboard.writeText(prompt);
      setCopied(true);
      setTimeout(() => setCopied(false), 2000);
    } catch {
      const textarea = document.createElement('textarea');
      textarea.value = prompt;
      textarea.style.position = 'fixed';
      textarea.style.opacity = '0';
      document.body.appendChild(textarea);
      textarea.select();
      document.execCommand('copy');
      document.body.removeChild(textarea);
      setCopied(true);
      setTimeout(() => setCopied(false), 2000);
    }
  }, []);
  return <button onClick={handleCopy} style={{
    display: 'inline-flex',
    alignItems: 'center',
    justifyContent: 'center',
    gap: '0.5rem',
    width: '100%',
    maxWidth: '352px',
    height: '56px',
    padding: '0 32px',
    fontSize: '0.9375rem',
    fontWeight: 500,
    letterSpacing: '0.01em',
    color: '#fff',
    backgroundColor: '#111',
    border: '1px solid rgba(255, 255, 255, 0.08)',
    cursor: 'pointer',
    textDecoration: 'none',
    transition: 'text-decoration 0.15s ease',
    fontFamily: 'inherit'
  }} onMouseEnter={e => {
    e.currentTarget.style.textDecoration = 'underline';
  }} onMouseLeave={e => {
    e.currentTarget.style.textDecoration = 'none';
  }}>
      {copied ? <>
          <svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
            <polyline points="3.5 8.5 6.5 11.5 12.5 4.5" />
          </svg>
          copied!
        </> : <>
          <svg width="16" height="16" viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round">
            <rect x="5.5" y="5.5" width="8" height="8" rx="1.5" />
            <path d="M10.5 5.5V3.5C10.5 2.67 9.83 2 9 2H3.5C2.67 2 2 2.67 2 3.5V9C2 9.83 2.67 10.5 3.5 10.5H5.5" />
          </svg>
          copy prompt
        </>}
    </button>;
};

We build crazy fast, open source infra for AI agents to access the internet. Trusted by Cash App, Framer, and 3,000+ teams.

<Columns className="responsive-columns" cols={4}>
  <Card title="Sandboxed Chromium" img="https://mintcdn.com/tbd-6fc993ce-hypeship-docs-website-deploy-hook/cJgTYsI5Og5Rj8s3/images/chromium.svg?fit=max&auto=format&n=cJgTYsI5Og5Rj8s3&q=85&s=6cadaeff49c0fa014e49c5c667f5ed7f" href="/introduction/create" width="512" height="452" data-path="images/chromium.svg">
    We spin up cloud browsers in \<30ms with GPU acceleration when needed.
  </Card>

  <Card title="Auth" img="https://mintcdn.com/tbd-6fc993ce-hypeship-docs-website-deploy-hook/cJgTYsI5Og5Rj8s3/images/auth.svg?fit=max&auto=format&n=cJgTYsI5Og5Rj8s3&q=85&s=b2f066536f441cb77a71034f6f96c535" href="/auth/overview" width="512" height="452" data-path="images/auth.svg">
    We manage auth for your agents so you don't have to.
  </Card>

  <Card title="Stealth Mode" img="https://mintcdn.com/tbd-6fc993ce-hypeship-docs-website-deploy-hook/cJgTYsI5Og5Rj8s3/images/stealth.svg?fit=max&auto=format&n=cJgTYsI5Og5Rj8s3&q=85&s=c7f576f851642ca48a41e6c9453c77ef" href="/browsers/bot-detection/overview" width="512" height="452" data-path="images/stealth.svg">
    We solve CAPTCHAs and manage residential proxies to help you see fewer of them.
  </Card>

  <Card title="o11y" img="https://mintcdn.com/tbd-6fc993ce-hypeship-docs-website-deploy-hook/cJgTYsI5Og5Rj8s3/images/o11y.svg?fit=max&auto=format&n=cJgTYsI5Og5Rj8s3&q=85&s=dfec50b1c67dc8f2ca7dbddcbd77679c" href="/introduction/observe" width="512" height="452" data-path="images/o11y.svg">
    You can view sessions live and record them as MP4s for debugging.
  </Card>
</Columns>

## start here

<Columns cols={3}>
  <Card title="Create" href="/introduction/create">
    Spin up a browser and pick the shape — headless, stealth, GPU, profiles.
  </Card>

  <Card title="Control" href="/introduction/control">
    Drive it with computer use, playwright execution, CDP, or WebDriver BiDi.
  </Card>

  <Card title="Observe" href="/introduction/observe">
    Watch it live, record replays, and capture screenshots.
  </Card>
</Columns>

<div className="tinker-box">
  <h3 style={{ margin: 0, fontSize: '1.5rem', fontWeight: 600 }}>fast setup</h3>

  <div className="tinker-box-row">
    <div style={{ flexShrink: 0 }}>
      <img src="https://mintcdn.com/tbd-6fc993ce-hypeship-docs-website-deploy-hook/cJgTYsI5Og5Rj8s3/images/tinker-bot.svg?fit=max&auto=format&n=cJgTYsI5Og5Rj8s3&q=85&s=e380a826f3fa473b53e2caa4710362fd" alt="" className="block dark:hidden" style={{ width: '146px', height: 'auto' }} width="146" height="280" data-path="images/tinker-bot.svg" />

      <img src="https://mintcdn.com/tbd-6fc993ce-hypeship-docs-website-deploy-hook/cJgTYsI5Og5Rj8s3/images/tinker-bot-dark.svg?fit=max&auto=format&n=cJgTYsI5Og5Rj8s3&q=85&s=d7783ba96b47c8965615489d8629d7e6" alt="" className="hidden dark:block" style={{ width: '146px', height: 'auto' }} width="146" height="280" data-path="images/tinker-bot-dark.svg" />
    </div>

    <div className="tinker-box-content">
      <p style={{ margin: 0, fontSize: '0.9375rem', lineHeight: 1.6, opacity: 0.8 }}>
        copy and paste this into your AI coding agent (Cursor, Claude, Windsurf, etc.). it installs the Kernel CLI and skills, authenticates you, and opens a live browser session that you or your agent can interact with.
      </p>

      <div>
        <CopyPromptButton />
      </div>
    </div>
  </div>
</div>

## prod setup

Our [app platform](/apps/develop) is a serverless compute service for running agent loops triggered on demand or by scheduled events without having to provision or manage sandboxes. Your agent runs co-located with its browser to minimize network latency.

Scaffold a project from a template:

```bash theme={null}
kernel create --template computer-use
```

Deploy and invoke it on demand:

```bash theme={null}
kernel deploy agent.ts
kernel invoke my-agent my-task --payload '{"url": "https://example.com"}'
```

### scaling

once you're ready to scale, check out how to create a [pool of reserved browsers](/browsers/pools/overview).
