LiyaAI Coding Agent for VS Code
AI-powered coding assistant for VS Code — powered by LiyaAI Platform.
Why LiyaAI?
LiyaAI is not just a model provider — it's an intelligent AI platform with:
- 🚀 Performance Middleware — Smart caching, context optimization, and request batching
- 💰 Cost Optimization — Up to 65% cost savings with intelligent token management
- 🔄 Multi-Model Support — Access Claude, GPT-4, and other models through unified API
- 🎯 Custom Assistants — Pre-configured assistants with domain-specific instructions
- 📊 Usage Analytics — Track costs, tokens, and performance per project
- 🔒 Enterprise Security — API key management, audit logs, and data privacy
Features
- 🤖 AI Chat Panel — Sidebar chat with your custom coding assistants
- 🔧 Agentic Tool Execution — AI can read, write, and edit files autonomously
- 🔍 Code Search — Fast grep and file search (ripgrep/fd powered)
- 📝 Git Integration — Status, diff, and log commands
- 💻 Terminal Commands — Run commands with safety checks; auto-executed in Accept mode (dangerous patterns always confirmed)
- 💰 Real-time Cost Tracking — See token usage and costs per session
- 🛡️ Security First — Workspace sandboxing, command blocklist, sensitive file protection
- 🧩 MCP Support — Connect to any Model Context Protocol server
- 🤝 Sub-agents — Delegate tasks to specialized built-in agents
- 🪝 Hook System — Automate actions on prompt submit, tool use, and stop events
- 🔐 Permission Modes — Fine-grained tool access control (plan / default / acceptEdits / bypassPermissions)
- 🧠 Project Memory — Persistent workspace memory via
LIYAAI.md with periodic re-injection on long tool chains (hash-diff + adaptive cadence), and a plugin-maintained ## 📍 Current live status block
- 📓 Jupyter Notebook Support — Read and edit
.ipynb files directly
- 🖼️ Image & Screenshot Input — Paste screenshots, pick files via button, or drag-and-drop images into chat
- ⚡ Auto-compact — Automatic context window management at 85% usage
- ⏪ Prompt Rewind — Snapshot and revert file changes per message
- 📎 File Attachments — Attach files to chat via paperclip UI
- 🛠️ Script Runner — Run custom scripts from
.liyaai/scripts/
- 🌐 Web Fetch Tool — AI can fetch URLs (SSRF-protected)
- 📈 Analytics — Session and tool-use event tracking
- 🎙️ Speech to Text — Dictate prompts hands-free using your microphone
- 🔊 Text to Speech — Have AI responses read aloud automatically
- 🏷️ Smart Chat History Titles — New chats are titled automatically from the first user message
- ♿ Accessibility First — Full voice I/O support designed for visually impaired developers
Requirements
Getting Started
- Install the extension from VS Code Marketplace
- Click the LiyaAI icon in the Activity Bar (or move it to the right sidebar)
- Enter your Backend URL and API Key
- Select a coding assistant from your LiyaAI project
- Start chatting with your AI coding partner!
Commands
| Command |
Shortcut |
Description |
LiyaAI: Set API Key & Backend URL |
— |
Configure connection |
LiyaAI: Select Assistant |
— |
Choose coding assistant |
LiyaAI: New Chat Session |
Cmd+Alt+N |
Start new chat |
LiyaAI: Focus Chat Panel |
Cmd+Alt+L |
Focus chat + mention current line |
LiyaAI: Explain Selected Code |
Cmd+Alt+E |
Explain code |
LiyaAI: Fix Selected Code |
Cmd+Alt+X |
Fix code |
LiyaAI: Optimize Selected Code |
Cmd+Alt+O |
Optimize code |
LiyaAI: Add Comments |
Cmd+Alt+D |
Add comments |
LiyaAI: Generate Tests |
Cmd+Alt+U |
Generate unit tests |
LiyaAI: Refactor Selected Code |
Cmd+Alt+R |
Refactor code |
LiyaAI: Insert Line Reference |
Cmd+Alt+A |
Insert line reference to chat |
LiyaAI: Cancel Current Request |
Cmd+Alt+. / Escape |
Cancel ongoing request |
LiyaAI: Show Balance |
— |
Show account balance |
LiyaAI: Open Project Memory |
— |
Open LIYAAI.md |
LiyaAI: Initialize Project Memory |
— |
Create LIYAAI.md |
LiyaAI: Create Workspace Config |
— |
Create .liyaai/ config folder |
Settings
| Setting |
Default |
Description |
liyaai.maxIterations |
15 |
Max iterations for agentic loop |
liyaai.autoApplyEdits |
false |
Auto-apply file edits |
liyaai.showCostPerMessage |
true |
Show cost per message |
liyaai.enableThinking |
true |
Enable extended thinking |
liyaai.enablePromptCaching |
true |
Enable prompt caching (up to 90% savings) |
liyaai.language |
en |
Display language (en/tr) |
liyaai.autoConnect |
true |
Auto-connect on startup |
Workspace Configuration
Create a .liyaai/ folder in your project root to customize behavior:
| File |
Description |
.liyaai/rules.md |
Project-specific AI instructions |
.liyaai/ignore |
Files/folders to hide from AI |
.liyaai/memory/ |
Persistent project memory files |
.liyaai/commands/ |
Custom slash commands (.md files) |
.liyaai/scripts/ |
Runnable scripts via run_script tool |
.liyaai/output-style.md |
Customize AI response format and tone |
LIYAAI.md |
High-level project memory (auto-loaded) |
Hook System
Configure automated hooks in .liyaai/settings.json:
{
"hooks": {
"UserPromptSubmit": [{ "command": "echo 'prompt submitted'" }],
"PreToolUse": [{ "matcher": "write_file", "command": "lint-check.sh" }],
"PostToolUse": [{ "matcher": "terminal", "command": "run-tests.sh" }],
"Stop": [{ "command": "notify-done.sh" }]
}
}
Hooks can allow, block, or modify tool inputs.
Permission Modes
| Mode |
Description |
plan |
Read-only — no file writes or commands |
default |
Standard — confirms before writes and commands |
acceptEdits |
Auto-applies file edits and runs terminal commands without confirmation (dangerous patterns still require confirmation) |
bypassPermissions |
Fully autonomous (env/user setting only) |
Per-tool rules support glob and regex patterns in .liyaai/settings.json.
MCP (Model Context Protocol)
Connect any MCP server in .liyaai/settings.json:
{
"mcpServers": {
"my-server": {
"command": "npx",
"args": ["-y", "@my-org/mcp-server"],
"env": { "API_KEY": "..." }
}
}
}
Sub-agents
Delegate tasks to built-in specialized agents:
| Agent |
Purpose |
code-reviewer |
Code quality review |
debugger |
Error diagnosis |
planner |
Task decomposition |
explorer |
Codebase exploration |
general-purpose |
Open-ended research |
┌─────────────────────────────────────────────────────────┐
│ VS Code Plugin │
│ (Tool Execution, Context Collection, Security) │
└─────────────────────┬───────────────────────────────────┘
│ API Request
▼
┌─────────────────────────────────────────────────────────┐
│ LiyaAI Platform │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Caching │ │ Context │ │ Billing │ │
│ │ Middleware │ │ Optimization│ │ & Usage │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ ┌─────────────────────────────────────────────────┐ │
│ │ Custom Assistants (Instructions, │ │
│ │ Knowledge Base, Tool Permissions) │ │
│ └─────────────────────────────────────────────────┘ │
└─────────────────────┬───────────────────────────────────┘
│
┌─────────────┼─────────────┐
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ Claude │ │ GPT-4 │ │ Gemini │
│ Models │ │ Models │ │ Models │
└─────────┘ └─────────┘ └─────────┘
LiyaAI works on macOS, Linux, and Windows with full cross-platform terminal command handling.
Safe Commands (auto-approved, no confirmation needed)
| Platform |
Commands |
| Unix/macOS |
cat, head, tail, ls, pwd, echo, which, wc, file, stat, du, df, grep, find |
| Windows CMD |
type, dir, where, findstr, tree, hostname, whoami, ver, systeminfo, tasklist, netstat, sort, fc, comp |
| PowerShell |
Get-Content, Get-ChildItem, Get-Item, Get-Location, Get-Process, Get-Service, Test-Path, Select-String |
| Cross-platform |
git status/log/diff/branch/show, npm list/ls/view, pip list/show/freeze, node -v, npm -v, python --version |
Blocked Commands (always rejected)
| Platform |
Commands |
| Unix/macOS |
rm -rf /, rm -rf ~, mkfs, dd if=, chmod -R 777 /, curl \| sh, shutdown, reboot, kill -9 -1 |
| Windows |
format c:, del /f /s /q c:, rd /s /q c:, reg delete, bcdedit, diskpart, net user |
| PowerShell |
Remove-Item -Recurse -Force C:, Format-Volume, Clear-Disk, Stop-Computer, Restart-Computer |
All other commands require user confirmation before execution.
Auto-Accept Mode — Dangerous Pattern Filter
Even when Auto-Accept Mode (⚡) is active, the following terminal patterns always prompt for confirmation:
| Pattern |
Example |
Reason |
rm -<flag> |
rm -rf ./dist |
Recursive/force deletion |
sudo |
sudo npm install -g |
Privilege escalation |
del (Windows) |
del /f myfile |
File deletion |
rm / |
rm /etc/hosts |
Absolute path deletion |
dd of= |
dd if=/dev/zero of=/dev/sda |
Disk overwrite |
format |
format c: |
Drive formatting |
shutdown/halt/reboot |
shutdown -h now |
System shutdown |
Security
- API keys stored in OS keychain (macOS Keychain, libsecret, Windows Credential Manager)
- Workspace sandboxing — no access outside project
- Command blocklist for dangerous operations
- Sensitive file protection (.env, SSH keys)
- SSRF protection on web_fetch tool
Development
# Install dependencies
npm install
# Watch mode
npm run watch
# Run extension (F5 in VS Code)
# Package
npm run package
Keyboard Shortcuts
| Shortcut (Mac) |
Shortcut (Win/Linux) |
Command |
Cmd+Alt+L |
Ctrl+Alt+L |
Focus Chat Panel |
Cmd+Alt+N |
Ctrl+Alt+N |
New Chat Session |
Cmd+Alt+A |
Ctrl+Alt+A |
Insert Line Reference |
Cmd+Alt+E |
Ctrl+Alt+E |
Explain Selected Code |
Cmd+Alt+X |
Ctrl+Alt+X |
Fix Selected Code |
Cmd+Alt+O |
Ctrl+Alt+O |
Optimize Selected Code |
Cmd+Alt+D |
Ctrl+Alt+D |
Add Comments |
Cmd+Alt+U |
Ctrl+Alt+U |
Generate Tests |
Cmd+Alt+R |
Ctrl+Alt+R |
Refactor Selected Code |
Cmd+Alt+. / Escape |
Ctrl+Alt+. / Escape |
Cancel Current Request |
Accessibility — Voice I/O for Visually Impaired Developers
♿ LiyaAI is committed to making AI-assisted coding accessible to everyone — including developers with visual impairments.
LiyaAI includes built-in voice input/output so you can interact with your AI coding assistant entirely hands-free and screen-independently:
🎙️ Speech to Text (STT)
- Press the microphone button in the chat panel (or use the keyboard shortcut) to start recording
- Speak your prompt naturally — LiyaAI transcribes your speech and sends it as a message
- Fully compatible with screen readers; no mouse interaction required
- Works offline-capable depending on your platform's STT engine
🔊 Text to Speech (TTS)
- AI responses are automatically read aloud when TTS is enabled
- Code blocks, file paths, and technical content are spoken in a clear, structured way
- Pause, resume, or stop playback at any time via keyboard
- Adjustable speech rate and voice settings
⌨️ Keyboard-First Workflow
All voice features are fully operable via keyboard — no mouse required:
| Action |
Shortcut (Mac) |
Shortcut (Win/Linux) |
| Start/stop recording |
Cmd+Alt+M |
Ctrl+Alt+M |
| Stop TTS playback |
Escape |
Escape |
Screen Reader Compatibility
The chat panel is built with ARIA labels, live regions, and semantic HTML to ensure compatibility with:
- macOS VoiceOver
- NVDA / JAWS (Windows)
- Orca (Linux)
What's New in 0.2.3
Memory & Long-Run Reliability
- 🧠 LIYAAI.md periodic re-injection — Long tool chains caused the model to drift away from path/style rules baked into the cached system prompt. The plugin now reloads
LIYAAI.md fresh and ships it on the next tool_result; backend appends it as a [SYSTEM REMINDER] block onto the same user-message so the model sees an uncached copy.
- 🪙 Hash-diff payload — A sha256 prefix of
LIYAAI.md is tracked across re-injections in a turn. If the content hasn't changed, a small "unchanged, rules still apply" marker is sent instead of the full ~50 KB payload.
- 📈 Adaptive cadence — Re-injection frequency reacts to error rate. A sliding window over the last 10 tool calls counts path-style failures; 2+ errors → cadence drops to every 5 calls for fast recovery, otherwise stretches to every 20 calls.
- 📍 Plugin-maintained
## 📍 Current block — Between <!-- LIYAAI_CURRENT_START --> / <!-- LIYAAI_CURRENT_END --> markers in LIYAAI.md, the plugin writes a live status block on every tool call — task, last action, modified files, pending question, iteration / cadence telemetry, timestamp. Lets the model recover task state after context drift.
Multi-Repo Path Safety
- 🗂️ Subfolder prefix rule in prompts — Coding-agent system prompts now explicitly require subfolder prefixes on
write_file / edit_file / read_file / append_to_file / multi_edit / list_directory / grep_search. These tools have no cwd parameter, so paths like aiapp/views.py were resolving incorrectly relative to workspace root instead of the active subfolder repo.
Bug Fixes
- 💬
ask_user_question options now render — Field-name mismatch between provider (options:) and webview (questionOptions) was silently dropping the choices and forcing free-text answers.
Chat History Improvements
- 🏷️ Automatic Session Titles — New chat sessions now generate history titles from the first user message instead of staying as a generic "New Chat"
- 🔄 Restored Session Titles — Loaded backend sessions rebuild their local title state from the first user message for consistent history display
- 🧹 Cleaner Title Formatting — Chat titles normalize whitespace and truncate to 50 characters for a compact history tab
What's New in 0.2.2
Auto-Accept Mode — Terminal Command Support
- ⚡ Auto-Accept Terminal —
run_terminal, git commit, and git push now execute without confirmation when Auto-Accept Mode is active
- 🛡️ Smart Safety Filter — Dangerous commands (
rm -rf, sudo, format, shutdown, dd if= etc.) still require explicit user confirmation even in Auto-Accept mode
- 🔔 Transparency Log — Terminal commands auto-executed in Accept mode show an
⚡ Auto-executing status in the chat for full visibility
- 🏷️ Updated Banner & Toast — Mode indicator now reads "edits & terminal commands run without confirmation" to accurately reflect the new behavior
Accessibility — Voice I/O
- 🎙️ Speech to Text — Dictate prompts hands-free via microphone; no typing required
- 🔊 Text to Speech — AI responses are read aloud automatically
- ♿ Designed for visually impaired developers — ARIA-compliant chat panel, screen reader support (VoiceOver, NVDA, Orca), keyboard-only workflow
What's New in 0.2.0
WebSocket Transport
- ⚡ WebSocket-only — HTTP polling fully replaced; tool call latency drops from ~3 s to ~50 ms
- 🔗 Persistent connection — Single WS session per conversation; no reconnect overhead between messages
- 🏓 Ping/pong keepalive — 30 s server-driven heartbeat; 400 s+ agent runs work without timeout
- 🗑️
useWebSocket setting removed — No fallback path; WS is the only transport
Agent Infrastructure
- 🪝 Hook System —
UserPromptSubmit, PreToolUse, PostToolUse, Stop hooks with allow/block/modify semantics
- 🔐 Permission Modes — 4-tier access control: plan / default / acceptEdits / bypassPermissions; per-tool allow/ask/deny rules with glob/regex support
- 🤝 Sub-agents — Spawn specialized built-in agents (code-reviewer, debugger, planner, explorer) within a session
- ⚡ Auto-compact — Automatic context compaction at 85% usage;
/compact slash command; 3 modes (prompt / auto / disabled)
Workspace & Memory
- 🧠 Project Memory — Persistent memory via
LIYAAI.md and .liyaai/memory/; /memory slash command
- 📋 Custom Commands — Add project slash commands as
.md files in .liyaai/commands/
- ⏪ Prompt Rewind — Per-message file snapshots; rewind button to undo AI edits
- 🌐 web_fetch Tool — AI can fetch URLs directly (SSRF-protected Python script)
- 🛠️ Script Runner — Run
.liyaai/scripts/ scripts via run_script tool (venv-aware Python)
- 📦 Multi-project Workspace —
workspace.json for managing multiple sub-projects in one session
- 🧩 MCP Client — Connect any Model Context Protocol server; tools auto-registered in agent loop
- 🎯 Skills System — Reusable, parameterized instruction sets loaded from
.liyaai/skills/
- 🐚 Background Shell — Long-running background processes with
background_shell tool
- ✅ Checkpointing — Save and restore agent state mid-session
- 📓 Jupyter Notebook Tools —
notebook_read and notebook_edit for .ipynb files
- 🖼️ Image/Screenshot Input — Paste screenshots, pick files via button, or drag-and-drop images into chat
- 📎 File Attachments — Attach files via paperclip UI; injected as
<attached_file> context
- 📊 Statusline — Live workspace context injection via
statusline.sh
- 🎨 Output Style — Customize AI response format/tone via
.liyaai/output-style.md
- 📈 Analytics Client — Session and tool-use event tracking
- 🛒 Marketplace — Feature flag system and
/marketplace command
- ⌨️ New Keybindings — Switched to
Ctrl+Alt+* / Cmd+Alt+* to eliminate chord conflicts
- 🔄 Backend Session Lock — Polling loop for 202 "processing" responses (100 × 3 s, up to 5 min)
- 🔒 Security Hardening — Content Security Policy on WebView, 10 MB image upload limit, SSRF-protected web_fetch
See CHANGELOG.md for full release notes.
Documentation
License
LiyaLabs Community License v1.0 — Free for individual use. Commercial use (white-labeling, reselling, SaaS) requires a license from LiyaLabs. See LICENSE for details.
| |