Daakia — API Development Platform for VS Code
Table of Contents
Supported ProtocolsDaakia is a multi-protocol API client. Each protocol has its own execution engine, UI panels, sidebar context, and store state. Switch between protocols using the left icon rail — everything updates instantly.
UI Layout
Key FeaturesRequest Builder
Response Viewer
Collections & Environments
Request History
Code Generation
ArchitectureExtension Host ↔ Webview Communication
Component library —
|
| Script | When It Runs | Use For |
|---|---|---|
| Pre-request | Before the HTTP request is sent | Set variables, generate timestamps, compute auth tokens, abort requests |
| Post-response | After the response is received | Assertions, extract data to env vars, chain requests |
| Collection-level | Inherited by all requests in a collection | Shared setup/teardown, common auth headers |
Script API (dk.*)
Scripts run in a sandboxed Node.js vm context with a dk global:
dk.env.set/get/secret— environment variable read/write, secrets masked as***dk.globals.set/get— global variable scopedk.request/dk.response— read-only request, and (post-response only) response with.status/.headers/.body/.time/.json()dk.sendRequest({...})— sub-requests from inside a script (e.g. auto-login)dk.test(name, fn)+dk.expect(value)— assertions (.toBe,.toContain,.toBeLessThan,.toHaveProperty, ...)dk.console.log/warn/error— logged to the DevTools Console tabdk.crypto.md5/sha1/sha256/hmac/base64/uuid,dk.oauth— utility helpers
Debugger
- Click a line-number gutter to set a breakpoint (persists with the request)
- A pill-shaped, draggable HUD toolbar appears when execution pauses: Continue / Step Over / Step Into / Step Out / Restart / Stop
- Run & Debug sidebar: Variables (expandable tree), Watch expressions, Call Stack, Breakpoints list
- Hover any variable while paused to see its live value; the current line highlights yellow
- Debug mode auto-activates the moment a breakpoint is set — no separate "start debugging" step
- Test results land in the Response panel's Tests tab (
N passed/N failed) — tests run even without any breakpoints set
AI Assistant
Daakia ships AI in two complementary surfaces:
1. In-app AI panel
A full LLM playground built into the app — its own protocol tab, with a URL bar (provider + model selector), five config tabs (Prompt, Authorization, Tools, MCP, Settings — temperature/max tokens/top_p/penalties/stream/stop sequences/seed/response format), and a streaming conversation panel with tool-call cards.
13 built-in providers, each with real model IDs pulled live from the source:
| Provider | Sample models |
|---|---|
| GitHub Copilot | auto, gpt-4o, claude-sonnet-4-5, gemini-2.0-flash, o3-mini (live list from vscode.lm) |
| OpenAI | gpt-5.4, gpt-5.4-mini, gpt-5.3-codex, gpt-4.1, gpt-4o, o3-pro, o4-mini |
| Anthropic | claude-opus-4-8, claude-sonnet-4-6, claude-3-7-sonnet-20250219, claude-3-5-haiku-20241022 |
| Google AI | gemini-2.5-pro, gemini-2.5-flash, gemini-2.0-flash, gemini-1.5-pro |
| Ollama (local) | llama3.3, qwen2.5, deepseek-r1, mistral, codellama |
| Groq | compound-beta, Llama 4 Maverick/Scout, llama-3.3-70b-versatile, Kimi K2 |
| Together AI | Llama 3.1 405B/70B, DeepSeek R1 |
| Mistral AI | Mistral Large/Small, Codestral |
| xAI | grok-3, grok-3-mini |
| DeepSeek | V4 Pro/Flash, V3, R1 |
| Azure OpenAI | Azure deployment variants |
| Custom | any OpenAI-compatible endpoint |
| Daakia Mock | points at a local Daakia AI mock server, for offline dev |
2. @daakia Copilot Chat participant
Registered as a real VS Code chat participant (daakia.copilot) — type @daakia in
Copilot Chat. Five explicit slash commands (/request, /mock, /test, /curl,
/explain) plus free-text intent classification that routes to 11 total specialized
agents: request builder, mock generator, test-script generator, cURL converter,
response explainer, general Q&A, SOAP, GraphQL, XSD→request, documentation generator,
and security review — each with its own system prompt, heuristic-matched first with an
LLM fallback for ambiguous phrasing.
AI Power Tools
Beyond chat, the AI panel's toolbar exposes a catalog of task-specific tools (each individually toggleable in Settings → AI Features):
| Tool | What it does |
|---|---|
| Export | Exports the AI conversation (prompts, responses, generated requests) as a Markdown report |
| @ Prompts | Quick-insert picker into the AI Prompt Library |
| OpenAPI | Generates a full OpenAPI 3.1 spec (YAML/JSON) from the active collection or open tabs |
| Security | Scans open tabs for security anti-patterns |
| pm→dk | Translates Postman pm.* test scripts to Daakia's dk.* API automatically |
| Webhook | Analyzes webhook payloads, validates HMAC signatures, explains structure |
| Cluster | Groups request history into logical API domains, auto-organized into collections |
| Orchestrate | Turns a plain-English multi-protocol user journey into a coordinated, pass/fail-tracked test timeline |
| Chaos | Designs a chaos-engineering test plan — fault scenarios, order, probability, protocols, duration — plus a risk matrix and resilience report |
| Contracts | Diffs two teams' OpenAPI specs, proposes resolutions, and generates adapter stub mocks so both teams can develop independently |
| Traffic | Proxy mode — mirrors real API traffic into Daakia, analyzes patterns live, auto-updates mocks, flags anomalies |
Plus a longer tail available from Collections' context menu and elsewhere: a deep per-collection Security Audit, Voice-to-Request, Request-from-Screenshot, API Flow Builder, Response Transformer, Request-from-Logs, Scenario Generator, Adaptive Mock Learning, Semantic Validator, and more.
Command Palette
Cmd/Ctrl+K opens a global command palette covering essentially the whole app:
New Request, Navigate, Settings, per-protocol "Go to Tab" (REST/GraphQL/SOAP),
Developer Tools, Collections & Environments, currently open tabs, and the full AI
feature catalog from above — each AI tool is reachable here even if you don't know
which panel it normally lives in.
Wiki — In-App Documentation
Settings → Wiki is a tabbed, scrollable, in-app documentation system built from real screenshots of the running app (Quick Start, REST, GraphQL, WebSocket/Realtime, gRPC, SOAP, Mock Server, Collections & Env, AI Assistant, Settings), interleaved with written explanations, code samples, and callouts for each screen — so help is a click away without leaving the editor, and it never drifts from what the UI actually looks like since the screenshots are real captures, not mockups.
Settings
| Section | Covers |
|---|---|
| General | Follow redirects, SSL verification, save response in history, request timeout, max history entries |
| Theme | Dark/Light toggle, persists across sessions |
| Mock Server | Default port range, auto-start behavior |
| LLM Provider | Enable/disable providers, API keys (stored via VS Code SecretStorage), custom base URLs, per-provider model toggles |
| AI Features | Per-tool on/off switches for every AI Power Tool |
| Prompt Library | Manage saved prompt templates and agent system prompts, with reset-to-default |
| AI Audit | Full LLM call audit trail — model, prompts, payloads, timing |
| Developer Tools | Memory Footprint, Audit Log, Audit Config, DB Explorer, Debug Snapshot |
| Power Features | 8 cards: Cookie Manager, Proxy Settings, Client Certificates, API Monitor, Request Interceptor, Response Diff, Bulk URL Tester, Load Tester |
| Wiki | The in-app documentation described above |
Developer Tools
Two distinct surfaces, both reachable from the app:
The DevTools panel (rail icon, bottom-left) — a resizable bottom panel with Console (script logs, error traces, a REPL for live expression evaluation), Network (every request across every protocol — method/status/URL/duration/size, click for full request/response detail), and Performance (heap/RSS/external memory/CPU, auto-refreshing).
Settings → Developer Tools — a separate, DB-focused surface: Memory Footprint,
Audit Log (browse/filter/delete ce_audit entries), Audit Config, DB Explorer
(browse every SQLite table, expand JSON cells, delete rows), and a one-click Debug
Snapshot export (DB status, memory, versions, recent errors, as JSON).
Import / Export
Import: Postman Collection v2.1, OpenAPI/Swagger (2.x & 3.x, YAML or JSON), HAR
(HTTP Archive), Bruno .bru, HTTPie, Thunder Client.
Export (per-collection, right-click menu): Daakia JSON, Postman-compatible JSON,
Insomnia, Bruno .bru, HTTPie, OpenAPI 3.0, and a Markdown API-docs export.
Mock Server export: a real WireMock project (mappings + __files, zipped), or a
generated standalone server for the target protocol (Node.js HTTP server + Dockerfile,
GraphQL via graphql-http or Apollo Server, a real @grpc/grpc-js server, a Node.js
SOAP server, or ws/SSE/Socket.IO/Aedes-MQTT servers) — so a mock built visually in
Daakia can leave the editor as a runnable project.
Collection Sync (git-native)
daakia.exportCollectionsToWorkspace / daakia.importCollectionsFromWorkspace (VS Code
Command Palette) write every collection out as diffable <protocol>.daakia.json files
inside your workspace, so they can be committed, code-reviewed, and diffed like any
other file — and re-imported on another machine after a git pull. An optional
auto-export mode (daakia.gitSync.enabled) debounces a write on every collection
mutation and watches the sync folder for external changes to re-import automatically.
No GitHub/git credentials are ever touched by the extension — actual git add/commit/push
stays entirely in your own hands via VS Code's Source Control panel.
Tech Stack
| Layer | Technology |
|---|---|
| Extension Host | TypeScript 5.7, VS Code Extension API, esbuild |
| Webview UI | React 19, Vite 6 |
| Styling | Tailwind CSS v4 + CSS custom properties |
| Component Library | @salilvnair/dui — shared design system |
| State Machine | @salilvnair/state-machine — stateful mock workflows |
| State | Zustand 5 |
| Code Editor | Monaco (@monaco-editor/react + monaco-editor, wrapped by DUI's EditorView) |
| Storage | sql.js (SQLite compiled to WASM) — no native addons |
| HTTP Client | Axios |
| gRPC | @grpc/grpc-js + @grpc/proto-loader + protobufjs |
| SOAP | soap + fast-xml-parser |
| WebSocket / Socket.IO / MQTT | ws, socket.io-client, mqtt + aedes (mock broker) |
| YAML | js-yaml (OpenAPI/Swagger parsing) |
| Path matching | path-to-regexp (mock route matching) |
Design Principles
- No hardcoded colors — every color is a
var(--color-*)token or comes fromdaakia-colors.ts - No inline SVGs — every icon lives in
daakia-icons.tsx - No native
<select>— always DUI'sSelectInputView/StyledDropdown - No backdrop-close modals — only an explicit X or Cancel/Close button dismisses a modal
- No browser right-click menu — globally disabled; a custom
ContextMenucomponent takes over - Protocol separation — each protocol is self-contained: own panels, sidebar, stores, execution
- Confirm all destructive actions — via a shared
ConfirmDialog, never an inline confirmation - Stable scrollbars — every scrollable area reserves gutter space so content never shifts
- Help icons — always the shared
InfoPopup(title + description + code badges + wiki link), never a bare toast or direct link - postMessage bridge — all extension ↔ webview communication goes through typed message handlers
Contributing / Local Development
This section is for people building Daakia from source — not needed to use the extension, which installs in one click from the Marketplace above.
Prerequisites: Node.js 20+ (nvm use 22).
git clone https://github.com/salilvnair/daakia.git
cd daakia
nvm use 22
npm install
npm run build:all
npm run watch # watch mode, extension host
npm run dev:webview # Vite dev server, hot reload for the UI
# Press F5 in VS Code → Extension Development Host window opens
Build Commands
| Command | Description |
|---|---|
npm run build:all |
Typecheck + build extension (esbuild) + build webview (Vite) |
npm run build:ext |
Build extension only |
npm run build:webview |
Build webview only |
npm run watch |
Watch mode for the extension |
npm run dev:webview |
Vite dev server for the webview (hot reload) |
npm run local-server |
Standalone dev backend (real SQLite + mock servers) for browser-only UI testing |
npm run vscode:package |
Package into a .vsix file (for manual/offline installs) |
npm run vscode:publish |
Publish to the VS Code Marketplace (current package.json version) |
npm run vscode:publish:patch / :minor / :major |
Bump semver and publish in one step |
npm run lint |
ESLint on src/ |
Installing a locally-built VSIX
npm run build:all
npm run vscode:package
code --install-extension daakia-*.vsix
License
MIT © 2026 salilvnair
Built with ❤️ for the VS Code community
