Skip to content

budezllc/side-eye-docs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 

Repository files navigation

Side Eye

Local-first AI chat in Chrome’s side panel. Read the current page, stream replies from LM Studio or Ollama on your machine, with optional on-device read-aloud.

Features

Chat

  • Side panel UI — click the extension icon to open; stays beside the page you’re browsing
  • Multiple chat tabs — separate conversations per topic; each tab can link to a browser tab (favicon + site label)
  • Browser-tab linking — new chat tabs attach to the active Chrome tab; click a chat tab to focus its linked page; linked tabs reorder with Chrome’s tab strip
  • Streaming responses — tokens appear in real time with smart auto-scroll
  • Markdown rendering — assistant replies render formatted text
  • Profile picker — switch between enabled local AI profiles (LM Studio, Ollama) from the footer; shows profile name and loaded model when set
  • Clear & refresh — reset the active chat and refresh page context

Page awareness

  • Page context — optional URL, title, text selection, and readable DOM excerpt from the chat tab’s linked browser tab
  • Context toggle — turn page reading on/off per chat from the context bar (eye icon)
  • Smart inclusion — context is attached when your message implies the page (e.g. “summarize”, “this page”, “current tab”), or when you use quick actions / suggestions that request it
  • Privacy ignore list — domains where page content is never read or sent (banking, etc.)
  • Context-aware suggestions — starter prompts on empty chat, tuned for social, articles, docs, commerce, video, and new-tab pages
  • Expandable context — view exactly what was sent to the model on user messages

Models

Side Eye is local-only — LM Studio and Ollama on your machine. Cloud profiles (Gemini, Claude) from earlier builds are migrated away automatically.

Profile Where it runs Vision (images) MCP tools Default
LM Studio Local (localhost) Yes (native API) Yes (native API) Enabled
Ollama Local (localhost) Yes (native API) No Off

Both profiles require CORS enabled on the local server so Chrome can reach it (LM Studio: CORS toggle in Server Settings; Ollama: OLLAMA_ORIGINS env var — see setup below).

  • LM Studio — OpenAI-compatible /v1/chat/completions for text; vision and MCP via native /api/v1/chat
  • Ollama — OpenAI-compatible /v1/chat/completions for text; vision via native /api/chat

Images

  • Attach up to 8 images per message (file picker or paste from clipboard)
  • Images are resized to max 1536px and encoded as JPEG for smaller payloads
  • Vision requires a capable local model (LM Studio or Ollama)

Voice (optional)

  • On-device TTS via Supertonic 3 — models run in the browser (WebGPU when available, WASM fallback)
  • Jarvis-style orb — animated speak button with audio-reactive glow while reading
  • Streams speech as the assistant reply streams in
  • Per-profile voice — each AI profile can use global Voice settings or its own preset, language, quality, and speed
  • Models download once (~400 MB from Hugging Face); not bundled in the extension

Appearance

  • Dark / light theme
  • Adjustable chat font size (12–22 px)
  • Custom composer placeholder text

Prerequisites

  • Google Chrome 114+ (Side Panel API)
  • LM Studio 0.4.0+ and/or Ollama
  • For TTS: Chrome 113+ recommended (WebGPU); network access for the one-time model download

Install

npm install
npm run build

Load the extension:

  1. Open chrome://extensions
  2. Enable Developer mode
  3. Click Load unpacked
  4. Select the dist folder

For development with hot reload:

npm run dev

Then load dist (CRXJS writes there during dev).

Icons

npm run build generates PNG icons at 16, 48, 128, 256, 512, and 1024 px in public/icons/.


Usage

  1. Click the Side Eye toolbar icon to open the side panel
  2. Pick an AI profile in the footer picker (configure profiles in Options first)
  3. Toggle page context (eye icon in the context bar) if you want the linked browser tab included
  4. Type a message and press Enter (Shift+Enter for a new line)
  5. Use + in the header to add another chat tab (links to the active browser tab)
  6. Click a chat tab to switch conversations and focus its linked browser tab
  7. Open Options (right-click the extension icon → Options) for profiles, privacy, voice, and appearance

