OMP Chat by DT
An AI coding chat for VS Code, in the spirit of Claude Code and GitHub Copilot Chat. It runs the open-source oh-my-pi agent (omp), which reads your code, edits files and runs commands. It works with low-cost and free models from OpenCode, OpenRouter and DeepSeek, using your own API keys.
- Chat panel with Markdown answers, collapsible thinking, and a compact row for every tool the agent runs
- Asks before it edits files or runs commands, with four approval modes
- Inline diffs for every changed file, plus Undo
- Sends the open file or your selection with your message;
@ mentions files; paste or drop images
/ commands, a model picker, several API keys per provider, and automatic key switching when a limit is hit
- Usage and limits: context fill, 5-hour / weekly / monthly plan windows, free-model quota
- Conversations are saved and resume after a reload
1. Requirements
|
|
| VS Code |
1.85 or newer |
| Bun |
1.4.4 or newer (omp runs on Bun) |
| omp |
bun install -g @oh-my-pi/pi-coding-agent |
| An API key |
From one of the providers in section 3 |
You do not have to install Bun or omp by hand: if omp is missing, the panel offers to install it (see section 2).
2. Install
2.1 The extension
From a .vsix file (the usual way to share it):
- Build the package once, in the extension folder:
npx @vscode/vsce package --allow-missing-repository --skip-license
This creates omp-chat-0.1.0.vsix.
- In VS Code:
Ctrl+Shift+P → Extensions: Install from VSIX… → pick the file.
- Reload VS Code when asked.
From source (to try or change it): open the extension folder in VS Code and press F5. A second VS Code window opens with OMP Chat loaded.
2.2 omp
Open the OMP Chat view (the pixel-cat icon in the Activity Bar). If omp cannot be found, the chat shows:
omp (oh-my-pi) was not found. OMP Chat needs it to run the agent.
[Install omp] [Set path…] [Retry]
- Install omp opens a terminal and runs the install. You can watch it there and stop it if you want.
- If Bun is already installed:
bun install -g @oh-my-pi/pi-coding-agent
- If not: Bun's official installer runs first (
irm bun.sh/install.ps1 | iex on Windows, curl -fsSL https://bun.sh/install | bash on macOS/Linux), then omp.
- When the terminal is done, click Retry. You do not need to restart VS Code: OMP Chat finds a freshly installed omp even if it is not on VS Code's PATH yet.
- Set path… is for an omp installed somewhere unusual: enter the full path to the
omp executable.
To install by hand instead:
# Windows (PowerShell)
irm bun.sh/install.ps1 | iex
bun install -g @oh-my-pi/pi-coding-agent
# macOS / Linux
curl -fsSL https://bun.sh/install | bash
bun install -g @oh-my-pi/pi-coding-agent
Check it with omp --version.
3. Connect a provider
The first time you open the panel, a Connect a model provider form appears at the top of the chat. Pick a provider, paste a key, and optionally give the key a name (for example work). Press Skip if omp already has a login of its own; you can add keys later from the … menu → Set API Key….
| Provider |
What you get |
Get a key |
| OpenCode Go |
$10/month plan with many models (DeepSeek V4.1 Flash, Kimi, GLM, Qwen, MiniMax…). Limits per 5 hours, week and month |
https://opencode.ai/go |
| OpenCode Zen |
Pay-per-use gateway. Its -free models are meant for the OpenCode app: used from other tools such as omp, the free allowance runs out quickly |
https://opencode.ai/console |
| OpenRouter |
Hundreds of models; :free models cost nothing (50 requests/day, 1,000 after buying $10 of credits) |
https://openrouter.ai/keys |
| DeepSeek |
DeepSeek's own API, pay per token |
https://platform.deepseek.com/api_keys |
OpenCode Go and OpenCode Zen use the same OpenCode key (create it at https://opencode.ai/console with the Models: Request permission, plus Usage: Read for the usage panel). Every opencode-go/… model needs the Go subscription, including the ones whose names end in -free; the model list marks them Go plan. Prices and free offers change often, so check the provider's page.
After you save a key, OMP Chat switches to a default model of that provider if the current model has no key, and restarts omp so it picks up the key. Your conversation is kept.
4. Using the chat
Asking
Type in the box at the bottom and press Enter (Shift+Enter for a new line). Esc or the ■ button stops the agent.
While the agent is working, a new message is queued: it waits above the box, marked Queued, until the agent can take it, then moves into the conversation. Use ↑ to hand it to the running turn right away, or ✕ to take it back into the box.
When the agent keeps a to-do list, it is pinned above the box (Todos 2/5): ✓ done, ⟳ in progress, ○ to do. Click the header to fold it.
| In the message box |
What it does |
File chip (📄 calc.py) above the box |
The open file is sent with your message. If you select code, the chip shows the line range and the selected code is sent. Click the chip to leave it out (the eye icon closes) |
@ |
Lists workspace files as you type (@cal…). ↑ ↓ to move, Enter or Tab to insert, Esc to close. The @ button does the same |
| Images |
Paste with Ctrl+V, drop onto the box, or use the 🖼 button. Up to 5 per message; large images are scaled down. The model must support images |
/ |
Lists omp's slash commands, for example /session, /compact, /retry, /mcp |
The suggestions on the start screen (Explain this file, Find and fix bugs, Write tests) send a ready-made request about the open file.
Approvals
The agent can always read files. Whether it must ask before changing anything depends on the mode in the box's toolbar. Shift+Tab cycles through them.
| Mode |
Asks before |
| Ask before edits (default) |
Every file change and every command |
| Ask & remember |
The same, but you can approve a file or folder for the rest of the session |
| Auto-approve edits |
Commands only |
| Full auto |
Nothing |
| Plan (read-only) |
Nothing: every edit and command is refused. The agent studies the code and writes a plan |
In Plan mode, when the plan is written a card asks Execute, ask before edits, Execute, auto-approve edits or Keep planning. Executing switches to that mode and asks the agent to carry out the plan in the same conversation.
A request shows as a card in the chat, for example Allow tool: edit — File: calc.py with Approve / Approve edit for this session / Deny. Once answered it shrinks to one line. Changing the mode restarts omp and keeps the conversation.
When omp needs a typed answer (a name, a piece of text), the card has a text box; multi-line boxes submit with Ctrl+Enter.
Changes to your files
Every tool the agent runs is a compact row (✓ done, ✕ failed); click it to see the output. Edited files are listed under N files changed with the number of added and removed lines:
- Show changes: the diff inside the chat
- Diff button (or the file name): VS Code's side-by-side diff
- Undo: puts the file back as it was before that edit (a file the agent created is deleted). If the file changed again afterwards, OMP Chat asks first. The agent is told about the undo with your next message.
Models
Click the model name in the toolbar to open the model list. Type to filter (free, deepseek, kimi…). Models of a provider you have no key for are marked no key and listed last.
Switching models keeps the conversation: the next message continues it on the new model. If the new model's provider has no key yet, OMP Chat asks you to add one first.
Rewind
Hover over one of your messages and click ↶ to go back to just before it:
- Rewind conversation: the conversation continues from before that message, and the message returns to the box so you can edit and resend it.
- Rewind and restore code: the same, and every file change the agent made from that message on is undone, newest first. The agent is told which files were restored.
The longer conversation is kept as an earlier chat (🕘). In a reopened conversation, files the agent created with the write tool cannot be restored (their earlier state was not recorded); edits can.
Conversations
- Reloading the window reopens the last conversation of the workspace.
- + (title bar) starts a new chat.
- 🕘 (title bar) lists earlier conversations of this workspace; type to filter, Enter to open. Their diffs and Undo buttons work again.
Conversations are stored by omp in ~/.omp/agent/sessions/.
5. API keys and limits
Several keys
… → Set API Key… opens the key list in the panel. For each provider you can:
- Add a key (the newest becomes the active one)
- Use another key; omp restarts with it and the conversation continues
- Rename (pencil) or Remove (bin; click twice to confirm)
When a request fails because a limit or credit ran out (HTTP 429 / 402, "rate limit", "quota"…), OMP Chat moves to the provider's next key, restarts omp on the same conversation and retries the turn with /retry. When every key is spent, it offers Choose another model, Manage keys and Usage & limits.
Usage & limits
Open it with the 📊 button in the title bar or the gauge in the toolbar (5h 37% · 10%).
| Section |
Shows |
| This chat |
Model calls, tool calls, tokens (in / out / cached), cost, context window fill |
| OpenCode Go plan |
5-hour, weekly and monthly usage with the time until each resets |
| Today (UTC) |
OpenRouter free-model requests used out of your daily quota |
| OpenRouter account |
Credits used today / this month / in total, key limit |
| DeepSeek account |
Balance |
| API keys |
Every saved key of the current provider with its own usage, and a Use button |
Account figures need the key saved in OMP Chat (keys that only omp knows about cannot be read).
6. Plugins, skills and MCP
Plugins & skills panel
The 🧩 button in the title bar (or OMP Chat: Plugins & Skills) lists every skill the agent can use here, grouped by where it comes from: your own skills, the project's, and each installed Claude Code plugin (omp picks those up automatically).
- Switch a plugin on or off with its toggle, or open it (›) to switch single skills. A half-filled toggle means some of its skills are on.
- Filter by name or description.
- Apply restarts the agent with your choice and keeps the conversation. The choice applies to this workspace only; Claude Code's and omp's own settings are not changed.
- Auto-pick skills for each message: switched-on skills are always offered to the agent, which chooses among them (as in Claude Code). With auto-pick on, OMP Chat also names up to three skills that match your request (it understands common Vietnamese requests too), and shows Auto-picked skills: … in the chat. When the agent opens a skill, its row reads Using skill name.
Commands
These come from omp and work through / commands in the chat:
| Command |
|
/marketplace add <source> then /marketplace install <plugin> |
Plugins from marketplaces; omp reads Claude Code-style marketplaces (marketplace.json) and .claude/plugins |
/plugins list, /plugins enable <name>, /plugins disable <name> |
Manage installed plugins; /reload-plugins reloads them |
/skill:<name> |
Run a skill. Skills in ~/.claude/skills and the project's .claude/skills show up automatically |
/mcp add, /mcp list, /mcp test |
MCP servers |
Type / to see everything available on your machine.
7. Settings
| Setting |
Default |
|
ompChat.model |
openrouter/baidu/ernie-5.5-flash-preview:free |
Model as provider/model; the model picker writes this |
ompChat.approvalMode |
always-ask |
always-ask, always-ask-cached, write, yolo or plan (the toolbar modes above) |
ompChat.ompPath |
omp |
Path to the omp executable |
ompChat.extraArgs |
[] |
Extra omp command-line arguments |
8. Commands and shortcuts
Command (Ctrl+Shift+P) |
Also in |
| OMP Chat: Open |
Activity Bar icon |
| OMP Chat: New Chat |
+ in the title bar |
| OMP Chat: Show Chats… |
🕘 in the title bar |
| OMP Chat: Usage & Limits |
📊 in the title bar |
| OMP Chat: Plugins & Skills |
🧩 in the title bar |
| OMP Chat: Choose Model… |
Model name in the toolbar, or … menu |
| OMP Chat: Set API Key… |
… menu |
| OMP Chat: Stop Agent |
■ / Esc |
| Key |
In the message box |
| Enter / Shift+Enter |
Send / new line |
| Shift+Tab |
Next approval mode |
| Esc |
Stop the agent (or close an open list) |
| ↑ ↓, Enter, Tab |
Move and pick in /, @, model and chat lists |
9. Troubleshooting
| You see |
What to do |
| "omp (oh-my-pi) was not found" |
Use Install omp, then Retry; or Set path… |
| "401 … invalid" or "No API key found" |
The key is wrong or missing: … → Set API Key… |
| "… needs a Provider key" after picking a model |
Add a key for that provider; the conversation continues on that model |
| "429", "rate limit", "quota" |
OMP Chat switches keys by itself; add another key, wait for the reset shown in Usage & limits, or pick another model |
| "Free usage limit reached … (FreeUsageLimitError)" |
The OpenCode free allowance of your account is used up. Keys of the same account share it, so OMP Chat does not switch keys; the message says when it resets. Pick another model meanwhile |
| "403 An active OpenCode Go subscription is required" |
opencode-go/… models need the Go plan. Subscribe, or pick a model from another provider |
| The reply says a file was created, but it is not there |
The model only described the change without calling a tool (common with small free models). OMP Chat flags this when it can. Ask again ("use the write tool to create it") or pick a stronger model |
| The model ignores images |
Pick a model that accepts images (the model list on the provider's site says so) |
| Nothing happens / blank panel |
Ctrl+Shift+P → Developer: Reload Window. For details, Developer: Open Webview Developer Tools → Console |
10. Privacy
- API keys are kept in VS Code's encrypted Secret Storage and handed to omp as environment variables. They are sent only to the provider they belong to.
- Your messages, the files the agent reads, and attached images go to the model provider you selected. Check each provider's data policy; some free models may use requests for training.
- Conversations are stored locally by omp in
~/.omp/agent/sessions/.
Credits