[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-93449":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":45,"readmeContent":46,"aiSummary":10,"trendingCount":16,"starSnapshotCount":16,"syncStatus":47,"lastSyncTime":48,"discoverSource":49},93449,"klaatcode","KlaatAI\u002Fklaatcode","KlaatAI","Open-source AI coding agent for the terminal. Claude Code-grade accuracy with smart model routing — uses the right AI model for each task, cutting costs 10x. Supports Claude, GPT, Gemini, DeepSeek & more.","https:\u002F\u002Fklaatai.com",null,"TypeScript",214,70,12,14,0,32,49,113,90.07,"Other",false,"main",[25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],"agentic-ai","ai","ai-agents","ai-coding","ai-model","ai-tools","artificial-intelligence","calude-code","claude","cli","code-generation","coding-agent","deepseek","klaatai","llm","open-source","openai","openclaw","pair-programming","terminal","2026-07-22 04:02:09","\u003Cp align=\"center\">\n  \u003Ca href=\"https:\u002F\u002Fklaatai.com\">\n    \u003Cpicture>\n      \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fklaatai.com\u002Flogos\u002FKlaat_white.png\" \u002F>\n      \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fklaatai.com\u002Flogos\u002FKlaat_black.png\" \u002F>\n      \u003Cimg src=\"https:\u002F\u002Fklaatai.com\u002Flogos\u002FKlaat_black.png\" width=\"180\" alt=\"KlaatAI Logo\" \u002F>\n    \u003C\u002Fpicture>\n  \u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Ch1 align=\"center\">Klaat Code\u003C\u002Fh1>\n\n\u003Cp align=\"center\">\n  \u003Cstrong>The terminal-native AI coding agent, powered by Klaatu smart model routing.\u003C\u002Fstrong>\u003Cbr\u002F>\n  Claude Code-grade accuracy, at a fraction of the cost — and it's reproducible, not a marketing claim.\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n\n```bash\nnpm install -g klaatcode\nklaatcode\n```\n\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Ca href=\"LICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache%202.0-blue.svg\" alt=\"License: Apache 2.0\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FKlaatAI\u002Fklaatcode\u002Factions\">\u003Cimg src=\"https:\u002F\u002Fgithub.com\u002FKlaatAI\u002Fklaatcode\u002Factions\u002Fworkflows\u002Fklaatcode-ci.yml\u002Fbadge.svg\" alt=\"CI\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002Fklaatcode\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fklaatcode.svg?color=purple\" alt=\"npm version\" \u002F>\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fdiscord.gg\u002F93Ryfc96e\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDiscord-Join%20us-7289da?logo=discord&logoColor=white\" alt=\"Discord\" \u002F>\u003C\u002Fa>\n\u003C\u002Fp>\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"assets\u002Fklaatcode.jpg\" alt=\"KlaatCode CLI demo\" width=\"720\" \u002F>\n\u003C\u002Fp>\n\n---\n\n## What is KlaatAI?\n\n**KlaatAI** is an AI platform built around **Klaatu-o1**, a small, fast, agentic router model. Instead of sending every request to one large, expensive model, Klaatu-o1 reads what you're asking, decides which model tier actually needs to handle it, and dispatches accordingly — automatically, per request. Three products sit on top of it: **KlaatAI Web Chat** (browser), **Klaat Code** (this CLI), and the **KlaatAI API** for developers building on the same router directly.\n\n## What is Klaatu?\n\n**Klaatu** is the routing brain — a hosted service, not something that runs on your machine. Every message you send from Klaat Code goes to Klaatu, which classifies it and routes it through one of five cost tiers (`nano → fast → code → reason → heavy`), escalating automatically when a task turns out harder than it looked, and never charging you frontier prices for a trivial turn. Tool calls inside a single request — reads, edits, shell commands, searches — are free; only your messages count against quota. This is also the architectural reason Klaat Code can be open source without giving away the thing that makes it good: **the client is a thin terminal to a service**, the same relationship `gh` has to GitHub. The intelligence — routing decisions, model health tracking, pricing, the code-graph index — lives server-side, at [klaatai.com](https:\u002F\u002Fklaatai.com).\n\n## What is Klaat Code, and how is it different?\n\nKlaat Code is this repo: a terminal-native coding agent you install once and run in any project. It reads your code, edits files, runs commands, and verifies its own work — asking permission before anything risky. Functionally it sits in the same category as **Claude Code**, **opencode**, **Codex CLI**, and **Aider** — same agentic loop, same terminal-first philosophy — but three things are genuinely different:\n\n1. **Smart per-request model routing.** None of the above route per-message to a cost tier the way Klaatu does. You get frontier-level reasoning when a task needs it and pay nano\u002Ffast prices for everything else, automatically — not a model you pick once per session.\n2. **A real code knowledge graph**, not just grep. Your project is indexed into a call graph with semantic search; the agent queries symbols, callers, callees, and blast-radius instead of reading whole files — typically 5–15× fewer tokens per task.\n3. **The comparison is reproducible.** The [benchmark below](#benchmarks) isn't a claim — clone this repo, run `bun run bench`, and verify the numbers yourself against the same fixtures we used.\n\n## Benchmarks\n\nSame 30 fixtures, same prompts, same verify command, run against KlaatCode, Claude Code, opencode, and Grok Build in one harness. Full methodology and honesty notes: [`bench\u002FREADME.md`](bench\u002FREADME.md).\n\n| Metric | Klaat Code | Claude Code |\n|---|---|---|\n| Solved | 30\u002F30 | 30\u002F30 |\n| Cost per solved task | **$0.026** | $0.146 |\n| Cost ratio | **18%** | (ref) |\n| Tokens per solved task | 28% | (ref) |\n\nEqual accuracy, ~5.5× cheaper. Reproduce it:\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FKlaatAI\u002Fklaatcode.git && cd klaatcode\nbun install\nbun run bench                              # klaatcode\nbun bench\u002Fcompare-agents.ts --agent claude # or opencode \u002F grok\n```\n\n---\n\n## Install\n\nPick any method — all install a standalone compiled binary (no Node or Bun runtime required at runtime):\n\n**npm (Node ≥ 18 or Bun ≥ 1)**\n```bash\nnpm install -g klaatcode\n```\n> **macOS `EACCES` error?** Prefix with `sudo`, or fix npm's global prefix once:\n> ```bash\n> mkdir -p ~\u002F.npm-global && npm config set prefix ~\u002F.npm-global\n> echo 'export PATH=\"$HOME\u002F.npm-global\u002Fbin:$PATH\"' >> ~\u002F.zshrc && source ~\u002F.zshrc\n> ```\n\n**One-line installer (macOS\u002FLinux)**\n```bash\ncurl -fsSL https:\u002F\u002Fklaatai.com\u002Fapi\u002Finstall | bash\n```\n\n**Windows (PowerShell)**\n```powershell\nirm https:\u002F\u002Fklaatai.com\u002Fapi\u002Finstall-windows | iex\n```\n\n**Homebrew (macOS\u002FLinux)**\n```bash\nbrew install KlaatAI\u002Fklaatcode\u002Fklaatcode\n```\n\nAll methods install both `klaatcode` and `klaatai` — identical commands, use whichever you like.\n\n## Quick Start\n\n```bash\nklaatcode login                     # browser sign-in — your KlaatAI account, no API keys to manage\nklaatcode                           # open current directory\nklaatcode ~\u002Fprojects\u002Fmy-app         # open a specific project\nklaatcode run \"Fix all TS errors\"   # headless \u002F CI mode\nklaatcode whoami                    # check auth\n```\n\n---\n\n## Features\n\n### Smart Model Routing\n\nEach request is classified and routed to one of five tiers by Klaatu. You see which tier answered (badge in the header) and why.\n\n```\n\u002Ftier           # lock a tier, or open the picker\n\u002Ftier smart     # restore automatic routing\n\u002Fmodel          # switch between Klaatu and your own third-party models\n\u002Fwhy            # explain the last routing decision\n\u002Fcost           # session spend + what routing saved you\n```\n\n| Tier | Used for |\n|---|---|\n| `nano` | Trivial turns, completions |\n| `fast` | Quick questions, small edits |\n| `code` | Default — most coding work |\n| `reason` | Debugging, architecture, tricky logic |\n| `heavy` | Large refactors, hardest problems |\n\nThe router escalates automatically when a task turns out harder than it looked and de-escalates when you don't need the big guns. Tool rounds, retries, and failovers are never billed — one user message = one request.\n\n**Bring your own model.** Don't want Klaatu for a task? Add any OpenAI-compatible endpoint and switch to it per-session:\n```\n\u002Fmodel add gpt4o https:\u002F\u002Fapi.openai.com gpt-4o env:OPENAI_API_KEY\n\u002Fmodel gpt4o\n```\n\n### Post-Edit Diagnostics — the Model Sees Its Own Mistakes\n\nAfter a successful edit, Klaat Code runs your project's typechecker\u002Flinter on the changed file (auto-detects eslint\u002Fbiome, ruff, gofmt, or a configured command) and hands any errors straight back to the model in the same turn — it fixes them before returning control to you, instead of costing you a round-trip.\n\n### Terminal UI with Real Syntax Highlighting\n\nMarkdown responses render with per-language syntax highlighting directly in the terminal. Code blocks show language labels and are mouse-selectable (drag to auto-copy).\n\n- Streaming responses with live token\u002Fcost counter\n- Slash-command autocomplete — type `\u002F` for a fuzzy-filtered live suggestion strip\n- Collapsible tool output and thinking blocks — click to expand\n- Full mouse support: click, scroll, drag-select\n- 13 themes: `dark`, `light`, `dracula`, `nord`, `ayu`, `catppuccin`, `gruvbox`, `neon`, `synthwave`, `ember`, `matrix`, `cobalt`, `midnight` (`\u002Ftheme`)\n- Vim keybindings (`\u002Fvimmode on`)\n- Sidebar: usage, context window fill, MCP servers, routing analytics\n- Diffs render as colored, syntax-highlighted unified-diff blocks — including multi-file patches\n\n### Real Plan Mode\n\nSwitch to Plan mode (`Tab`) and the model gets only read-only tools — it researches and proposes a plan, you approve, it switches back to Build with the full toolset to implement. No accidental edits while you're just trying to think something through.\n\n### Built-in Tools\n\n| Tool | What it does |\n|---|---|\n| `read_file` | Read files with line numbers, offset\u002Flimit for big files |\n| `write_file` | Create\u002Foverwrite files (parent dirs auto-created) |\n| `edit_file` \u002F `multi_edit` | Surgical string replacement, single or batched atomic |\n| `apply_patch` | Multi-file envelope-diff patch — add\u002Fupdate\u002Fdelete\u002Fmove, applied atomically |\n| `glob` \u002F `grep` \u002F `list_dir` | Find files and search code |\n| `run_command` | Execute shell commands (permission-gated) |\n| `web_fetch` \u002F `web_search` | Read pages, search the web |\n| `todo_write` \u002F `todo_read` | Persistent task list the agent maintains |\n| `ask_user` | The agent can ask you a blocking multiple-choice question mid-task |\n| `delegate_task` | Spawn a sub-agent for a scoped piece of work, optionally in the background |\n| `task_status` | Check on or list background sub-agents |\n| `project_graph_query` | Query the code graph: symbols, callers, callees |\n| `project_semantic_search` | Meaning-based code search (Pro) |\n| `file_outline` | Symbol outline of a file without reading it all |\n| `impact_check` | Blast-radius analysis: what breaks if this changes |\n| `browser_*` | Navigate, read, and click pages (5 tools) |\n\n### Multi-Agent Workflows\n\nThe agent can delegate scoped work to sub-agents with their own context — keeping your main conversation small and cheap. Sub-agent tool rounds are free like all tool calls.\n\n```\n> explore the auth and billing modules, then implement token refresh\n✻ delegate_task: \"map auth module structure\" …\n✻ delegate_task: \"map billing module usage of tokens\" …\n```\n\nSub-agents can also run **in the background** (`background: true`): you keep chatting while they work, a `◔ N bg agents` chip tracks them, and results are injected into the conversation when they finish (`task_status` \u002F `\u002Fagents` to check in).\n\n### Context Management & Compaction\n\nLong sessions stay affordable without losing the thread:\n\n- **Every request** is mechanically compacted: thinking blocks stripped, stale tool output truncated by usefulness (superseded file reads and consumed search results trimmed hardest), oldest turns dropped last.\n- **Compaction budget scales to your active tier's context window** — a session pinned to `nano` compacts harder than one on `heavy`, so requests never overflow the smaller model's window.\n- **Automatic summarization** kicks in past the budget: the session is summarized on the cheapest tier into task state, files touched, and decisions, then the conversation continues seamlessly.\n- `\u002Fcompact` triggers it manually; the sidebar shows context-window fill so you're never surprised.\n- Code-graph tools mean the agent rarely needs whole files in context in the first place.\n\n### Sessions\n\nEvery conversation is saved as a transcript in `~\u002F.klaatai\u002Fsessions\u002F`.\n\n```\n\u002Fsessions       # list saved sessions\n\u002Fresume \u003Cid>    # pick up exactly where you left off\n\u002Fshare          # export session to markdown\n```\n\n### Permissions\n\nThree-layer model — safe read-only tools run silently; everything else asks:\n\n- **Allow once \u002F this session \u002F always \u002F deny** prompts, persisted to `~\u002F.klaatai\u002Fpermissions.json`\n- Glob allow\u002Fdeny lists for shell commands (`rm -rf \u002F`, fork bombs, etc. denied by default)\n- Writes sandboxed to the project directory by default; hard-denied system paths (`\u002Fetc`, `~\u002F.ssh`, …) refused even with the sandbox off\n\n```json\n{\n  \"allowed_commands\": [\"git status\", \"git diff *\"],\n  \"denied_commands\":  [\"rm -rf \u002F\"],\n  \"trusted_tools\": [\"read_file\", \"glob\", \"grep\"]\n}\n```\n\n### MCP (Model Context Protocol)\n\nFull MCP client, both transports:\n\n- **stdio** — local servers, configured in `.klaatai\u002Fmcp.json`, built-in presets (filesystem, GitHub, Postgres, Puppeteer, Brave Search, Fetch, …)\n- **Streamable HTTP** — remote servers via `\"url\"` config or `\u002Fmcp add \u003Curl>`; SSE and JSON responses, session management, and **OAuth 2.1** (discovery + dynamic client registration + PKCE browser flow) when the server requires auth — tokens cached in `~\u002F.klaatai\u002Fmcp-oauth.json`\n\nManage live with `\u002Fmcp`.\n\n### Git Integration\n\n```\n\u002Fdiff           # show git diff\n\u002Freview         # AI code review of current changes\n\u002Fcommit         # AI-generated commit message + confirm\n\u002Fundo           # undo last AI file changes\n\u002Fcheckpoint     # snapshot project state\n\u002Frollback       # restore a checkpoint\n```\n\n### Skills — Reusable Prompt Templates\n\nSave prompts as `.md` files, invoke by name. Project skills in `.klaatai\u002Fskills\u002F`, global in `~\u002F.klaatai\u002Fskills\u002F`.\n\n```\n\u002Fskill list\n\u002Fskill fix-types\n\u002Fskill new fix-types     # create in $EDITOR\n```\n\n### Hooks — Lifecycle Automation\n\nRun shell commands on agent lifecycle events. Hooks receive a JSON payload on stdin (tool name, arguments, result) plus `KLAATAI_*` env vars, can be scoped with a `matcher` regex, and `before_tool` hooks can **block** a tool call (exit code 2, or print `{\"decision\":\"block\",\"reason\":\"…\"}`).\n\n```json\n\u002F\u002F .klaatai\u002Fhooks.json\n{\n  \"after_message\": [\"afplay \u002FSystem\u002FLibrary\u002FSounds\u002FGlass.aiff\"],\n  \"before_tool\": [\n    { \"matcher\": \"run_command\", \"command\": \".\u002Fscripts\u002Fguard-shell.sh\" }\n  ],\n  \"after_tool\":     [\"notify-send \\\"$KLAATAI_TOOL_NAME done\\\"\"]\n}\n```\n\nEvents: `before_message` · `after_message` · `before_tool` · `after_tool`\n\n### Project Rules\n\n`.klaatai\u002Frules.md` in your repo is injected into every session — coding standards, architecture notes, dos and don'ts. `\u002Finit` auto-generates one from your tech stack. `AGENTS.md` is also respected.\n\n### Plugins\n\nCustom tools as JavaScript modules — `~\u002F.klaatai\u002Fplugins\u002F*.js` (global) or `.klaatai\u002Ftools\u002F*.js` (project). `\u002Fplugin list` · `\u002Fplugin reload`.\n\n---\n\n## Full CLI + Command Reference\n\nThis README covers the highlights. For every shell flag, slash command, config key, and MCP\u002Fhooks\u002Fskills detail: **[klaatai.com\u002Fdocs](https:\u002F\u002Fklaatai.com\u002Fdocs)**.\n\n## Slash Commands\n\n| Command | Description |\n|---|---|\n| `\u002Fhelp` | Show all commands |\n| `\u002Ftier [name]` | Lock a Klaatu routing tier, or open the picker |\n| `\u002Fmodel` | Switch between Klaatu and custom third-party models |\n| `\u002Fwhy` | Explain last routing decision |\n| `\u002Fcost` | Session cost + savings |\n| `\u002Fcompact` | Summarize context to free the window |\n| `\u002Fdiff [file]` · `\u002Freview [ref]` · `\u002Fcommit` | Git workflows |\n| `\u002Fundo` · `\u002Fcheckpoint [label]` · `\u002Frollback [id]` | Safety nets |\n| `\u002Ftest [args]` | Run tests (auto-detects Bun\u002FVitest\u002FJest\u002Fpytest\u002FGo\u002FCargo) |\n| `\u002Fskill \u003Cname>` · `\u002Fhooks` | Skills and hooks |\n| `\u002Finit` | Generate project rules from your stack |\n| `\u002Fsessions` · `\u002Fresume \u003Cid>` · `\u002Fshare` | Session management |\n| `\u002Fmcp` | Manage MCP servers |\n| `\u002Fagents` | List agent personas + running background sub-agents |\n| `\u002Fperms` | Review tool permissions |\n| `\u002Ftheme \u003Cname>` · `\u002Fvimmode on\\|off` | UI |\n| `\u002Flogout` | Sign out and clear stored credentials |\n| `\u002Fdoctor` | Diagnose auth, API, MCP, project health |\n| `\u002Fclear` | Clear chat |\n\nTyping `\u002F` shows a live, fuzzy-filtered autocomplete strip for all of the above.\n\n## Keyboard Shortcuts\n\n| Shortcut | Action |\n|---|---|\n| `ctrl+p` | Command palette |\n| `ctrl+r` | Fuzzy history search |\n| `ctrl+v` | Attach image from clipboard (screenshots) |\n| `ctrl+y` | Copy last AI response |\n| `ctrl+b` | Collapse\u002Fexpand thinking blocks |\n| `ctrl+d` | Quit |\n| `ctrl+c` \u002F `esc` | Cancel streaming |\n| `ctrl+x ctrl+e` | Compose message in `$EDITOR` |\n| `@` | Fuzzy file picker — inserts file reference |\n| `!cmd` | Run shell command, inject output |\n| `Tab` | Switch Build \u002F Plan mode |\n| Mouse drag | Select + auto-copy |\n\n\u003Cdetails>\n\u003Csummary>\u003Cb>Vim mode\u003C\u002Fb> (\u003Ccode>\u002Fvimmode on\u003C\u002Fcode>)\u003C\u002Fsummary>\n\n| Key | Action |\n|---|---|\n| `esc` | NORMAL mode |\n| `i \u002F a \u002F A \u002F I` | INSERT mode |\n| `h \u002F l` | Move cursor |\n| `j \u002F k` | Scroll chat |\n| `w \u002F b \u002F e` | Word motion |\n| `0 \u002F $` | Line start \u002F end |\n| `dd` \u002F `D` | Clear input \u002F kill to EOL |\n| `gg \u002F G` | Top \u002F bottom |\n| `ctrl+u \u002F ctrl+d` | Half-page scroll |\n\n\u003C\u002Fdetails>\n\n---\n\n## Headless \u002F CI Mode\n\n```bash\nklaatcode run \"Summarise CHANGELOG.md\"                 # streams to stdout\necho \"Explain this function\" | klaatcode run -          # pipe input\nklaatcode run \"Fix type errors\" --model fast            # with options\nklaatcode run \"Security-check auth.ts\" \u003C auth.ts        # in CI\n```\n\n```yaml\n# GitHub Actions\n- name: Fix lint errors\n  env:\n    KLAATAI_API_KEY: ${{ secrets.KLAATAI_API_KEY }}\n  run: klaatcode run --model code \"Fix all ESLint errors and commit\"\n```\n\n## API Server Mode\n\n```bash\nklaatcode serve --port 4200\n```\n\n- `GET  \u002Fv1\u002Fhealth` — health check\n- `GET  \u002Fv1\u002Finfo` — session info\n- `POST \u002Fv1\u002Fchat` — chat with SSE streaming\n- `POST \u002Fv1\u002Frun` — single prompt → SSE stream\n\n`klaatcode web` serves a browser UI on top of the same server.\n\n## Configuration\n\n`~\u002F.klaatai\u002Fconfig.json`:\n\n```json\n{\n  \"baseUrl\": \"https:\u002F\u002Fapi.klaatai.com\",\n  \"routingDisplay\": \"minimal\",\n  \"theme\": \"dark\",\n  \"vimMode\": false\n}\n```\n\n| Key | Values | Description |\n|---|---|---|\n| `routingDisplay` | `off` \u002F `minimal` \u002F `full` | Routing detail in chat header |\n| `theme` | see theme list above | UI theme |\n| `vimMode` | `true` \u002F `false` | Vim keybindings |\n| `sandbox` | `project` \u002F `off` | Write sandbox scope |\n| `diagnostics` | `on` \u002F `off` | Post-edit typecheck\u002Flint feedback loop |\n| `customModels` | array | Third-party OpenAI-compatible models (see `\u002Fmodel add`) |\n\nFull reference, incl. every config key: [klaatai.com\u002Fdocs\u002Fconfiguration](https:\u002F\u002Fklaatai.com\u002Fdocs\u002Fconfiguration).\n\n## Directory Structure\n\n```\n~\u002F.klaatai\u002F\n  credentials.json    # auth tokens (never committed, never shared)\n  config.json         # user preferences\n  permissions.json    # tool permission rules\n  mcp.json            # global MCP servers\n  mcp-oauth.json      # cached OAuth tokens for remote MCP servers\n  hooks.json          # global lifecycle hooks\n  sessions\u002F           # saved session transcripts\n  skills\u002F             # global prompt skills (.md)\n  plugins\u002F            # custom tool plugins (.js)\n  todos.json          # persistent todo list\n\n.klaatai\u002F             # project-level (in your repo)\n  rules.md            # project rules (injected every session)\n  mcp.json            # project MCP servers\n  hooks.json          # project lifecycle hooks\n  skills\u002F             # project prompt skills\n  tools\u002F              # project tool plugins (.js)\n```\n\n## How Authentication Works\n\nSign-in is browser-based OAuth against your KlaatAI account — there are no API keys to generate or paste. `klaatcode login` opens a browser tab, you authenticate with KlaatAI, and a short-lived JWT plus refresh token are stored locally in `~\u002F.klaatai\u002Fcredentials.json` (mode `0600`, never synced or logged). The CLI silently refreshes the token in the background and recovers automatically from expiry mid-session; `klaatcode logout` clears everything. Every chat request goes straight to Klaatu over HTTPS with that token — the server enforces your plan's quota and never proxies your credentials anywhere else.\n\n## Contributing\n\nWe welcome contributions — see [CONTRIBUTING.md](CONTRIBUTING.md) for dev setup, the PR process, and what `bun run bench:selfcheck` needs to pass before a PR is reviewed.\n\n## Security\n\nFound a vulnerability? Please don't open a public issue — see [SECURITY.md](SECURITY.md) for how to report it responsibly.\n\n## Roadmap\n\n- LSP tool (go-to-definition, find-references, rename) alongside the existing code graph\n- Git worktree isolation for parallel\u002Frisky sub-agent work\n- Published SWE-bench Verified scores\n- Team-shared code graph, `klaat org` commands\n\n## Star History\n\n\u003Ca href=\"https:\u002F\u002Fstar-history.com\u002F#KlaatAI\u002Fklaatcode&Date\">\n \u003Cpicture>\n   \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=KlaatAI\u002Fklaatcode&type=Date&theme=dark\" \u002F>\n   \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=KlaatAI\u002Fklaatcode&type=Date\" \u002F>\n   \u003Cimg alt=\"Star History Chart\" src=\"https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=KlaatAI\u002Fklaatcode&type=Date\" width=\"600\" \u002F>\n \u003C\u002Fpicture>\n\u003C\u002Fa>\n\n## License\n\nApache License 2.0 © KlaatAI — see [LICENSE](LICENSE).\n\nThe **KlaatAI**, **Klaat Code**, and **Klaatu** names and logos are trademarks of KlaatAI and are not covered by this license — see [LICENSE](LICENSE) for the trademark notice.\n",2,"2026-07-19 02:30:03","CREATED_QUERY"]