🚀 Getting started

  1. Install EZGPT.APP from the Chrome Web Store. Pin the icon if your browser hides it behind the puzzle-piece menu.
  2. Start your model server. For LM Studio: Developer → Start server. For Ollama it is already running once installed.
  3. Click the EZGPT.APP icon. The side panel opens with the LM Studio preset at http://localhost:1234/v1 preselected. Change the preset in Settings if you use something else.
  4. When the browser asks to allow access to the server's address, allow it.
  5. Pick a model in the top bar and type your first message.

🧭 Side panel and full tab

The side panel is the main window. It stays open while you click around the page or switch tabs, and a streaming reply keeps going. Open it with the toolbar icon or Ctrl+Shift+E.

The top bar holds, left to right: the chat-list toggle (☰), the provider dropdown, the model dropdown, then New chat (+), Open in tab and Settings (gear).

When you want more room, click Open in tab in the top bar. The full tab shows the same chats with the chat list as a permanent left column. Both views share one set of settings and one chat history.

The popup and detached window from 3.x no longer exist. They were removed because clicking the page closed the popup and stopped streaming.

🤖 Providers and presets

A provider is a server endpoint. Add as many as you like in Settings → Providers with Add provider. The form has Preset, Name, Base URL, API key, System prompt, Context window and Default model, plus Discover models and Test connection buttons and Save provider. Choosing a preset fills in the base URL for you. Each provider card has Use, Edit and Delete.

On first run one provider is seeded for you, LM Studio (local) at http://localhost:1234/v1, so the panel opens straight into chat. If you ever delete every provider, the panel opens on Settings with "Add a model server to start."

Presets
  • LM Studio: http://localhost:1234/v1, no key. The default preset.
  • Ollama: http://localhost:11434/v1, no key. Setting OLLAMA_ORIGINS is not needed once you allow the origin.
  • OpenAI: https://api.openai.com/v1, needs your API key.
  • OpenRouter: needs your OpenRouter key. Discover models lists everything your key can reach.
  • Anthropic: Claude models through Anthropic's OpenAI-compatible endpoint, needs your Anthropic key.
  • Gemini: Google models through the OpenAI-compatible endpoint, needs a Google AI Studio key.
  • Custom: any server that speaks the OpenAI chat completions API. vLLM, llama.cpp, LocalAI, text-generation-webui and others. Enter the base URL, usually ending in /v1.

Servers on your LAN

Use the machine's IP or hostname in place of localhost, for example http://192.168.1.50:1234/v1. In LM Studio tick "Serve on local network". For Ollama set OLLAMA_HOST=0.0.0.0 on the server machine so it listens on the LAN.

Test connection and Discover models

Test connection sends one small request to confirm the URL and key work. Discover models asks the server for its model list and fills the model dropdown. Both call only the server you configured.

Adding Ollama, or any second provider

Settings → Providers → Add provider → choose the preset, for example Ollama, which fills in http://localhost:11434/v1 → optionally Discover modelsSave provider. The browser then asks to allow access to that address. Pick the new provider from the top-bar provider dropdown, or click Use on its card.

System prompt and context window

The system prompt is sent at the start of every chat with that provider. The context window tells EZGPT.APP how much history it can send. Older messages are trimmed when a chat grows past it. Set it to your model's real limit.

🔐 Site permissions

4.0 asks for nothing at install. Access to an address is requested the first time it is needed:

  • when you save a provider, for that server's address, for example localhost:1234;
  • When you attach a page or use the context menu, the extension first reads the page under the one-off access your own click grants, which needs no prompt. If it already has access to that site it asks about that one site. Only if neither applies does it explain why a panel cannot see which site you are on, and then ask for access to all sites.

The browser shows a prompt such as "Allow access to localhost:1234". Allow it and the request goes through. You can review or revoke these grants at any time from the extension's details page under Site access.

🔀 Choosing a model

The top bar has a provider dropdown and, to its right, a model dropdown listing the models discovered for that provider. Pick a model from the model dropdown. The choice is stored per chat, so different chats can use different models on the same provider without touching settings. Both dropdowns are locked while a reply is streaming.

If the list is empty, open Settings → Providers, Edit the provider and click Discover models, or check that the server has a model loaded. The provider's Default model is used for new chats.

Alt+1 through Alt+9 switch between your providers in the order they appear in Settings.

📄 Attach page and context menu

