GameCopilot — User Guide

GameCopilot is a game assistant overlay for Windows. A compact panel with a chat floats above your game window: you ask a question (optionally with a game screenshot), and a multimodal model via OpenRouter searches current sources (wikis, guides, patch notes) and answers in your language. The app keeps per-game chat history with full-text and semantic search, stores your notes, periodically scans the screen to maintain a progress journal, and feeds the accumulated knowledge back into answers via RAG.

Main window


Table of contents

1. Installation and launch

Requirements:

Running the .exe: the build folder dist\GameCopilot\ is fully portable — copy it anywhere and run GameCopilot.exe. No installation needed.

Running from sources (alternative):

C:/GameCopilot/.venv/Scripts/python.exe -m gamecopilot.app

All data is stored in %APPDATA%\GameCopilot (see section 13), so the .exe and a from-source run share the same settings, chats, and notes.

Single instance. Launching GameCopilot again does not start a second process — it simply shows and raises the already-running window. If the overlay "disappeared" (hidden by a hotkey), the easiest way to get it back is to run the exe again or click the tray icon (section 10).

Limitation: the overlay works on top of games in windowed and borderless mode. Exclusive fullscreen is not supported — switch the game to "borderless windowed".

2. The OpenRouter key and choosing a model

GameCopilot works through OpenRouter — a single API gateway to hundreds of models (Google, OpenAI, Anthropic, and others). It is the only provider the app needs.

Getting a key:

  1. Sign up at openrouter.ai.
  2. Top up your balance at openrouter.ai/credits — a few dollars go a long way; a typical question with an answer costs a fraction of a cent.
  3. Create a key at openrouter.ai/keys (it starts with sk-or-v1-…) and paste it into the first-run wizard or Settings.

The key is stored only in the Windows Credential Manager (service GameCopilot) — it is never written to config files.

Choosing the chat model (Model ID)

The model identifier is entered manually — exactly as it appears in the openrouter.ai/models catalog (e.g. google/gemini-2.5-flash). What to look for:

Proven options:

Model Notes
google/gemini-2.5-flash A sensible default: fast, cheap, good vision — the app was developed against it
google/gemini-2.5-pro Smarter and noticeably pricier/slower — for heavy theorycrafting questions
openai/gpt-5-mini OpenAI's fast multimodal, comparable to flash
anthropic/claude-sonnet-5 Strong reasoning and careful answers, mid-range price

The embedding model (for RAG and search)

A separate, "invisible" model turns text into vectors for RAG (section 7) and semantic search (section 6). Default is google/gemini-embedding-2; alternatives: openai/text-embedding-3-small, openai/text-embedding-3-large, qwen/qwen3-embedding-8b, baai/bge-m3. Embeddings cost pennies even with heavy use. Don't change the model without a reason: switching drops the vector index, which then rebuilds in the background from scratch.

3. First run — setup wizard

On first launch a three-step wizard opens:

First-run wizard

  1. OpenRouter API key — paste your key (section 2).
  2. Model ID — a multimodal model identifier (section 2).
  3. Style and appearance — communication style (see section 11), theme (light/dark; light by default), font and size.

After the wizard (and on every subsequent launch) the app validates the model and asks you to pick the game window:

Window picker

Open the game beforehand, click Refresh, select the window, and click Pick. The window is remembered by its handle; if the game closes, the overlay says "Target window closed — pick it again" — you can re-pick from Settings (Target window → Pick window).

Linking to a game

After picking a window, GameCopilot asks what to do:

When creating a game you are offered to build the game meta right away ("Build game meta now?") — the model researches the game online and produces a short brief (genre, current patch, notable changes). Meta improves the scanner and RAG; you can build/rebuild it later from the games library.

4. Overlay: the control bar

The window's top bar (left to right):

Button Action
Drag the window (hold and move). The window snaps to screen edges and center
Current game name
gray text Hint with the current show/hide hotkey (Ctrl+- Show or hide widget); disappears when the hotkey is disabled
📚 Sidebar with chat history and search
👁 Opacity: toggles between normal (85 %) and "ghost" (35 %); both values are configurable
📝 Game notes
🧭 Progress journal (scanner)
📖 / 📘 Collapse/expand the chat into a compact pill: open book — chat expanded, closed book — collapsed
Settings
Quit

Collapsed view — just the button bar:

Collapsed overlay

Resize the window by the grip in the bottom-right corner; position and size are remembered. Esc removes focus from the input field (handy for returning control to the game).

5. Chat

The bottom row is the composer: the "Message…" field, 🖼, 🧠, Send, 🔄.

Overlay with notes and a screenshot chip

