{"slug": "show-hn-kodiqa-agent", "title": "Show HN: Kodiqa Agent", "summary": "Kodiqa Solutions released Kodiqa Agent, an open-source AI coding agent that runs locally for free with Ollama or via seven cloud API providers including Claude, OpenAI, and DeepSeek. The agent offers 26 built-in tools, multi-model consensus, cross-provider failover, and lazy MCP tools that use approximately 94 percent fewer tokens than competitors. Kodiqa Agent is available under AGPL-3.0 and can be installed via pip.", "body_md": "**The AI coding agent that runs anywhere — free locally with Ollama, or supercharged by 7 cloud APIs. One agent, every model, zero limits.**\n\n*78 slash commands • 26 tools • lazy MCP tools • RAG search • custom personas • plugins • sub-agents • LSP • 5 themes*\n\n| Feature | Kodiqa | Claude Code | Aider | Gemini CLI | OpenCode |\n|---|---|---|---|---|---|\nPrice |\nFree (Ollama) or pay-per-token | $20/mo (Pro) or pay-per-token | Pay-per-token only | Free (Gemini Flash) | Pay-per-token only |\nLocal/offline |\nYes (Ollama) | No | No | No | Yes (Ollama) |\nAPI providers |\n7 (Ollama, Claude, OpenAI, DeepSeek, Groq, Mistral, Qwen) | 1 (Claude) | 10+ (OpenAI, Claude, etc.) | 1 (Gemini) | 75+ (OpenAI, Claude, Gemini, Ollama, etc.) |\nTools |\n26 built-in | ~15 built-in | ~10 built-in | ~12 built-in | ~12 built-in |\nMCP support |\nYes (local + remote + OAuth) | Yes | No | Yes | Yes |\nOpenAPI / GraphQL as tools |\nYes | No | No | No | No |\nLazy MCP tools (token-efficient) |\nYes (~94% fewer tokens) | No | No | No | No |\nMulti-model |\nYes (consensus mode) | No | No | No | No |\nCross-provider failover |\nYes | No | No | No | No |\nPlan mode |\nYes | Yes | No | No | No |\nPermission modes |\n3 (default/relaxed/auto) | 2 (normal/auto) | 1 (confirm all) | 2 (normal/sandbox) | 2 (normal/auto) |\nBatch edit review |\nYes (per-file accept/reject) | No | No | No | No |\nAuto model discovery |\nYes (live from APIs) | No | No | No | No |\nBudget limit |\nYes (`/budget` ) |\nNo | No | No | No |\nAuto-lint |\nYes (`/lint` ) |\nNo | Yes (built-in) | No | No |\nAuto git commit |\nYes (`/autocommit` ) |\nYes | Yes (default) | No | No |\nUndo |\nYes (10 levels per file) | No | Yes (git-based) | No | No |\nConversation branching |\nYes (`/branch` ) |\nNo | No | No | No |\nContext management |\nAuto-compact at 85% | Auto-compact | Repo map | Auto (1M context) | LSP-based |\nWeb search |\nYes (3 engines) | No | No | Yes (Google) | No |\nPersistent memory |\nYes (SQLite) | Yes (CLAUDE.md) | No | Yes (Gemini memory) | No |\nTab autocomplete |\nYes | Yes | No | Yes | Yes |\nThinking display |\nYes (spinner + summary) | Yes | No | Yes | Yes |\nProject indexing |\nYes (symbol extraction) | Yes | Yes (repo map) | No | Yes (LSP) |\nSession recovery |\nYes (auto-save) | Yes | No | No | Yes (multi-session) |\nCustom agents |\nYes (sub-agents) | No | No | No | Yes |\nDesktop app / IDE |\nEditor bridge (`--serve` ) |\nYes (VS Code) | No | No | Yes (VS Code, desktop) |\nInstall |\n`pip install kodiqa` |\n`npm install -g` |\n`pip install` |\n`npm install -g` |\n`go install` / `npm` |\nLanguage |\nPython | TypeScript | Python | TypeScript | Go |\nTests |\n473 | Yes | Yes | Yes | Yes |\nOpen source |\nYes (AGPL-3.0) | Yes (Apache-2.0) | Yes (Apache-2.0) | Yes (Apache-2.0) | Yes (MIT) |\n\n**Kodiqa's unique advantages**: free local models, 7 API providers, multi-model consensus, custom plugins, sub-agents, LSP integration, 5 themes, project templates, batch edit review, conversation branching, budget limits, auto-lint, and auto model discovery — features no other agent offers together.\n\n```\npip install kodiqa\nkodiqa\n```\n\nOr from source:\n\n```\ngit clone https://github.com/Kodiqa-Solutions/Kodiqa-agent.git\ncd Kodiqa-agent\npip install .\nkodiqa\n```\n\n**Claude Code-style UI**—`❯`\n\nprompt with separator line (prompt_toolkit), arrow-key navigation for all prompts**26 tools**— file ops, git, search, web, memory, clipboard, multi-edit, undo, diff apply** 7 API providers**— Ollama (local/free), Claude, OpenAI, DeepSeek, Groq, Mistral, Qwen** Editor/IDE bridge**—`kodiqa --serve`\n\nexposes a local HTTP API (`/ask`\n\n,`/diagnostics`\n\n) for VS Code/Zed/Neovim extensions**Cross-provider failover**— if a provider is down/rate-limited, the turn auto-retries on the next configured provider and continues (`/failover`\n\n)**TOON output**—`/toon`\n\nre-encodes JSON tool results into a compact tabular form (~60% fewer tokens on large arrays)**Custom commands**— drop`.kodiqa/commands/<name>.md`\n\nand run it as`/<name>`\n\n(with`$ARGUMENTS`\n\n/`$1`\n\nsubstitution);`/commands`\n\nlists them**MCP server support**— connect external tool servers via Model Context Protocol** Lazy MCP tools**— large MCP servers are discovered on demand (`mcp_search`\n\n/`mcp_call`\n\n) instead of injecting every tool schema each turn — ~94% fewer tool-schema tokens (`/mcp lazy`\n\n)**Auto model discovery**— new Claude/Qwen models appear automatically from APIs** Interactive pickers**—`/model`\n\nand`/key`\n\nshow numbered menus, navigate with arrows**Tab autocomplete**— slash commands, model names, file paths (prompt_toolkit)** Compact streaming**— hides code output, shows progress instead (toggle with`/verbose`\n\n)**Stream interrupt**— press Esc or Ctrl+C to stop any response instantly** Stream stall indicator**— animated spinner when response pauses (so you know it's still working)** Thinking display**— shows spinner for`<think>`\n\nreasoning blocks, line count summary**Multi-model consensus**— query all models, merge best answers** 3 permission modes**— default (confirm all), relaxed (auto file ops), auto (no confirms)** Plan mode**— AI explores + plans, you approve, then it implements** Batch edit review**— queue edits, accept/reject per file with arrow keys** Context window management**— warns at 70%, auto-compacts at 85%, visual progress bar** Conversation branching**— save/switch between conversation states** Token tracking**— cost per response, session totals, tok/s speed** Prompt caching**— Claude API cache for faster + cheaper responses** Auto-retry**— exponential backoff on API errors (429, 5xx, timeouts)** Undo / redo / rewind**— per-file undo (up to 10 levels) with`/redo`\n\n, plus`/rewind`\n\nto revert ALL file changes from the last turn(s)**Checkpoints**— save/restore conversation state** Session export**— export conversation to markdown** Git-aware context**— auto-detects git repo, includes diff stats** Project indexing**— symbol extraction (def/class/function), cached** Shell env detection**— auto-detects OS, shell, dev tools** Diff preview**— colored diff before every file write/edit** Parallel tools**— read-only operations run concurrently** Session summary**— auto-saves context summary on quit, loaded on next start** Conversation recovery**— auto-saved sessions, resume on crash or with`kodiqa -c`\n\n/`--resume`\n\n**Workspace boundary**— asks permission before accessing files outside working directory** Smart Ollama lifecycle**— starts on launch, stops when switching to cloud, restarts on local switch** Dynamic model library**— fetches available Ollama models from ollama.com with pull counts** Unlimited iterations**— no artificial cap, AI keeps working until the task is done** Live API model routing**— auto-discovered models from Claude/Qwen APIs routed to correct provider** Auto git commit**— toggle with`/autocommit`\n\n, auto-commits after AI edits with descriptive message— per-project file exclusion (like`.kodiqaignore`\n\n`.gitignore`\n\nfor scans/searches)**Budget limit**—`/budget 5`\n\nsets $5 session limit, warns at 80%, blocks at 100%**Auto-lint**—`/lint ruff check --fix`\n\nruns linter after edits, feeds errors back to AI**Custom personas**—`/persona`\n\nswitches AI expertise (security-expert, code-reviewer, teacher, architect, debugger)**RAG search**—`/embed`\n\nindexes codebase,`/rag`\n\nsearches with AI-enhanced context**Test generation**—`/test <file>`\n\nauto-generates unit tests**Git diff review**—`/review-local`\n\nAI reviews staged changes**Interactive debugger**—`/debug <script>`\n\nruns, catches errors, debugs with AI**Diagram generation**—`/diagram`\n\ngenerates Mermaid diagrams via AI**File watcher**—`/watch <path>`\n\nmonitors for changes**Config profiles**—`/profile save/load`\n\nmanages settings presets**Multi-file refactoring**—`/refactor rename/extract`\n\nacross project**Session history**—`/history`\n\nbrowses and resumes past sessions**Clipboard patches**—`/patch`\n\napplies diffs from clipboard**Changelog**—`/changelog`\n\nshows version history**Session stats**—`/stats`\n\nshows metrics (files, tools, time, cost)**317 tests**— pytest test suite, all passing\n\nAll interactive prompts use arrow keys — no typing letters:\n\n```\n  Allow: Write file: ~/project/app.py\n    ❯ Yes\n      Yes, don't ask again — for this action type\n      No\n```\n\nNavigate with **↑↓ arrows** or **j/k**, press **Enter** to select, or **1/2/3** to jump.\n\nPrompt uses a separator line (like Claude Code):\n\n```\n────────────────────────────────────────\n❯ your prompt here\n```\n\n| Command | What it does |\n|---|---|\n`/model <name>` |\nSwitch model (interactive picker if no arg) |\n`/models` |\nList all available models (with live API discovery) |\n`/multi <models>` |\nMulti-model consensus mode |\n`/single` |\nBack to single model |\n`/scan [path]` |\nScan project into context (with symbol extraction) |\n`/clear` |\nClear conversation history |\n`/compact` |\nSummarize conversation to save context |\n`/memories` |\nShow stored memories |\n`/forget <id>` |\nDelete a memory |\n`/context` |\nShow project context file |\n`/key [provider]` |\nAdd/update API key (interactive picker if no arg) |\n`/tokens` |\nSession token usage, cost, context bar |\n`/config` |\nShow config / `/config reload` to reload |\n`/export` |\nExport session to markdown file |\n`/checkpoint [n]` |\nSave conversation checkpoint |\n`/restore [n]` |\nRestore checkpoint (no arg = list all) |\n`/env` |\nShow detected shell environment |\n`/verbose` |\nToggle compact/verbose streaming |\n`/mode [mode]` |\nSet permission mode (default/relaxed/auto) |\n`/plan` |\nToggle plan mode (explore → approve → implement) |\n`/accept` |\nToggle batch edit review |\n`/search <engine>` |\nSwitch search engine (duckduckgo/google/api) |\n`/cd <path>` |\nChange working directory |\n`/branch` |\nSave/switch/list conversation branches |\n`/mcp` |\nManage MCP tool servers (add/remove/list) |\n`/autocommit` |\nToggle auto git commit after AI edits |\n`/budget <amount>` |\nSet session budget limit (warns 80%, blocks 100%) |\n`/undo [path]` |\nUndo last edit / list undo history |\n`/redo [path]` |\nRe-apply an undone edit / list redo history |\n`/rewind [n]` |\nRevert all file changes from the last n turns (default 1) |\n`/diff [args]` |\nShow git diff (supports --staged etc.) |\n`/lint <cmd>` |\nAuto-lint after edits (`/lint off` to disable) |\n`/toon [on|off]` |\nCompact JSON tool results into TOON (saves tokens) |\n`/pin <path>` |\nPin file to always include in context |\n`/unpin <path>` |\nRemove pinned file |\n`/alias <name> <cmd>` |\nCreate command alias |\n`/commands` |\nList custom prompt-template commands (`.kodiqa/commands/*.md` ) |\n`/unalias <name>` |\nRemove command alias |\n`/notify` |\nToggle desktop notifications for long tasks |\n`/optimizer` |\nToggle cost optimizer tips |\n`/theme <name>` |\nSwitch UI theme (dark/light/dracula/monokai/nord) |\n`/share` |\nExport session as styled HTML |\n`/pr [title]` |\nCreate GitHub PR via gh CLI |\n`/review [number]` |\nReview PR diff via gh CLI |\n`/issue [number]` |\nView GitHub issue via gh CLI |\n`/init [template]` |\nScaffold project from template |\n`/plugins` |\nList/reload custom tool plugins |\n`/agent <task>` |\nSpawn sub-agent for background task |\n`/agents` |\nList running/completed sub-agents |\n`/lsp [start|stop]` |\nStart/stop Language Server Protocol |\n`/voice` |\nVoice input via sox + Whisper |\n`/changelog` |\nShow version history |\n`/stats` |\nSession metrics (files, tools, time, cost) |\n`/review-local` |\nAI review of staged git changes |\n`/test <file>` |\nGenerate unit tests for a file |\n`/persona <name>` |\nSwitch AI persona (security-expert, code-reviewer, etc.) |\n`/patch` |\nApply diff/patch from clipboard |\n`/profile` |\nSave/load config profiles |\n`/refactor` |\nMulti-file refactoring (rename, extract) |\n`/history` |\nBrowse and resume past sessions |\n`/watch <path>` |\nWatch files for changes |\n`/embed [path]` |\nIndex files for RAG search |\n`/rag <query>` |\nRAG search + AI answer |\n`/debug <script>` |\nRun script, catch errors, debug with AI |\n`/diagram <desc>` |\nGenerate Mermaid diagram |\n`/help` |\nShow help |\n`/quit` |\nExit |\n\n| Mode | Behavior |\n|---|---|\n`default` |\nArrow-key confirm for all writes/commands (Yes / Don't ask again / No) |\n`relaxed` |\nAuto-approve file operations, only confirm commands + deletes |\n`auto` |\nNo confirmations — everything auto-approved |\n\nSwitch with `/mode relaxed`\n\nor `/mode auto`\n\n. Default is `default`\n\n.\n\nActivate with `/plan`\n\n. The AI will:\n\n**Explore**— read files, search, analyze (no writes allowed)** Present plan**— show what it intends to do** You decide**— approve, revise, or reject (arrow keys)** Implement**— on approval, AI executes the plan\n\nWhen enabled (default ON, toggle with `/accept`\n\n), file edits are queued and presented for review:\n\n```\n  ? (1/3) app.py — write  +15 -3 lines\n    ❯ Accept\n      Reject\n      Show diff\n      Accept all — remaining 3 edits\n      Reject all\n```\n\nNavigate with arrow keys, view diffs, accept/reject individually or in bulk.\n\nConnect external tool servers via the Model Context Protocol — **local or remote**:\n\n```\n# Local (stdio) server — a command Kodiqa runs\n/mcp add fs npx -y @modelcontextprotocol/server-filesystem ~/projects\n\n# Remote (HTTP) server — a hosted URL, with optional auth\n/mcp add linear https://mcp.linear.app/mcp --bearer env:LINEAR_TOKEN\n/mcp add api https://example.com/mcp --header \"X-Api-Key:abc123\"\n\n# Remote with OAuth login (opens your browser)\n/mcp add linear https://mcp.linear.app/mcp --oauth\n# …or machine-to-machine (no browser)\n/mcp add api https://example.com/mcp --oauth-client-id env:CID --oauth-client-secret env:CSEC\n\n# Any REST API via its OpenAPI spec — each operation becomes a tool (no codegen)\n/mcp add petstore --spec https://petstore3.swagger.io/api/v3/openapi.json\n# Any GraphQL endpoint — each query/mutation becomes a tool\n/mcp add gql --graphql https://api.example.com/graphql --bearer env:TOKEN\n\n/mcp list                                # show servers + kind ([stdio]/[http]/[openapi]/[graphql]) + lazy mode\n/mcp remove mytools                      # disconnect\n/mcp lazy [on|off]                       # toggle lazy tool loading (default: on)\n```\n\nRemote servers use the **Streamable HTTP** transport. Auth values support `env:VAR`\n\nand\n`file:PATH`\n\nso tokens aren't typed inline. **OAuth** (`--oauth`\n\n) handles discovery, dynamic\nclient registration, the PKCE browser login, and automatic token refresh — tokens are cached\nunder `~/.kodiqa/oauth/`\n\nand reused across sessions.\n\nMCP tools are automatically available to the AI alongside built-in tools, and work with lazy mode (discovered on demand).\n\nMost agents paste **every** MCP tool's JSON schema into **every** request, so a big\nMCP server quietly taxes every turn. Kodiqa doesn't. When servers are connected,\nit exposes **3 fixed meta-tools** and lets the model discover tools on demand:\n\n| Per-turn tool-schema cost (50-tool server) | |\n|---|---|\n| Inject all schemas (typical agents) | ~5,300 tokens |\nKodiqa lazy mode |\n~310 tokens (~94% less) |\n\n`mcp_search`\n\n— find tools by keyword, ranked by how often you've used them`mcp_tool_schema`\n\n— fetch one tool's full schema only when needed`mcp_call`\n\n— run a tool by name\n\nIt's **on by default**, fully automatic (the model drives it), and the cost stays\nflat no matter how many MCP tools you connect. Toggle with `/mcp lazy off`\n\n, or set\n`mcp_lazy: false`\n\nin settings to always inject every schema.\n\n| Shortcut | Full Model | Best For |\n|---|---|---|\n`/model fast` |\nqwen3:30b-a3b | Fast answers, 30B brain at 3B speed (MoE) |\n`/model qwen` |\nqwen3:14b | General purpose, smart, thinking mode |\n`/model coder` |\nqwen3-coder | Coding agent (default without API key) |\n`/model reason` |\nphi4-reasoning | Deep reasoning, math, logic |\n`/model gpt-local` |\ngpt-oss | OpenAI's open model, reasoning + agentic |\n\n| Shortcut | Full Model | Price (in/out per MTok) |\n|---|---|---|\n`/model claude` / `sonnet` |\nclaude-sonnet-4-6 | $3/$15 |\n`/model opus` |\nclaude-opus-4-6 | $5/$25 |\n`/model haiku` |\nclaude-haiku-4-5 | $1/$5 |\n`/model sonnet-4.5` |\nclaude-sonnet-4-5 | $3/$15 |\n`/model opus-4.5` |\nclaude-opus-4-5 | $5/$25 |\n`/model opus-4.1` |\nclaude-opus-4-1 | $15/$75 |\n`/model sonnet-4` / `opus-4` |\nLegacy Claude 4 | varies |\n\n| Shortcut | Full Model | Best For |\n|---|---|---|\n`/model qwen3.5` / `qwen-plus` |\nqwen3.5-plus | Newest flagship |\n`/model qwen-max` / `qwen3-max` |\nqwen3-max | Most powerful |\n`/model qwen-coder` / `qwen3-coder` |\nqwen3-coder-plus | Coding |\n`/model qwen-coder-next` |\nqwen3-coder-next | Newest coder |\n`/model qwq` |\nqwq-plus | Deep reasoning |\n`/model qwen-flash` |\nqwen3.5-flash | Fast |\n`/model qwen-turbo` |\nqwen-turbo | Cheapest/fastest |\n`/model qwen-math` |\nqwen-math-plus | Math |\n`/model glm-5` |\nglm-5 | Third-party (Coding Plan) |\n`/model kimi` |\nkimi-k2.5 | Third-party (Coding Plan) |\n\n**Qwen Coding Plan**: If you have a Coding Plan subscription (`sk-sp-`\n\nkey), `/key qwen`\n\nauto-detects it and configures the dedicated endpoint. Supports $3/mo Lite and $15/mo Pro tiers.\n\n| Shortcut | Full Model | Best For |\n|---|---|---|\n`/model gpt` |\ngpt-4o | General purpose flagship |\n`/model gpt-mini` |\ngpt-4o-mini | Fast and cheap |\n`/model o3` |\no3 | Deep reasoning |\n`/model o3-mini` |\no3-mini | Fast reasoning |\n`/model o4-mini` |\no4-mini | Latest reasoning |\n\n| Shortcut | Full Model | Best For |\n|---|---|---|\n`/model deepseek` |\ndeepseek-chat | V3 general purpose |\n`/model deepseek-r1` |\ndeepseek-reasoner | R1 deep reasoning |\n\n| Shortcut | Full Model | Best For |\n|---|---|---|\n`/model llama` |\nllama-3.3-70b-versatile | Best open model |\n`/model llama-small` |\nllama-3.1-8b-instant | Ultra fast |\n`/model gemma` |\ngemma2-9b-it | Google's open model |\n`/model mixtral` |\nmixtral-8x7b-32768 | MoE, 32K context |\n\n| Shortcut | Full Model | Best For |\n|---|---|---|\n`/model mistral` |\nmistral-large-latest | Flagship |\n`/model mistral-small` |\nmistral-small-latest | Fast and cheap |\n`/model codestral` |\ncodestral-latest | Code generation |\n\nNew models are auto-discovered from the APIs — they appear in `/model`\n\nand `/models`\n\nautomatically.\n\nYou can also use full model names: `/model qwen3:14b`\n\nor `/model claude-opus-4-6`\n\nRun Kodiqa as a small local HTTP server that your editor (VS Code, Zed, Neovim, …) can call:\n\n```\nkodiqa --serve            # prints the URL + an auth token\n# or, inside a session:  /serve\n```\n\nIt binds to `127.0.0.1`\n\nonly and requires the printed bearer token. Set a **stable**\ntoken (handy for editor config) with `KODIQA_BRIDGE_TOKEN=…`\n\n, and a fixed port with\n`--port`\n\n. Protocol:\n\n| Endpoint | ||\n|---|---|---|\n`GET /health` |\nno auth | `{status, model, version}` |\n`POST /ask` |\n`{prompt, context?}` |\n`{response}` — one-shot model answer (no history, no file edits) |\n`GET /diagnostics?file=PATH` |\n`{file, diagnostics}` from the LSP (start one with `/lsp` ) |\n\n```\ncurl -s localhost:PORT/ask -H \"Authorization: Bearer TOKEN\" \\\n  -d '{\"prompt\":\"explain this\",\"context\":\"def f(): return 1\"}'\n```\n\n`/ask`\n\nis a safe, non-streaming Q&A call — ideal for \"ask Kodiqa about the selection.\"\nA minimal reference client is in [ examples/bridge_client.py](/Kodiqa-Solutions/Kodiqa-agent/blob/main/examples/bridge_client.py); editor\nextensions are thin clients over this API.\n\nBy default, Kodiqa hides code blocks during streaming and shows progress instead:\n\n```\nKodiqa  I'll create the project structure...\n\n  ⠋ Writing code (javascript)... 45 lines, 1,890 chars\n  ╰─ code block: javascript 45 lines, 1,890 chars\n\nNow the package.json:\n\n  ⠋ Writing code (json)... 12 lines, 340 chars\n  ╰─ code block: json 12 lines, 340 chars\n\n  1,204 in / 847 out | 42.3 tok/s | ($0.0061 / session: $0.0183)\n```\n\nUse `/verbose`\n\nto toggle full output (see all code as it streams).\n\nUse `/key`\n\nto add API keys interactively (shows all 6 providers), or specify directly:\n\n| Provider | Command | Get Key |\n|---|---|---|\n| Claude | `/key claude` |\n|\n\n`/key openai`\n\n[https://platform.openai.com/api-keys](https://platform.openai.com/api-keys)`/key deepseek`\n\n[https://platform.deepseek.com/api_keys](https://platform.deepseek.com/api_keys)`/key groq`\n\n[https://console.groq.com/keys](https://console.groq.com/keys)`/key mistral`\n\n[https://console.mistral.ai/api-keys](https://console.mistral.ai/api-keys)`/key qwen`\n\n[https://bailian.console.alibabacloud.com/?apiKey=1](https://bailian.console.alibabacloud.com/?apiKey=1)Then switch: `/model claude`\n\n, `/model gpt`\n\n, `/model deepseek`\n\n, `/model llama`\n\n, `/model mistral`\n\n, `/model qwen3.5`\n\n```\nread the file ~/.zshrc\ncreate a file called hello.py with a hello world program\nedit main.py and change the function name from foo to bar\nmove config.json to config.backup.json\ndelete the temp file at ~/scratch.txt\nrename all occurrences of \"oldName\" to \"newName\" in utils.py\nundo the last edit to main.py\nfind all .py files in ~/projects\nsearch for \"TODO\" in my project\nrun npm install\nshow me the git status\ncommit these changes with message \"fix login bug\"\nsearch the web for kotlin coroutines tutorial\nfetch the content from https://some-docs-page.com\nremember that I prefer Kotlin for Android development\nwhat do you remember about my preferences?\nlook at this screenshot ~/Desktop/screenshot.png\nread the PDF ~/Documents/report.pdf\npaste what's on my clipboard\ncopy this code to clipboard\n/scan ~/myapp\nnow explain what this project does\nfind any bugs in this code\n```\n\n**Auto-approved**: reading files, listing dirs, searching, web, memory, clipboard read, undo** Asks permission**: writing/editing files, running commands, git commits, delete, move, clipboard write, patches** Workspace boundary**: asks before accessing files outside current working directory (Allow once / Allow directory / Deny)** Blocked**:`rm -rf /`\n\n,`sudo rm`\n\n,`mkfs`\n\n,`dd`\n\n, fork bombs, etc.**Permission modes**:`/mode default`\n\n(confirm all) →`/mode relaxed`\n\n(auto file ops) →`/mode auto`\n\n(no confirms)\n\n| Category | Tools |\n|---|---|\n| File ops | read_file, write_file, edit_file, multi_edit, search_replace_all, create_directory, move_file, delete_file, undo_edit |\n| Search | glob, grep, list_dir, tree |\n| Commands | run_command |\n| Git | git_status, git_diff, git_commit |\n| Web | web_search, web_fetch |\n| Media | read_image, read_pdf |\n| Memory | memory_store, memory_search |\n| Clipboard | clipboard_read, clipboard_write |\n| Patch | diff_apply |\n| UX | ask_user |\n\n```\n~/LLMS/kodiqa/\n  kodiqa.py          # Main agent (5699 lines)\n  actions.py         # 26 action handlers (1022 lines)\n  tools.py           # Tool schemas (461 lines)\n  config.py          # Config, themes, provider registry (585 lines)\n  web.py             # Web search + page fetch (194 lines)\n  memory.py          # SQLite persistent memory (82 lines)\n  mcp.py             # MCP client (176 lines)\n  templates.py       # 5 project templates (61 lines)\n  lsp.py             # LSP client (220 lines)\n  embeddings.py      # RAG vector store (93 lines)\n  repomap.py         # Tree-sitter/regex repo map (157 lines)\n  bin/kodiqa         # Global install script\n  tests/             # 317 tests (pytest)\n  pyproject.toml     # Package config (pip install .)\n  requirements.txt   # Dependencies\n\n~/.kodiqa/\n  config.json        # User-editable config (overrides defaults)\n  settings.json      # API keys, default model\n  memory.db          # Persistent memories\n  session.json       # Auto-saved conversation\n  input_history      # prompt_toolkit FileHistory\n  error.log          # Error log (capped 1MB)\n  KODIQA.md          # Global context (always in system prompt)\n  projects/          # Per-project context files\n  checkpoints/       # Conversation checkpoints\n  exports/           # Exported session markdown files\n```\n\n- All prompts use\n**arrow keys**— no typing letters, just navigate and press Enter - Default is\n**compact mode**— code hidden during streaming, progress shown instead - Use\n`/verbose`\n\nwhen you want to see code as it streams - Use\n`/mode relaxed`\n\nto skip file edit confirmations - Use\n`/plan`\n\nfor complex tasks — review the plan before implementation - Use\n`/accept`\n\nto toggle batch edit review on/off - Use\n`/branch save`\n\nbefore experimenting — switch back if it goes wrong - Use\n`/mcp add`\n\nto connect external tool servers - Use\n`/checkpoint`\n\nbefore risky operations,`/restore`\n\nto roll back - Use\n`/export`\n\nto save a conversation for later reference - Use\n`/tokens`\n\nto monitor API costs and context usage - Use\n`/model`\n\nwith no arg for interactive picker - Use\n`/key`\n\nwith no arg to choose provider - Tab complete works for commands, models, and file paths\n- New API models appear automatically — no code updates needed\n- Memories persist forever across sessions\n- Arrow keys work: up/down for history, left/right to edit\n- Sessions auto-save — restart if anything goes wrong\n- Session summary auto-saved on quit — next start has full context\n- Type\n`quit`\n\nor`exit`\n\n(no slash needed) to exit - Ollama starts/stops automatically — stops on cloud switch, restarts on local switch\n\n```\npytest -v          # 317 tests, all passing\n```\n\n- Python 3.9+\n- Ollama installed (\n`/Applications/Ollama.app`\n\non macOS) — or just use API models - Models pulled automatically on first run, or\n`ollama pull qwen3-coder`\n\n- (Optional) Claude API key for Claude models\n- (Optional) DashScope API key for Qwen API models\n\nKodiqa is open source under the [AGPL-3.0 License](/Kodiqa-Solutions/Kodiqa-agent/blob/main/LICENSE).\n\nFor commercial use without AGPL obligations, see [Commercial License](/Kodiqa-Solutions/Kodiqa-agent/blob/main/COMMERCIAL_LICENSE.md) or contact [eniz@kodiqa.com](mailto:eniz@kodiqa.com).", "url": "https://wpnews.pro/news/show-hn-kodiqa-agent", "canonical_source": "https://github.com/Kodiqa-Solutions/Kodiqa-agent", "published_at": "2026-06-06 20:50:55+00:00", "updated_at": "2026-06-06 21:16:37.929238+00:00", "lang": "en", "topics": ["ai-agents", "ai-tools", "ai-products", "large-language-models", "ai-startups"], "entities": ["Kodiqa", "Claude Code", "Aider", "Gemini CLI", "OpenCode", "Ollama", "Claude", "OpenAI"], "alternates": {"html": "https://wpnews.pro/news/show-hn-kodiqa-agent", "markdown": "https://wpnews.pro/news/show-hn-kodiqa-agent.md", "text": "https://wpnews.pro/news/show-hn-kodiqa-agent.txt", "jsonld": "https://wpnews.pro/news/show-hn-kodiqa-agent.jsonld"}}