{"id":49246363,"url":"https://github.com/dirgha-ai/dirgha-code","last_synced_at":"2026-05-13T12:01:06.801Z","repository":{"id":353651773,"uuid":"1213141996","full_name":"Dirgha-AI/dirgha-code","owner":"Dirgha-AI","description":"AI coding agent for your terminal. Your keys, your machine, any model.","archived":false,"fork":false,"pushed_at":"2026-05-10T12:39:50.000Z","size":29951,"stargazers_count":8,"open_issues_count":11,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-10T14:55:13.514Z","etag":null,"topics":["ai","cli","coding-agent","developer-tools","llm","mcp","terminal"],"latest_commit_sha":null,"homepage":"https://dirgha.ai","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Dirgha-AI.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":"SUPPORT.md","governance":null,"roadmap":"docs/ROADMAP.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":"CLA.md"},"funding":{"github":["dirghaai"],"open_collective":"dirgha","custom":["https://dirgha.ai/contribute"]}},"created_at":"2026-04-17T04:49:38.000Z","updated_at":"2026-05-10T12:39:30.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Dirgha-AI/dirgha-code","commit_stats":null,"previous_names":["dirgha-ai/dirgha-code"],"tags_count":100,"template":false,"template_full_name":null,"purl":"pkg:github/Dirgha-AI/dirgha-code","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dirgha-AI%2Fdirgha-code","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dirgha-AI%2Fdirgha-code/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dirgha-AI%2Fdirgha-code/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dirgha-AI%2Fdirgha-code/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Dirgha-AI","download_url":"https://codeload.github.com/Dirgha-AI/dirgha-code/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Dirgha-AI%2Fdirgha-code/sbom","scorecard":{"id":1246874,"data":{"date":"2026-05-02T22:29:21Z","repo":{"name":"github.com/Dirgha-AI/dirgha-code","commit":"e77314e3eead601976b279d7f4c9ab0e4fd563ab"},"scorecard":{"version":"v5.3.0","commit":"c22063e786c11f9dd714d777a687ff7c4599b600"},"score":5.6,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#code-review"}},{"name":"Security-Policy","score":10,"reason":"security policy file detected","details":["Info: security policy file detected: SECURITY.md:1","Info: Found linked content: SECURITY.md:1","Info: Found disclosure, vulnerability, and/or timelines in security policy: SECURITY.md:1","Info: Found text in security policy: SECURITY.md:1"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#security-policy"}},{"name":"Dependency-Update-Tool","score":10,"reason":"update tool detected","details":["Info: detected update tool: Dependabot: .github/dependabot.yml:1"],"documentation":{"short":"Determines if the project uses a dependency update tool.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#dependency-update-tool"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/scorecard.yml:24","Info: jobLevel 'actions' permission set to 'read': .github/workflows/scorecard.yml:25","Warn: topLevel 'contents' permission set to 'write': .github/workflows/build-vendors.yml:11","Warn: no topLevel permission defined: .github/workflows/ci.yml:1","Warn: topLevel 'contents' permission set to 'write': .github/workflows/publish.yml:15","Warn: topLevel 'contents' permission set to 'write': .github/workflows/release-please.yml:8","Info: topLevel permissions set to 'read-all': .github/workflows/scorecard.yml:15","Info: topLevel 'contents' permission set to 'read': .github/workflows/smoke-providers.yml:14","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"project was created within the last 90 days. Please review its contents carefully","details":["Warn: Repository was created within the last 90 days."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#maintained"}},{"name":"CI-Tests","score":-1,"reason":"no pull request found","details":null,"documentation":{"short":"Determines if the project runs tests before pull requests are merged.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#ci-tests"}},{"name":"Binary-Artifacts","score":8,"reason":"binaries present in source code","details":["Warn: binary detected: a.out:1","Warn: binary detected: vendor/rtk/linux-x64/rtk:1"],"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#binary-artifacts"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#sast"}},{"name":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#license"}},{"name":"Pinned-Dependencies","score":6,"reason":"dependency not pinned by hash detected -- score normalized to 6","details":["Info: Possibly incomplete results: error parsing shell code: \"foo(\" must be followed by ): scripts/release-checklist.sh:66","Info: Possibly incomplete results: error parsing shell code: a command can only contain words and redirects; encountered (: scripts/release-checklist.sh:91","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-vendors.yml:60: update your workflow using https://app.stepsecurity.io/secureworkflow/Dirgha-AI/dirgha-code/build-vendors.yml/main?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build-vendors.yml:96: update your workflow using https://app.stepsecurity.io/secureworkflow/Dirgha-AI/dirgha-code/build-vendors.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-vendors.yml:112: update your workflow using https://app.stepsecurity.io/secureworkflow/Dirgha-AI/dirgha-code/build-vendors.yml/main?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build-vendors.yml:123: update your workflow using https://app.stepsecurity.io/secureworkflow/Dirgha-AI/dirgha-code/build-vendors.yml/main?enable=pin","Warn: npmCommand not pinned by hash: scripts/install.sh:70","Warn: npmCommand not pinned by hash: scripts/verify-install.sh:41","Warn: npmCommand not pinned by hash: .github/workflows/ci.yml:43","Warn: npmCommand not pinned by hash: .github/workflows/publish.yml:78","Info:  19 out of  22 GitHub-owned GitHubAction dependencies pinned","Info:   5 out of   6 third-party GitHubAction dependencies pinned","Info:   4 out of   8 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#cii-best-practices"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#fuzzing"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#vulnerabilities"}},{"name":"Signed-Releases","score":8,"reason":"5 out of the last 5 releases have a total of 5 signed artifacts.","details":["Info: signed release artifact: sbom.cdx.json.sig: https://github.com/Dirgha-AI/dirgha-code/releases/tag/v1.19.0","Info: signed release artifact: sbom.cdx.json.sig: https://github.com/Dirgha-AI/dirgha-code/releases/tag/v1.18.3","Info: signed release artifact: sbom.cdx.json.sig: https://github.com/Dirgha-AI/dirgha-code/releases/tag/v1.18.2","Info: signed release artifact: sbom.cdx.json.sig: https://github.com/Dirgha-AI/dirgha-code/releases/tag/v1.18.1","Info: signed release artifact: sbom.cdx.json.sig: https://github.com/Dirgha-AI/dirgha-code/releases/tag/v1.18.0","Warn: release artifact v1.19.0 does not have provenance: https://api.github.com/repos/Dirgha-AI/dirgha-code/releases/316755776","Warn: release artifact v1.18.3 does not have provenance: https://api.github.com/repos/Dirgha-AI/dirgha-code/releases/316752401","Warn: release artifact v1.18.2 does not have provenance: https://api.github.com/repos/Dirgha-AI/dirgha-code/releases/316748313","Warn: release artifact v1.18.1 does not have provenance: https://api.github.com/repos/Dirgha-AI/dirgha-code/releases/316738735","Warn: release artifact v1.18.0 does not have provenance: https://api.github.com/repos/Dirgha-AI/dirgha-code/releases/316729673"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#signed-releases"}},{"name":"Packaging","score":10,"reason":"packaging workflow detected","details":["Info: Project packages its releases by way of GitHub Actions.: .github/workflows/publish.yml:18"],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#packaging"}},{"name":"Contributors","score":3,"reason":"project has 1 contributing companies or organizations -- score normalized to 3","details":["Info: found contributions from: dirgha ai"],"documentation":{"short":"Determines if the project has a set of contributors from multiple organizations (e.g., companies).","url":"https://github.com/ossf/scorecard/blob/c22063e786c11f9dd714d777a687ff7c4599b600/docs/checks.md#contributors"}}]},"last_synced_at":"2026-05-02T22:30:56.855Z","repository_id":353651773,"created_at":"2026-05-02T22:30:56.855Z","updated_at":"2026-05-02T22:30:56.855Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32981543,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T11:31:52.688Z","status":"ssl_error","status_checked_at":"2026-05-13T11:31:52.072Z","response_time":115,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","cli","coding-agent","developer-tools","llm","mcp","terminal"],"created_at":"2026-04-24T22:02:02.129Z","updated_at":"2026-05-13T12:01:06.761Z","avatar_url":"https://github.com/Dirgha-AI.png","language":"TypeScript","funding_links":["https://github.com/sponsors/dirghaai","https://opencollective.com/dirgha","https://dirgha.ai/contribute"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# Dirgha Code\n\n[![npm](https://img.shields.io/npm/v/@dirgha/code?style=flat-square\u0026color=000)](https://www.npmjs.com/package/@dirgha/code)\n[![License](https://img.shields.io/badge/license-FSL--1.1--MIT-d4a373?style=flat-square)](./LICENSE)\n[![Sponsor](https://img.shields.io/badge/sponsor-%E2%99%A1-c25a4f?style=flat-square)](https://dirgha.ai/contribute)\n\n**Dirgha Code is the open-source CLI coding agent — 17 providers, BYOK, offline-capable, parallel agents, persistent memory, security-audited. One install command. No vendor lock-in.**\n\n\u003c/div\u003e\n\n## The Seed: Why the CLI Comes First\n\nEvery operating system starts with a kernel. Dirgha Code — the open-source command-line agent — is the kernel of Dirgha AI OS. It is the smallest, most installable, most hackable piece of the stack: one install command, runs fully offline, ships under FSL → MIT.\n\nBy design, the CLI is the entry point for every developer — whether you're on a 10 Gbps fiber line or a shared 4G hotspot, in a WeWork in Bengaluru or a basement in Berlin. No browser, no paid account, no telemetry by default. Just `npm install -g @dirgha/code` and a terminal.\n\n[Why a sovereign coding CLI matters](https://github.com/Dirgha-AI/Rama-I-Dirgha-AI-OS/blob/main/WHY_BHARAT_NEEDS_DIRGHA_CLI.md) — latency data, cost structure for independent developers, the layered view of AI sovereignty, and what the CLI does not solve.\n\n## What it is\n\nA terminal coding assistant that reads your codebase, edits files, runs tests, commits, and audits every step. It runs on your keys — or entirely on your machine via llama.cpp / Ollama — with your transcripts staying local until you choose otherwise. When a model rate-limits or times out, the 4-tier failover cascade (user choice → same-family → registry → free fallback) keeps the agent alive without losing context. HTTP streaming stalls are detected and aborted in 30 seconds. Your work doesn't vanish when an API hiccups.\n\n## The five pillars\n\n### Local models — run entirely offline\n\nFirst-class llama.cpp and Ollama support. The setup wizard auto-probes `localhost:8080` and `localhost:11434`, lists installed models, and sets one as your default — no API key, no telemetry, no per-token cost. Use `llamacpp/\u003cmodel\u003e` or `ollama/\u003cmodel\u003e` ids anywhere a hosted model id would go. `dirgha doctor` reports both servers' health alongside the hosted providers. Mix and match: route easy turns to a local model, escalate hard ones to a frontier API in the same session.\n\n### BYOK across 17 providers\n\nAnthropic, OpenAI, Gemini, OpenRouter, NVIDIA NIM, Fireworks, DeepSeek (native), Mistral, Cohere, Cerebras, Together, Perplexity, xAI (Grok), Groq, Z.AI / GLM, plus local Ollama and llama.cpp. Drop multiple keys per provider into a pool — Dirgha rotates with priority + LRU + cooldown when one hits a 429. When a model 4xx/5xxs mid-turn, an inline `[y/n/p=picker]` failover prompt suggests a known-good substitute (via `findFailover` in `prices.ts`) and re-runs the failed turn against it. Other tools just dead-end.\n\nThe model picker is two-step (gemini-cli style): pick a provider card → pick a model within that provider. 104 models in the catalogue, refreshed against the live OpenRouter registry on every release.\n\n### Persistent memory that compounds\n\nFour layers, each cheaper to write than the one above and more curated than the one below:\n\n- **Audit log** — append-only JSONL of every event for forensics.\n- **Memory** — curated key-value facts loaded into the system prompt at boot.\n- **Ledger** — per-scope JSONL of decisions and observations, plus an agent-rewritten digest, searchable by TF-IDF cosine ranking.\n- **Knowledge base** — your `docs/` compiled into a wiki via OpenKB + PageIndex. Vectorless, reasoning-based retrieval. The agent reasons over a table of contents instead of re-reading files every turn.\n\nInformation flows up. Old context gets distilled, not discarded.\n\n### Parallel agents\n\n`dirgha fleet launch \"\u003cgoal\u003e\"` decomposes the goal into N independent tasks, spawns each in its own git worktree, runs them in parallel, and merges the winners back. `dirgha fleet triple \"\u003cgoal\u003e\"` runs three approaches and lets a judge pick. `dirgha fleet dag \"step1...\" \"step2...\" \"step3...\"` chains agents sequentially with cumulative context propagation — each step builds on the previous one's output. Inside any session, the agent can call the `task` tool to dispatch a fresh sub-agent with its own context budget for a sub-problem — no compaction loss on the parent.\n\n### GitHub — native, not shelled\n\n`dirgha` ships a `github` tool that wraps `gh` CLI: create and list PRs (`pr_create`, `pr_list`), create and list issues (`issue_create`, `issue_list`), inspect repos (`repo_view`). The agent can open a PR in the same turn it finishes a fix — no copy-pasting URLs. Requires `gh` installed and authenticated (`gh auth login`). The `git` tool handles commit / push / status / diff; `github` handles the GitHub layer on top.\n\n### Skills, scanned\n\nSKILL.md packs are portable Markdown agents — share one git URL, anyone can `dirgha skills install \u003curl\u003e`. Every third-party skill is scanned at install AND load time by a heuristic prompt-injection / supply-chain check. Critical findings block. Today: 112 installed across 4 packs, 74 allow · 36 warn · 2 block. TypeScript / ESM plugins are the sibling concept — drop a `.mjs` at `~/.dirgha/extensions/\u003cname\u003e/index.mjs` and register tools, slashes, subcommands, or lifecycle hooks in ~20 lines.\n\n## Install\n\n```bash\nnpm install -g @dirgha/code        # or: pnpm add -g @dirgha/code\ndirgha setup                       # 3-step wizard: pick provider (local works too) → auth → model\ndirgha \"say ok in one word\"\n```\n\nOr skip the wizard and go straight to a key: `export NVIDIA_API_KEY=nvapi-…` (any of the 17 providers — see below).\nFor 100% local: install [Ollama](https://ollama.com) or [llama.cpp](https://github.com/ggerganov/llama.cpp), then run `dirgha setup` and pick **Local**.\n\n**Windows users**: See the [Windows installation guide](docs/windows-installation.md) for setup of optional features.\n\nThe interactive TUI is `dirgha` with no args. Resume a session with `dirgha resume \u003cid\u003e`. Fan a parallel sub-agent fleet with `dirgha fleet launch \"\u003cgoal\u003e\"`.\n\n## What's in the box\n\n|                       |                                                                                                                                                                  |\n| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **17 providers**      | anthropic, openai, gemini, openrouter, nvidia, fireworks, deepseek, groq, cerebras, together, deepinfra, mistral, xai, perplexity, cohere, kimi, zai             |\n| **34 model aliases**  | `kimi`, `opus`, `sonnet`, `haiku`, `gemini`, `flash`, `deepseek`, `llama`, `ling`, `hy3`, … resolved before routing                                              |\n| **18 built-in tools** | `fs_read`, `fs_write`, `fs_edit`, `fs_ls`, `shell`, `git`, `github`, `search_grep`, `search_glob`, `browser`, `checkpoint`, `cron`, `task`, `go_to_definition`, `find_references`, `hover_documentation`, `document_symbols`, `qmd_search` |\n| **20 slash commands** | `/account`, `/clear`, `/compact`, `/cost`, `/fleet`, `/keys`, `/login`, `/memory`, `/mode`, `/models`, `/resume`, `/session`, `/status`, `/theme`, `/upgrade`, … |\n| **18 subcommands**    | `audit`, `audit-codebase`, `cost`, `kb`, `keys`, `ledger`, `login`, `models`, `resume`, `skills`, `undo`, `update`, `verify`, …                                  |\n| **4 modes**           | `act` · `plan` (read-only thinking) · `verify` (read-only audit) · `ask` (read-only Q\u0026A)                                                                         |\n| **MCP**               | stdio + HTTP/SSE + `bearerProvider` async OAuth rotation                                                                                                         |\n| **Source**            | ~14.5 K LOC across 23 modules in `src/`. Hard rule: every src file ≤ 200 lines.                                                                                  |\n\n## Numbers worth checking\n\n|                                        |                                                                                                                             |\n| -------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |\n| Tests                                    | **232 vitest + 41 offline** in ~40 s. TS 0 errors, ESLint 0 warnings. CI green is a precondition for any PR.                                                                      |\n| 17 providers                             | Multi-key BYOK pool with cooldown rotation, 4-tier failover cascade, health scoring with compaction.                                                                                |\n| 18 built-in tools                        | Per-tool timeout enforcement. Shell 300s (PTY streaming via `streamOutput`), reads 30s, default 60s.                                                                               |\n| Mode enforcement                         | `git`, `shell`, `fs_write`, `fs_edit`, `browser` are write-gated in `plan` / `verify` / `ask` modes at the kernel hook layer — not just prompt nudging.                           |\n\n## Why this exists\n\nFrontier coding assistants are closed SaaS, charging per-seat, piping your repository through someone else's telemetry. The assumption is that the intelligence must live at the vendor.\n\nThe opposite assumption is the right one. Your laptop is the unit of sovereignty. Your keys, your wallet, your session log, your tool executions live on your machine until you choose to hit a network. Providers are swappable. The agent loop is open source.\n\n## Documentation\n\n|                         |                                                                                      |\n| ----------------------- | ------------------------------------------------------------------------------------ |\n| Architecture            | [`docs/ARCHITECTURE.md`](./docs/ARCHITECTURE.md)                                     |\n| Roadmap                 | [`docs/ROADMAP.md`](./docs/ROADMAP.md)                                               |\n| Knowledge management    | [`docs/memory/km-architecture.md`](./docs/memory/km-architecture.md)                 |\n| Architecture efficiency | [`docs/memory/architecture-efficiency.md`](./docs/memory/architecture-efficiency.md) |\n| Skill security          | [`docs/agents/skill-security.md`](./docs/agents/skill-security.md)                   |\n| Files \u0026 search contract | [`docs/agents/files-and-search.md`](./docs/agents/files-and-search.md)               |\n| Per-release notes       | [`changelog/`](./changelog)                                                          |\n\n## Contributing\n\nWe'd genuinely love your help.\n\nThe fastest path is to **try it on a real project**, then tell us what worked and what didn't. Open an issue at [github.com/Dirgha-AI/dirgha-code/issues](https://github.com/Dirgha-AI/dirgha-code/issues) — bugs, feature ideas, \"this confused me,\" \"this surprised me in a good way,\" all welcome. There's no bug too small. There's no question too basic.\n\nA few specific ways to plug in:\n\n- **Try it.** `npm i -g @dirgha/code`. Run it on something you actually care about. The free-tier endpoints on OpenRouter and NVIDIA work fine for most coding tasks.\n- **File issues.** Anything that doesn't match the README, anything that crashes, anything that wastes your tokens. We read everything.\n- **Suggest providers.** If your favourite provider isn't in the 17 we support, open an issue and tell us which one + the env var. Most are a single config-blob diff.\n- **Write a skill.** SKILL.md packs work across compatible agent CLIs. Publish a git repo, share the URL, anyone can `dirgha skills install \u003curl\u003e`.\n- **Write a plugin.** TypeScript extensions API takes ~20 lines for a real tool. We're keen to feature good ones — drop a link.\n- **Send a PR.** Every PR adds a `.changeset/\u003crandom-name\u003e.md` describing what changed and at what semver tier. Tests must stay green: `npm run test:cli:offline`.\n\nWe're a small team. We answer issues. We accept PRs from first-time contributors. If something feels off about the project, the docs, or the experience — tell us.\n\n## License\n\n[FSL-1.1-MIT](./LICENSE) — Functional Source License with a 2-year sunset to MIT.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**Build to last. Code with Dirgha.**\n\n[`@dirgha/code`](https://www.npmjs.com/package/@dirgha/code) · [github.com/Dirgha-AI/dirgha-code](https://github.com/Dirgha-AI/dirgha-code) · [Sponsor](https://dirgha.ai/contribute)\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdirgha-ai%2Fdirgha-code","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdirgha-ai%2Fdirgha-code","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdirgha-ai%2Fdirgha-code/lists"}