Built-in browser

So you don't have to alt-tab out of the game, links open in GameCopilot's own mini-browser: a window above the overlay with back/forward/reload buttons and a read-only URL bar; closes with Esc.

Chat sidebar 📚

The list of the current game's chats: + New — new chat, 🔍 — chat search (section 6), — rename, 🗑 — delete. Your first question automatically becomes the chat title.

The games dropdown at the top lets you browse other games' chats read-only: while a non-active game is selected, the composer and action buttons are disabled (a "View only — read-only" badge shows). To write again, return to the active game or re-pick the window.

6. Chat search (🔍)

The 🔍 button in the sidebar opens a search window over the entire chat history of the game currently selected in the sidebar:

Chat search

Two modes:

Clicking a result opens that chat, scrolls to the matched message, and flashes it. Search also works while browsing another game — it searches whichever game is selected in the sidebar dropdown.

7. RAG — per-game memory (🧠 in the composer)

RAG mixes relevant fragments of your game history into the question: past chats, notes, the progress journal, and the meta. All of it is indexed with vector embeddings (section 2).

8. Notes 📝 and the progress journal 🧭

Notes — one markdown document per game, shown under the composer. Click the text (or ✏️) to switch view ↔ edit — the ✏️ button stays highlighted while editing; saving is automatic (debounced, and on quit). Dragging the separator above the panel sets its height directly (remembered; at most a third of the window's height, recomputed as you resize it); double-click the separator to return to the automatic mode — the panel hugs the note, capped at the same third of the window. Long notes scroll inside; links in notes are clickable (they open in the built-in browser), while a click outside a link opens the editor. Notes are indexed for RAG by headings and paragraphs — structure them with markdown headings for more precise retrieval.

Progress journal — the 🧭 window:

Progress journal

If the scanner is enabled for the game (the scan flag in the library; off by default), GameCopilot captures a game frame every N minutes (the Scan interval setting); the model describes what's happening and updates the progress summary (the line under the title, grounded in the game meta). Each journal entry is a frame thumbnail + description + timestamp.

The progress summary is rendered as markdown — links in it open in the built-in browser. Journal entries (with the progress flag on) also feed RAG — the assistant remembers where you've been and what you did.

9. Games library (Settings → Library)

Games library

For each game:

10. Hotkeys, tray, and running in the background

Global hotkeys (work even while the game has focus; configurable in Settings, an empty field = disabled):

Hotkey (default) Action
Ctrl+- Show/hide the widget together with all its windows — Settings, library, journal, search, and built-in browsers hide and come back exactly as they were
Ctrl+= Toggle opacity (same as the 👁 button)
Ctrl+0 Collapse/expand the chat (same as the 📖 button)

The current show/hide hotkey is always visible as the gray hint in the top bar. When shown via hotkey, the overlay appears on the monitor of the currently focused window — handy on multi-monitor setups. If the system refuses to register a hotkey (another app grabbed it), a chat banner suggests rebinding it in Settings.

System tray. GameCopilot has a tray icon: left-click shows/hides the overlay; right-click opens a three-item menu: Show / Hide, the Detailed index status checkbox (verbose or short index banner in a new chat, section 7), and Quit. An overlay hidden by hotkey is always reachable through the tray.

Important — about "closing": Ctrl+- and the tray only hide the windows; the process keeps running (the scanner too). A full exit is the button on the bar or Quit in the tray menu. Launching the exe again while the process is running doesn't spawn a duplicate — it shows the existing window. After updating the build, quit the old process via Quit first — otherwise you'll get the old exe's window, not the new one.

11. Prompts: the prompts folder

Every prompt the app uses to talk to the model is a plain text file under %APPDATA%\GameCopilot\prompts\. No code involved — open them in Notepad and make them yours.

%APPDATA%\GameCopilot\prompts\
├── styles\          ← communication styles (the Style dropdown items)
│   ├── minimal.txt      ← essential facts only, minimal words
│   ├── beginner.txt     ← newcomer-friendly, avoids extra spoilers
│   ├── pro.txt          ← dense and technical: builds, routes, optima
│   └── narrative.txt    ← answers in the game's own tone and lore
└── system\          ← system prompts
    ├── chat_base.txt    ← the chat system-prompt scaffold
    ├── scan.txt         ← the frame-scanner prompt
    ├── meta.txt         ← the game-research (meta) prompt
    ├── reassess.txt     ← progress-summary rewrite after a new meta
    └── rag_header.txt   ← the instruction header above RAG context

Your own communication style in a minute

A style is a short "how to answer" instruction injected into every chat's system prompt. To add your own:

  1. Create styles\<name>.txt — e.g. styles\coach.txt with: "Answer like a strict esports coach: dissect mistakes, prescribe concrete drills, no consolations."
  2. Restart GameCopilot.
  3. Pick coach in the Style dropdown (Settings or the wizard).

The file name becomes the style's name and is also passed to the model along with the text (as "coach — Answer like…"), so name the file meaningfully — even an empty style file still tells the model its name. Built-in styles can be freely edited or deleted — deleted ones do not "resurrect" on the next launch.

System prompts: what does what

Rules and substitutions

File Placeholders
styles\*.txt none (plain instruction text)
chat_base.txt {game_name} — game name, {style} — style ("name — text"), {language} — answer language, {sources_line} — trusted-sources line
scan.txt {meta} — game meta, {progress} — current summary
reassess.txt {meta}, {progress}, {observations} — recent scanner observations
meta.txt, rag_header.txt none

Warning: in scan.txt the JSON example's curly braces are doubled ({{ }}) — that's escaping. Don't remove the second braces, or the template stops formatting (the app falls back to the built-in).

12. Settings ()

Settings

Field Meaning
OpenRouter API key The API key (stored in Credential Manager)
Model ID The chat model (must be multimodal, section 2)
Embedding model The embedding model for RAG and search. Changing it drops the index — it rebuilds in the background
Style Communication style (from prompts\styles\)
Answer language The model's answer language
Theme / Accent color / Accent text color Light/dark theme and accent color (#RRGGBB)
Font / Font size UI font and size
Web search Allow the model to search the web (the :online suffix)
Open links in built-in browser Open links in the built-in browser (off — system browser)
Detailed index status New-chat index banner format: checked — per-kind breakdown, unchecked — one-line summary. Mirrored in the tray menu
Target window → Pick window Re-pick the game window
Library → Games The games library (section 9)
Scan interval (min) Scanner period, minutes
Embedding dimensions Vector dimensionality (512 by default); changing it triggers a background reindex
Semantic match floor (%) Relevance cutoff for semantic search and RAG (29 % by default): lower — more results, higher — stricter filtering
Progress entries per game Journal record limit per game
Opacity (%) / Opacity faded (%) The two opacity levels for the 👁 button
Hotkey: toggle widget / opacity / chat Global hotkeys (section 10); an empty field = disabled

Save validates the model and persists everything at once. Clicking again closes the window without saving.

13. Where your data lives

%APPDATA%\GameCopilot\:

Path What it is
config.json Settings (without the API key)
gamecopilot.db Database: games, chats, notes, journal, full-text and vector indexes (SQLite + FTS5 + sqlite-vec)
history\media\<game>\*.png Chat and scanner screenshots
prompts\ Editable prompts (section 11)
gamecopilot.log Application log

The API key is in the Windows Credential Manager (Control Panel → Credential Manager → service GameCopilot).

Full reset: close the app and delete the %APPDATA%\GameCopilot folder (and, optionally, the GameCopilot entry in Credential Manager). The next launch starts with the wizard.

14. Troubleshooting

Symptom Cause / action
A "No internet connection…" banner after startup No network — the app starts and runs, but answers will fail until the connection is back (model validation happens in the background)
"Model unavailable: …" / "does not accept images" Wrong Model ID, a model without image support (section 2), or an OpenRouter key/balance problem
"Target window closed — pick it again" The game closed or the window was recreated — Settings → Pick window
The overlay disappeared It's hidden by the Ctrl+- hotkey — press the hotkey again, click the tray icon, or relaunch the exe (the existing window will simply reappear)
Hotkeys don't work Check the Hotkey fields in Settings (empty = disabled); if another program grabbed the combination, the app now says so with a chat banner — assign a different one
Updated the exe but see no new features The old process is still running: relaunching only surfaced its window. Quit it via the tray Quit and start the exe again
The 🧠 button is disabled Hover for the tooltip: "Building index…" — indexing in progress; "No indexed data yet" — no data for this game yet; RAG is also unavailable while browsing and in sessionless mode
Semantic search is disabled / finds little The index is still building (after an upgrade, older history finishes indexing in the background); you can lower the "Semantic match floor"
The scanner is "silent" Check the game's scan flag in Library and the status line in the 🧭 window — it shows the last error
A style/prompt didn't apply Prompts are read at startup — restart the app; check gamecopilot.log for a broken-template warning
The overlay isn't visible in game The game is in exclusive fullscreen — switch to borderless/windowed

Screenshots in docs/img/ are rendered by scripts/render_docs_shots.py (demo data). Document version: 0.4 (July 2026), matches GameCopilot 0.5.6.