Pythia
A quiet, free AI assistant for VS Code. Ask a coding question, get an answer, close the panel. No account, no API key, no clutter.
Pythia lives in the bottom panel and stays out of your way until you call it with one shortcut.
Contents
Features
- Hidden until you want it. No icon in the activity bar. Pythia opens in the bottom panel with
Ctrl+Alt+P and disappears with the same key.
- Free, no sign-up. There is nothing to install besides the extension and no key to paste.
- Compact interface. One input line, small text, colours that follow your VS Code theme.
- Pick the model by name. Eight models, from a small fast one to a 120B reasoning model, chosen from a dropdown. See Choosing a model.
- It sees your open file. Ask "add error handling to this function" and Pythia knows which file and function you mean. See Privacy for exactly what is sent.
- Knows your project. Pythia sees the open file and the list of files in your folder. Type
@filename to let it read another file. Ask "move the CSS into style.css" and it can create and change several files in one answer.
- Build from a screenshot. Paste (
Ctrl+V) or drag a screenshot into the chat and say "make this page". Pythia recreates the layout, colors and text as an HTML file. It gets close but is not pixel-perfect; follow up with "make the header shorter" to refine.
- You press the button. Nothing is written until you click apply (open file), save (one file) or save all (several files) under the code. Overwriting existing files asks you to confirm, and changes to existing files can be undone with
Ctrl+Z. If you prefer, tick auto-apply to write into the open file automatically.
- Ask about your code. Select code, right-click, and choose Pythia: Ask About Selection.
- Readable answers. Code appears in its own block with a copy button on hover.
- Conversation memory. Pythia remembers the last 20 messages so follow-up questions make sense.
- Automatic fallback. If the model you chose is busy or out of quota, Pythia answers with the fast model instead of failing.
- No telemetry. The extension does not track you.
Quick start
- Install Pythia.
- Press
Ctrl+Alt+P (Cmd+Alt+P on macOS). The chat opens in the bottom panel.
- Type a question and press
Enter.
You can also click Pythia in the status bar, or run Pythia: Show/Hide Chat from the Command Palette.
Using Pythia
| You want to... |
Do this |
| Open or close the chat |
Ctrl+Alt+P, or click Pythia in the status bar |
| Send a message |
Enter |
| Add a new line |
Shift+Enter |
| Clear what you typed |
Esc |
| Clear the conversation |
Click clear chat under the input box, run Pythia: Clear Chat, or press Esc again when the input is empty |
| Close the panel |
Esc once more when the chat is empty |
| Copy a code block |
Hover over it and click copy |
| Put code into your file |
Hover over a code block, click insert (at the cursor), replace (over your selection) or file (whole file), review the diff, click Apply |
| Build a page from a screenshot |
Paste (Ctrl+V) or drag an image into the chat (up to 2), then say "make this page". Images are shrunk before sending |
| Change the open file |
Ask "add error handling" or "make this page". Click apply under the code (selection is replaced if you have one, otherwise the whole file), or diff to review first |
| Work across several files |
Ask "move the CSS into style.css". Click save on a file or save all; you confirm the list first. Use @filename to include another file |
| Write answers automatically |
Tick auto-apply under the input box (off by default). It writes into the open file only; files for other paths always need a button |
| See or change what is sent |
The file: ... label under the input box shows the open file; click it to turn sending on or off |
| Explain some code |
Select it, right-click, Pythia: Ask About Selection |
| Change the AI model |
Use the Model dropdown under the input box, or run Pythia: Choose Model |
Tips for better answers:
- Include the language and the error message in your question.
- Ask one thing at a time; follow up in the same conversation.
- If an answer looks too simple, switch to a larger model in settings.
- Do not paste secrets such as API keys, passwords or private tokens.
Choosing a model
Pick a model from the model dropdown under the input box, run Pythia: Choose Model, or set pythia.model in settings. Under each answer a small label shows which model wrote it.
| Model |
Good for |
Reads screenshots |
| Auto (default) |
Picks for you: the strongest model for creating or changing code, one that reads images for screenshots, a general one for questions |
yes, when needed |
| GPT-OSS 120B |
Strongest reasoning; creating and changing code, multi-file work, hard problems |
no |
| Gemma 4 26B |
General questions and explanations |
yes |
| Llama 3.3 70B |
Large, fast general model |
no |
| Qwen2.5 Coder 32B |
Programming questions and code review |
no |
| Mistral Small 3.1 24B |
General questions |
yes |
| Llama 4 Scout 17B |
Quick answers, can read images |
yes |
| Llama 3.1 8B |
Smallest and fastest, simplest answers |
no |
If you attach a screenshot and the model you picked cannot read images, a model that can is used for that request. If the model you picked is busy or out of quota, Pythia falls back to Llama 3.1 8B instead of failing. Larger models use more of the shared free quota.
Commands and shortcuts
| Command |
Shortcut |
What it does |
Pythia: Show/Hide Chat |
Ctrl+Alt+P / Cmd+Alt+P |
Opens or closes the chat panel |
Pythia: Ask About Selection |
right-click menu |
Sends the selected code to Pythia and asks for an explanation |
Pythia: Choose Model |
- |
Pick a model by name from a list |
Pythia: Clear Chat |
- |
Starts a new conversation and forgets the previous messages |
If Ctrl+Alt+P conflicts with another extension, rebind Pythia: Show/Hide Chat in Keyboard Shortcuts.
Settings
| Setting |
Default |
Description |
pythia.model |
auto |
Which model answers: auto, gpt-oss-120b, gemma-4-26b, llama-3.3-70b, qwen-coder-32b, mistral-small-24b, llama-4-scout or llama-3.1-8b. |
pythia.applyMode |
confirm |
confirm: nothing is written until you click a button. auto: code for the open file is written automatically (other files still need a button). Never writes into secret-like files. |
pythia.includeProjectFiles |
true |
Send the list of file paths in your folder (not their contents) so Pythia knows your project. Files you mention with @name are sent too. |
pythia.includeActiveFile |
true |
Send the open file and your selection with each question. Secret-like files are never sent. |
pythia.showStatusBarItem |
false |
Show a small Pythia item in the status bar. Off by default so nothing extra appears on screen; the shortcut always works. |
pythia.endpoint |
built-in |
URL of the Pythia chat service. Leave as default unless you host your own. |
How it works
VS Code (this extension) --> Pythia chat service (Cloudflare Workers) --> open-source model (Cloudflare Workers AI)
The extension sends your conversation to the Pythia chat service. The service applies a short system prompt and a per-IP rate limit, asks the selected open-source model for an answer, and returns the text. No API key is stored in the extension.
Privacy
- When you send a message, the conversation (up to the last 20 messages) and any code you choose to ask about are sent over HTTPS to the Pythia chat service, then to an open-source model running on Cloudflare Workers AI.
- Your open file is sent with each question so Pythia can see your code: the contents of the file that is open in the editor (an excerpt of about 12,000 characters around the cursor if the file is large) and your selection, if any.
- Your project's file names are sent too (up to 300 paths, for example
src/app.js), never the contents. Only files you mention with @name (up to 3, about 8,000 characters each) have their contents sent. Set pythia.includeProjectFiles to false to stop sending file names. Folders such as node_modules, .git, dist and build, and secret-like files, are skipped.
- Screenshots are sent only when you paste or drop them into the chat. They are shrunk and compressed on your machine, sent with your question to the Pythia service and an open-source vision model, and are not stored by the extension. Do not paste images containing passwords, personal data or anything confidential.
- The chat always shows which file will be sent (the label under the input box, for example
file: src/app.py). Click the label to turn this off, or set pythia.includeActiveFile to false.
- Files that usually hold secrets are never sent, even when open:
.env files, private keys and certificates (.pem, .key, .p12, ...), id_rsa-style SSH keys, credentials and secrets files, .npmrc, .netrc, .pypirc.
- The file name and contents are used only to answer your question and are not stored by the extension.
- The extension collects no telemetry and sets no tracking identifiers.
- The service is run on Cloudflare, which may process request metadata such as IP addresses to operate the network and enforce rate limits.
- Do not send secrets or code you are not allowed to share.
Limits and fair use
- The service is free and shared. Messages are limited to 20 per conversation, 4,000 characters each, and roughly 16,000 characters in total.
- Pythia reads only file names plus the open file and
@mentioned files, not your whole codebase. It can create and overwrite files in your open folder only when you click a button and confirm. It never writes outside the folder, and never into .env, key files, .git, node_modules or .vscode.
- When applying to the open file, if the answer looks like only a short fragment of a long file, Pythia shows a diff instead of overwriting. Very large files are only partly sent, so changes to them are inserted at the cursor instead.
- There is a per-IP rate limit. If you send messages too fast you will see a "too many requests" message; wait a minute and try again.
- Larger models can run out of the shared daily quota at busy times. Pythia then falls back to the fast model, or shows a "busy" message if nothing is available.
- Answers come from AI models and can be wrong. Review code before using it, especially for security-sensitive work.
Troubleshooting
An answer fails with a "length" or "invalid" error, or replies stop making sense.
Click clear chat under the input box to start a new conversation. Long conversations are the usual cause.
Nothing happens when I press Ctrl+Alt+P.
Another extension or your OS may use that shortcut. Open Keyboard Shortcuts, search for "Pythia", and set a different key. You can also click Pythia in the status bar.
"Could not reach the Pythia service."
Check your internet connection, VPN or proxy. The extension needs to reach workers.dev.
"Too many requests. Please wait a minute."
You hit the rate limit. Wait a minute and try again.
"The free AI quota is busy right now."
The shared daily quota is used up. Try again later, or pick a smaller model such as Llama 3.1 8B in the dropdown.
The answer is too shallow.
Pick a larger model in the dropdown, for example GPT-OSS 120B.
I do not see the panel.
Run View: Toggle Panel Visibility once, then press Ctrl+Alt+P. Pythia appears as the Pythia tab next to Terminal and Problems.
FAQ
Do I need an account or API key? No.
Is it really free? Yes. It runs on a free shared quota, which is why limits exist.
Does it work offline? No. It needs an internet connection.
Which languages does it support? Any. It is tuned for coding questions but answers general questions too.
Is it affiliated with Python, Microsoft or Google? No. Pythia is an independent project and is not affiliated with, endorsed by, or sponsored by the Python Software Foundation, Microsoft, or Google.
Feedback
Found a bug or have an idea? Use the Q & A tab on this extension's Marketplace page.
License
MIT
| |