Quick start
Install ego lite in five minutes and run your first browser task from your Agent CLI.
Install ego lite in five minutes and run your first browser task from your Agent CLI.
System requirements
- macOS 12.0 or later
- One of: Claude Code, OpenAI Codex, Cursor, Continue, Gemini CLI, Hermes Agent, OpenClaw, Opencode
Install
Pick whichever option suits you.
Download the macOS installer
Double-click to install. On first launch, ego lite scans your machine for installed Agent CLIs and writes the ego-browser skill into each of their skill directories.
Install from the command line
Run this in any Agent CLI terminal:
curl -fsSL https://lite.ego.app/install.sh | sh
The script installs the ego lite browser and the ego-browser helper, and registers the skill in every Agent CLI on your machine.
The first time ego lite launches, it asks one question: import your browser data? Then select the corresponding browser to confirm, and your logins, cookies, extensions, and Profile come along so your agents can reuse them.
Your first task
In your Agent CLI, type / to open the skill picker, choose /ego-browser, and describe the task in natural language:
/ego-browser follow @ego_agent on x.com for me
After loading the skill context, the agent emits and runs the following:
ego-browser nodejs <<'EOF'
await useOrCreateTaskSpace('follow-ego-agent')
await openOrReuseTab('https://x.com/ego_agent', { wait: true })
await snapshotText()
// The snapshot returns @ego_agent's profile page — a SPA with hundreds of refs.
// The Follow button has accessible name "Follow @ego_agent". This run, its ref is @92.
await click('@92')
await wait(3) // Give X three seconds to commit the follow and re-render
await snapshotText()
// After click, the same button's label goes from "Follow @ego_agent" to "Following @ego_agent". The ref doesn't change.
cliLog('Done. @ego_agent followed.')
EOF
Two things in this code are worth noting:
- The agent acts on the ref returned by
snapshotText()(@92), not on a CSS selector. The ref maps to how a person perceives the element (the button's accessible name really is"Follow @ego_agent"), so it survives whatever class names X rotates. Refs are assigned per snapshot, so the number you see in practice won't match the example. - The agent uses the X login imported from your Chrome. No re-login, no pasted cookies, no OAuth flow. On the first snapshot, the Follow button is already in a clickable state because you were already signed in.
Watch the agent work
Once the task starts, open ego lite and click the Space panel in the sidebar. The running Space is highlighted; click into it to watch the agent in real time: navigation, scrolling, snapshots, data extraction.
Two buttons sit at the bottom of the Space view:
- Take over. Take the current tab back from the agent and drive it yourself.
- Stop. End the task immediately.
Operate a page
click is one of many ref-based operations. fill, type, pressKey, hover, and select all work the same way: snapshot once, pick the target ref, then act on it. Here's a login flow:
ego-browser nodejs <<'EOF'
await useOrCreateTaskSpace('example-login')
await openOrReuseTab('https://example.com/login', { wait: true })
await snapshotText()
// The snapshot looks roughly like:
// @3 [input type="email"] placeholder="Email"
// @4 [input type="password"] placeholder="Password"
// @5 [button type="submit"] "Continue"
await fill('@3', 'user@example.com')
await fill('@4', 'your-password')
await click('@5')
await waitForLoad()
const tab = await currentTab()
cliLog('Logged in:', tab.url)
EOF
If you imported your Chrome data during onboarding and Chrome was already signed into this site, openOrReuseTab takes the agent straight to the logged-in page. The snapshot comes back with the dashboard instead of the login form, and the agent can skip the form altogether.
Run multiple tasks in parallel
Every Space is named by what you pass to useOrCreateTaskSpace. Different names don't conflict, so you can run them at the same time:
# Claude Code in one terminal
ego-browser nodejs <<'EOF'
await useOrCreateTaskSpace('leads-enrichment')
await openOrReuseTab('https://www.linkedin.com', { wait: true })
EOF
# Meanwhile, Codex in another terminal
ego-browser nodejs <<'EOF'
await useOrCreateTaskSpace('qa-regression')
await openOrReuseTab('https://staging.example.com', { wait: true })
EOF
Next steps
- ego-browser — full helper list, the in-page
js()context, raw CDP access - Space — Space lifecycle and naming
- Snapshot — refs and
loc=selectors - Browser tasks in practice — an end-to-end walkthrough