Quickstart
By the end of this guide you will have relay running, the controller paired to the extension node, and your first command returning results.
Before you start
- Otto CLI installed globally:
npm install -g @telepat/otto - Extension loaded in Chrome (run
otto setupif you haven't yet — see Installation) - Chrome with the Otto extension running and visible in the toolbar
Steps
1. Start the relay
otto start
This starts the relay as a background daemon. Verify it is running:
otto status
Expected output: relay running with a process ID and log path.
2. Register a controller identity
If this is your first run, create a controller client and log in:
otto client register --name "my-laptop"
otto client login
This stores your controller credentials in ~/.otto/config.json. If you already have a registered client, run otto client login to refresh your tokens.
3. Pair the extension node
If the extension has not been paired to this relay yet:
# Show pending auth codes from the extension
otto authcode
# Approve the code shown (format: 123-456)
otto pair <code>
The pairing code appears in the Otto extension popup after you configure the relay URL in extension options. Open the extension and follow the on-screen prompt.
4. Validate connectivity
Confirm the node is connected and commands are available:
otto commands list
Expected output: a JSON array of available commands from the connected node.
5. Run a command
otto test reddit.com getFeed
This opens a managed tab, runs the getFeed command on reddit.com, streams results, and closes the tab on completion.
You can also run LinkedIn feed extraction:
otto test linkedin.com getFeed --payload '{"minReturnedPosts":15}'
LinkedIn getFeed supports timeout scaling metadata tied to minReturnedPosts, so default timeout behavior can adapt to larger feed targets.
Verify success
A successful run prints command output JSON and exits with code 0. If you see manual_login_required, the command needs you to log into the site first:
- The tab stays open.
- Complete login manually in the browser.
- Rerun:
otto test reddit.com getFeed
For LinkedIn-specific clipboard URL extraction prompts, if you see a clipboard permission error rerun with:
otto test linkedin.com getFeed --payload '{"getClipboardPermission":true}'
Next steps
- CLI Reference — full command list with options, examples, and exit codes.
- Pairing and Auth — deeper look at the pairing flow and controller client model.
- Use Cases — practical command workflows and scenario matrix.
- Troubleshooting — error-to-action guide for common failures.