Composer shortcuts

Action How
Send Enter
New line Shift+Enter
Attach images Image button, or paste from clipboard
Read aloud Speaker (orb) button — visible when TTS is enabled and models are cached
Quick prompts Buttons in the context bar (configurable in Options)

Page context behavior

When page context is on and the domain is not ignored, Side Eye can send:

  • Page URL and title
  • Your text selection (if any)
  • A readable excerpt from the page DOM (articles, main content, social posts, etc.)

Context tracks the linked browser tab for the active chat tab, not whichever Chrome tab happens to be focused.

Context is included when:

  • You toggle it on and your message matches page-related intent (e.g. “summarize this webpage”), or
  • A quick action / suggestion sends with context enabled

For local models (LM Studio, Ollama), page text is embedded in the user message so smaller models actually use it.


Options

Open Side Eye Settings from the extension options page. A side nav jumps between sections. Changes to appearance apply live; other sections use Save settings.

Appearance

Setting Default Description
Chat font size 14 px Range 12–22
Chat box placeholder What is thy bidding, my Master Max 120 characters
Theme Dark Dark or light

Voice

Setting Default Range Description
Speech Off On / Off Enable on-device read-aloud
Voice preset M1 M1–M5, F1–F5 Supertonic voice style
Language en 30+ codes TTS language (en, ja, ko, de, …)
Quality steps 4 4–16 Higher = smoother, slower synthesis
Speech speed 1.05 0.9–1.5 1.0 is neutral

Setup

  1. Options → Voice → set Speech to On
  2. Wait for the download progress bar to show Ready (~400 MB, one-time)
  3. Adjust voice, language, steps, and speed; use Preview to test
  4. In the side panel, click the orb/speaker button next to Send while a reply streams

Notes

  • WebGPU is used when available; WASM is slower
  • Stop streaming or switch chat tabs to cancel in-progress speech
  • Use Re-download models if the cache is corrupted

Privacy

Setting Description
Ignored domains One domain per line; subdomains match automatically

Pages on ignored domains show a lock state in the context bar — page content is never read or sent.

Example ignore list

chase.com
mint.com
paypal.com
mail.google.com
company-internal.example.com

Rules:

  • No https:// prefix needed
  • Lines starting with # are ignored
  • chase.com also blocks www.chase.com, secure.chase.com, etc.

AI profiles

Enable profiles to show them in the side panel picker. Each profile has its own connection settings and optional voice override.

LM Studio (local, default on)

Field Default Example
Server URL http://localhost:1234/v1 http://localhost:1234/v1
Model (auto) qwen2.5-7b-instruct or leave empty
API key (empty) Required if LM Studio uses API tokens
Temperature 0.7 0.3 (focused) – 1.0 (creative)
Context length 8192 8192, 16384, …
MCP servers (none) Toggle on in Options (e.g. Brave)

