v0.2.1 · early access Apache 2.0 For Chromium OpenAI Codex · gpt-5.5 · gpt-realtime-2

A reading companion that points.

Onhand is a contextual AI for learning and research. Ask about the page you already have open — it highlights the line, leaves a note in the margin, and explains it where you are. No second window, no copy-paste.

$ git clone https://github.com/Phineas1500/Onhand && npm install && npm run build:extension
Onhand explaining scaled dot-product attention. The page on the left shows a highlighted line and a margin note; the sidebar on the right shows the question, the answer with inline citations, and the equation rendered.
Explaining scaled dot-product attention — highlight, margin note, sidebar answer.
The manicule — a small pointing hand in the margin — has meant "look here, this part matters" in books since the twelfth century. Onhand brings the gesture back, with the model holding the pen.
The pointing hand · a brief defense of marginalia
What it does

A small set of careful gestures.

Onhand stays out of the way until you ask. When you do, it does four things — the four a good study partner would.

Points to the answer

Highlights the exact phrase or paragraph that answers your question, in gold, and scrolls the page to bring it into view. Block-level highlights for whole paragraphs, inline highlights for phrases.

background.js · highlight_text · scroll_to_annotation

Leaves a note in the margin

Drops a margin note next to the highlight — a sentence or two, written in the article's own voice, so you can keep reading without losing context.

show_note · pine-barred editorial callout

Replay artifacts

Every session is saved with its highlights, notes, transcript, and a snapshot of the page. Come back tomorrow to the exact state you left.

chrome.storage.local · sessions + screenshots

Voice tutor

Press Voice in the side panel and talk through a paper. The realtime model can see your highlights and the visible text.

gpt-realtime-2 · WebRTC · experimental
How it works

Three steps. No second window.

01 · OPEN

The page you're already reading.

Wikipedia, an arXiv paper, a Google Doc, a Substack — anything Chromium can render. Onhand attaches to the active tab.

tab — active
arxiv.org/abs/1706.03762
Attention is all you need · pdf
02 · ASK

A question in the side panel.

Plain language. Onhand reads the page, the selection, the visible headings — whatever it needs to ground the answer.

side panel
Explain the scaled dot-product attention
and why we divide by √d_k.
03 · POINT

Onhand points at the answer.

Highlights the line, drops a margin note, answers in the side panel with citations back to the page. Then saves it all.

on the page
We call our particular attention "Scaled Dot-Product Attention"…
● ONHAND margin note added
Install

Until the store listing ships — load it unpacked.

The extension is a normal unpacked Chromium extension. Build it once and load it from packages/browser-extension.

terminal · build the extension
# Clone and build
$ git clone https://github.com/Phineas1500/Onhand
$ cd Onhand
$ npm install
$ npm run build:extension

# Verify the build
$ npm run smoke:browser-runtime
browser runtime ready · v0.2.1

# For a real provider call
$ OPENAI_API_KEY= npm run smoke:browser-runtime -- --real-openai
  1. Open your Chromium browser's Extensions page and turn on developer mode.
  2. Click Load unpacked and choose the packages/browser-extension/ folder from your clone.
  3. Open the Onhand options page. Either sign in with OpenAI Codex (recommended), or paste an OpenAI API key.
  4. Pin the extension, open any page, and click the icon to launch the side panel. Press Cmd/Ctrl+K in the panel to focus the composer.
  5. That's it . Highlight a passage, type a question, and let Onhand point.

Apache 2.0. Onhand is open source. Sessions stay on your machine in chrome.storage.local; provider keys never leave your device. Helium and other Chromium-based browsers that support chrome.debugger work too.

The runtime

Twenty-five small tools that act on the page.

Each tool is a single, auditable operation against the active tab. Onhand composes them; you read the script in the side panel after every turn.

☞ Read the page
  • browser_extract_content
  • browser_get_visible_text
  • browser_get_selection
  • browser_get_viewport_headings
  • browser_get_scroll_state
  • browser_get_dom
✎ Annotate & navigate
  • browser_highlight_text
  • browser_show_note
  • browser_scroll_to_annotation
  • browser_clear_annotations
  • browser_list_tabs
  • browser_activate_tab
  • browser_navigate
◔ Act & interact
  • browser_click
  • browser_type
  • browser_click_text
  • browser_type_by_label
  • browser_find_elements
  • browser_wait_for_selector
  • browser_pick_elements
⎘ Debug & capture
  • browser_capture_screenshot
  • browser_capture_state
  • browser_list_artifacts
  • browser_restore_state
  • browser_collect_console
  • browser_collect_network
  • browser_run_js
Read further

The thinking behind it.