Two ways to give the model the page you are looking at:

  • Attach page in the panel, or Ctrl+Shift+P. If you have text selected on the page, the selection is attached. Otherwise the readable text of the page is attached, without navigation, ads and boilerplate.
  • Right-click a selection and choose Ask EZGPT.APP about…. The side panel opens with the selection attached.

Attached text appears as a chip on your message. It is sent with that message and stored in the chat like any other text. Nothing is read from a page until you do one of these things.

Usually no prompt appears, because your click grants the extension one-off access to that tab. When it does not, the extension shows a short explanation before the browser asks, and you can decline.

Browser pages such as chrome://extensions, the Web Store and PDF viewers cannot be read. You will see "This page can't be read" instead.

🧠 Reasoning models

Models such as DeepSeek-R1, Qwen3, QwQ and gpt-oss think before they answer. EZGPT.APP shows that thinking in a collapsible block above the reply, whether the server sends it as a reasoning_content or reasoning field or inline as <think> tags. The block is collapsed by default. The thinking is not sent back to the model on the next turn.

🖼️ Images

Paste an image from the clipboard, drop a file onto the panel, or use the attach button. The image is shown on your message and sent to the model. Use a vision model such as Qwen-VL, LLaVA, Pixtral or GPT-4o. A text-only model will ignore or reject the image.

Images are stored in your browser's IndexedDB and are included in full backups.

🎛️ Per-chat parameters

Click the sliders icon in the composer's tool row to open the Parameters dialog. These apply to this chat only:

  • Temperature: randomness. Lower is more deterministic.
  • Top-p: nucleus sampling cutoff.
  • Max tokens: the longest reply the model may produce.
  • Stop sequences: strings that end the reply when the model produces them.

Leave a field empty to use the server's default. Reset clears them, Apply saves them for this chat.

✂️ Prompt snippets

Click the snippet icon in the composer's tool row, next to the paperclip and page icons, to open the Snippets dialog. It has search, edit and delete per row, and Save current message to turn what you have typed into a snippet. Choosing a snippet inserts it into the message box. Snippets are included in backups and were migrated from 3.x if you had them.

🗂️ Chat history and export

  • Open the chat list with the button or Ctrl+K. In the side panel it is a drawer; in the full tab it is a permanent left column.
  • Search at the top of the list. Chats are grouped by day.
  • Rename or delete a chat from the buttons that appear when you hover its row.
  • Filter: current provider narrows the list to the provider selected in the top bar. Clear chats for {provider}… at the bottom removes them.
  • Export a chat as Markdown or JSON. Markdown is readable anywhere; JSON keeps roles, parameters and attachments.
  • Delete all chats from Settings → Data.

If you press Stop or close the panel mid-reply, the partial reply is kept.

💾 Backup and restore

Settings → Data → Export backup writes one file with your settings, providers, snippets, chats and images. API keys are left out unless you tick Include API keys. Import backup restores it on the same or another browser. The same section has Delete all chats and Reset everything.

The backup file is saved by your browser's download manager. EZGPT.APP does not send it anywhere.

🎨 Appearance

  • Theme: light, dark or system.
  • Accent: four colours.
  • Density: three spacings, from compact to roomy.

Appearance settings apply to both the side panel and the full tab. Settings has five sections: Providers, Appearance, Behaviour, Data and About. About lists the keyboard shortcuts.

⌨️ Keyboard shortcuts

Ctrl+Shift+EOpen the side panel
EnterSend
Shift+EnterNew line
EscStop
Ctrl+NNew chat
Ctrl+KSearch chats
Ctrl+Shift+PAttach page
Ctrl+,Settings
Alt+1…9Switch provider

The side panel shortcut can be changed at chrome://extensions/shortcuts.

⬆️ Upgrading from 3.x

Your providers, chats, images and snippets are migrated automatically the first time 4.0 starts. What changes:

  • The popup and detached window are replaced by the side panel and the full tab.
  • The model is now chosen per chat from the model dropdown in the top bar. The provider's Default model is only the starting point.
  • 3.x held permission for every website from the moment it was installed. 4.0 holds nothing at install: server addresses are asked for one at a time, and reading a page asks only when your click's own one-off access is not enough.
  • Sending is Enter, search is Ctrl+K.

🔒 Privacy

No account, no analytics, no telemetry. Settings, chats and images stay in your browser. The extension talks only to the servers you add, and only when you send a message, discover models or test a connection. Page text is read only when you click Attach page or use the context menu.

The full text is on the privacy policy page.