LM Studio setup

  1. Open LM Studio and load a model
  2. Local ServerStart Server (default port 1234)
  3. In Local ServerServer Settings, turn on CORS (required — Chrome extensions use a chrome-extension:// origin that local servers block by default)
  4. In Side Eye Options → LM Studio → set Server URL to http://localhost:1234/v1
  5. Click Load models or Test connection

LM Studio chat uses native /api/v1/chat so MCP tools can run through the same local endpoint. In Options → LM Studio → Tools, click Load from mcp.json to import server keys from LM Studio's config file (usually %USERPROFILE%\.lmstudio\mcp.json on Windows or ~/.lmstudio/mcp.json on macOS and Linux), then toggle the ones you want. Click Refresh to probe which tools are active via the API. Requires LM Studio 0.4.0+ and MCP servers configured in LM Studio.

Per-profile voice (LM Studio & Ollama)

Each profile panel includes a Voice subsection. By default it mirrors global Voice settings. Uncheck Use global voice settings to set a dedicated preset, language, quality steps, and speed for that profile.

Ollama (local)

Field Default Example
Server URL http://localhost:11434/v1 http://localhost:11434/v1
Model (select after load) llama3.2, gemma3:12b
API key (empty) Optional
Temperature 0.7 0.7
Context length 8192 8192

Ollama setup

ollama pull gemma3:12b
ollama serve

CORS (required) — Like LM Studio, Ollama must allow browser-extension origins. Set OLLAMA_ORIGINS before starting Ollama.

Quick test from a terminal (does not persist after you stop the server):

OLLAMA_ORIGINS="*" ollama serve

Windows — set OLLAMA_ORIGINS permanently

  1. Open Start → search environment variablesEdit environment variables for your account (or System PropertiesAdvancedEnvironment Variables).
  2. Under User variables, click New (or edit an existing OLLAMA_ORIGINS).
  3. Variable name: OLLAMA_ORIGINS
    Variable value: *
  4. Click OK, then fully quit Ollama (system tray → Quit) and start it again.

Or in PowerShell (current user):

[Environment]::SetEnvironmentVariable("OLLAMA_ORIGINS", "*", "User")

Restart Ollama after setting the variable.

macOS — set OLLAMA_ORIGINS permanently

  1. In Terminal:

    launchctl setenv OLLAMA_ORIGINS "*"
  2. Quit Ollama from the menu bar and reopen it.

If you run ollama serve from Terminal instead of the Ollama app:

OLLAMA_ORIGINS="*" ollama serve

The launchctl setenv value applies to GUI apps started after that command; for persistence across reboots, see the Ollama server configuration FAQ.

Vision uses Ollama’s native /api/chat. Reliable vision models include gemma3, llava, and moondream. Some gemma4 vision builds are currently broken in Ollama (issue #16597).

Quick actions

Configurable prompts sent immediately when clicked.

Speak button (composer orb) — default:

Label Prompt
Speak tell me something random about the content of this website

Toolbar shortcuts — defaults:

Label Prompt
Summarize summarize this webpage
Related list the top related websites to current tab
Reviews find reviews about this webpage, service, or product

Up to 6 toolbar quick actions. Edit labels and prompts in Options → Quick actions.


Page suggestions

On an empty chat, Side Eye shows contextual starter chips based on the page type:

Page type Examples
New tab Who is Kei?, What can you do?, Inspire me
Social Summarize, Explain the discussion, What’s debated?
Article TL;DR, Key takeaways, Explain simply
Docs What does this cover?, How do I start?
Commerce Product summary, Compare alternatives, Reviews
Video Summarize video, Key points, Transcript-style summary

Clicking a suggestion sends its prompt (with page context when appropriate).


Data & privacy

Data Stays local?
Chat history Yes — chrome.storage.local per browser window
Profile settings & ignore list Synced via chrome.storage.sync
Optional server API keys Yes — chrome.storage.local only (not synced)
Page excerpts Read in-browser; sent only to your local model
LM Studio / Ollama Traffic stays on your machine (localhost or LAN URL you configure)
TTS models Downloaded once; synthesis runs on-device
Supertonic download Fetched from Hugging Face when you enable Voice

Development

Project structure

src/
├── background/service-worker.ts   # LLM proxy, streaming, page context relay
├── content/page-context.ts      # Content script bridge
├── sidepanel/                   # Chat UI, tabs, composer, TTS orb
├── options/                     # Settings page (profiles, MCP UI, voice)
└── lib/
    ├── agents/                  # LM Studio, Ollama, OpenAI-compat clients
    ├── tts/                     # Supertonic engine & orb visualizer
    ├── page-context-*.ts        # Extraction, prompts, suggestions
    └── storage.ts               # Settings & chat persistence
public/
└── icons/                       # Generated PNG icons (16–1024)

Repository

Credits

Created by Kei Sakai@KeiSakaiX

Chrome Web Store

Public policy and support pages are hosted at getsideeye.com (privacy policy, terms, support).

About

Public Documentation: Side Eye provides a side panel chat interface for AI models the user runs locally (LM Studio, Ollama), with optional reading of the active browser tab's content when the user enables page context.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors