Gatishil AI — VS Code Extension
Agentic coding assistant for Visual Studio Code, powered by the Gatishil AI gateway.
Overview
Gatishil AI brings an autonomous, tool-calling coding agent directly into the VS Code
sidebar. It connects to the Gatishil AI gateway's OpenAI-compatible /v1/chat/completions
API and drives an agent loop that can read files, list directories, write files, and run
shell commands within your workspace — with every mutating action gated behind explicit
user approval.
Key capabilities:
- Agentic tool-calling loop — the assistant plans and executes multi-step tasks against
an OpenAI-compatible chat completions API.
- Workspace-aware tools — read files, list directories, write files, and run shell
commands, all scoped to your open workspace.
- Approval gate — file writes and shell commands require explicit confirmation before
they run, so nothing changes your project without consent.
- Native chat experience — a React-based chat interface integrated into the VS Code
activity bar.
Architecture
┌──────────────┐ postMessage ┌────────────────────┐ fetch /v1/chat ┌─────────────┐
│ Webview (UI) │ ◀────────────▶ │ Extension host │ ───────────────▶ │ Gateway │
│ React + Vite │ │ agent loop + tools │ ◀─────────────── │ (tool_calls)│
└──────────────┘ └────────────────────┘ └─────────────┘
src/agent.ts — the loop: call the gateway, run the tools it asks for, feed results back, repeat until done.
src/tools.ts — tool schemas + executors (read_file, list_dir, write_file, run_command).
src/chatView.ts — the sidebar webview provider; bridges UI messages ↔ the agent, holds conversation + approvals.
webview/ — the React chat UI.
Develop
npm install
npm run build # bundles the extension (esbuild) + webview (vite) into dist/
Then press F5 in VS Code to launch an Extension Development Host. Open the Gatishil AI
icon in the activity bar.
npm run watch — rebuild the extension host on change (re-run vite build for webview changes).
npm run package — produce a .vsix (requires dist/ built first).
- Run “Gatishil AI: Set API Key” from the command palette (stored in SecretStorage, never in settings).
- Settings (
gatishil.*): baseUrl, model, maxTokens, maxSteps, autoApprove, allowInsecure.
allowInsecure defaults to true so the IP-based dev gateway's self-signed TLS cert is accepted.
Turn it off once the gateway has a valid certificate.
Status
First working skeleton: non-streamed agent turns, four core tools, approval gate on writes/commands.
Next: streamed token output, a diff view for write_file, and file-mention (@path) context.