{"id":50117890,"url":"https://github.com/nassiharel/klim","last_synced_at":"2026-05-23T16:04:32.892Z","repository":{"id":356098012,"uuid":"1200332575","full_name":"nassiharel/klim","owner":"nassiharel","description":"Klim is a cross-platform productivity booster for developer tools, detect, inspect, and upgrade tools through native package managers. Includes both an interactive TUI and CLI.","archived":false,"fork":false,"pushed_at":"2026-05-23T06:16:36.000Z","size":32385,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-23T08:19:20.185Z","etag":null,"topics":["cli","cross-platform","developer-tools","devops","golang","package-manager","productivity-booster","terminal","toolchain","tui"],"latest_commit_sha":null,"homepage":"https://nassiharel.github.io/klim-web","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nassiharel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null},"funding":{"github":"nassiharel"}},"created_at":"2026-04-03T09:37:49.000Z","updated_at":"2026-05-20T11:00:36.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/nassiharel/klim","commit_stats":null,"previous_names":["nassiharel/klim"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/nassiharel/klim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nassiharel%2Fklim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nassiharel%2Fklim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nassiharel%2Fklim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nassiharel%2Fklim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nassiharel","download_url":"https://codeload.github.com/nassiharel/klim/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nassiharel%2Fklim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33402177,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T04:15:53.637Z","status":"ssl_error","status_checked_at":"2026-05-23T04:15:53.242Z","response_time":53,"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":["cli","cross-platform","developer-tools","devops","golang","package-manager","productivity-booster","terminal","toolchain","tui"],"created_at":"2026-05-23T16:04:26.579Z","updated_at":"2026-05-23T16:04:32.887Z","avatar_url":"https://github.com/nassiharel.png","language":"Go","funding_links":["https://github.com/sponsors/nassiharel"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/logo.svg\" alt=\"klim logo\" width=\"520\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eklim\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eReignite Dev Experience.\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/nassiharel/klim/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/github/v/release/nassiharel/klim?style=flat-square\u0026color=brightgreen\u0026label=release\" alt=\"Release\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/nassiharel/klim/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/nassiharel/klim/ci.yml?style=flat-square\u0026label=build\" alt=\"CI\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/nassiharel/klim/actions/workflows/codeql.yml\"\u003e\u003cimg src=\"https://img.shields.io/github/actions/workflow/status/nassiharel/klim/codeql.yml?style=flat-square\u0026label=CodeQL\" alt=\"CodeQL\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://goreportcard.com/report/github.com/nassiharel/klim\"\u003e\u003cimg src=\"https://img.shields.io/badge/go%20report-A+-brightgreen?style=flat-square\" alt=\"Go Report Card\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://pkg.go.dev/github.com/nassiharel/klim\"\u003e\u003cimg src=\"https://img.shields.io/badge/godoc-reference-blue?style=flat-square\" alt=\"Go Reference\"\u003e\u003c/a\u003e\n  \u003ca href=\"go.mod\"\u003e\u003cimg src=\"https://img.shields.io/github/go-mod/go-version/nassiharel/klim?style=flat-square\u0026label=go\u0026logo=go\u0026logoColor=white\" alt=\"Go version\"\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/nassiharel/klim?style=flat-square\" alt=\"License\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/nassiharel/klim/commits/main\"\u003e\u003cimg src=\"https://img.shields.io/github/last-commit/nassiharel/klim?style=flat-square\u0026label=last%20commit\" alt=\"Last commit\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/nassiharel/klim/graphs/contributors\"\u003e\u003cimg src=\"https://img.shields.io/github/contributors/nassiharel/klim?style=flat-square\u0026color=blue\" alt=\"Contributors\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/nassiharel/klim/issues\"\u003e\u003cimg src=\"https://img.shields.io/github/issues/nassiharel/klim?style=flat-square\" alt=\"Open issues\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/nassiharel/klim/blob/main/CONTRIBUTING.md\"\u003e\u003cimg src=\"https://img.shields.io/badge/PRs-welcome-brightgreen?style=flat-square\" alt=\"PRs welcome\"\u003e\u003c/a\u003e\n  \u003cimg src=\"https://img.shields.io/badge/platforms-macOS%20%7C%20Linux%20%7C%20Windows-lightgrey?style=flat-square\" alt=\"Platforms\"\u003e\n\u003c/p\u003e\n\n---\n\nKlim is a productivity booster for dev tools: a deterministic, cross-platform layer for discovering, standardizing, securing, and automating the tools every project depends on. It keeps native package managers in charge of installation while giving humans, teams, CI, and AI agents the same portable environment contracts and predictable operations.\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"assets/examples/klim-installed-tui.png\" alt=\"klim Installed view: every tool on the machine with version, install source, category, and GitHub stars\" width=\"900\"\u003e\n\u003c/p\u003e\n\n## Quick install\n\n### macOS / Linux\n\n```bash\n# Recommended — installer script\ncurl -fsSL https://raw.githubusercontent.com/nassiharel/klim/main/install.sh | bash\n```\n\n```bash\n# Homebrew tap\nbrew install nassiharel/tap/klim\n```\n\n### Windows\n\n```powershell\n# Recommended — installer script\nirm https://raw.githubusercontent.com/nassiharel/klim/main/install.ps1 | iex\n```\n\n```powershell\n# winget\nwinget install nassiharel.klim\n```\n\n```powershell\n# Scoop bucket\nscoop bucket add nassiharel https://github.com/nassiharel/scoop-bucket\nscoop install klim\n```\n\n### Any OS with Go 1.25+\n\n```bash\ngo install github.com/nassiharel/klim/cmd/klim@latest\n```\n\n### Verify\n\n```bash\nklim version\n```\n\n\u003cdetails\u003e\n\u003csummary\u003eOther install options (deb / rpm / direct binary)\u003c/summary\u003e\n\n#### Debian / Ubuntu\n\n```bash\n# Replace \u003carch\u003e with amd64 or arm64\ncurl -LO https://github.com/nassiharel/klim/releases/latest/download/klim_\u003cversion\u003e_linux_\u003carch\u003e.deb\nsudo dpkg -i klim_\u003cversion\u003e_linux_\u003carch\u003e.deb\n```\n\n#### Fedora / CentOS / RHEL\n\n```bash\n# Replace \u003carch\u003e with amd64 or arm64\ncurl -LO https://github.com/nassiharel/klim/releases/latest/download/klim_\u003cversion\u003e_linux_\u003carch\u003e.rpm\nsudo rpm -i klim_\u003cversion\u003e_linux_\u003carch\u003e.rpm\n```\n\n#### Direct binary\n\nPre-built archives for every platform are attached to each [GitHub Release](https://github.com/nassiharel/klim/releases/latest):\n\n- `klim_\u003cversion\u003e_darwin_amd64.tar.gz` / `klim_\u003cversion\u003e_darwin_arm64.tar.gz`\n- `klim_\u003cversion\u003e_linux_amd64.tar.gz` / `klim_\u003cversion\u003e_linux_arm64.tar.gz`\n- `klim_\u003cversion\u003e_windows_amd64.zip`\n\nEach archive ships with a CycloneDX SBOM (`*.sbom.json`) and an entry in the release's `checksums.txt`. Verify a download with:\n\n```bash\nsha256sum klim_\u003cversion\u003e_\u003cplatform\u003e.tar.gz\n# compare against checksums.txt\n```\n\n#### Pin a specific version\n\n```bash\n# install.sh — bash flag\ncurl -fsSL https://raw.githubusercontent.com/nassiharel/klim/main/install.sh | bash -s -- --version v0.1.2\n\n# install.ps1 — env var\n$env:CLIM_VERSION = \"v0.1.2\"\nirm https://raw.githubusercontent.com/nassiharel/klim/main/install.ps1 | iex\n\n# go install — version suffix\ngo install github.com/nassiharel/klim/cmd/klim@v0.1.2\n\n# brew / winget / scoop — pin via the package manager itself\nbrew install nassiharel/tap/klim@0.1.2\nwinget install nassiharel.klim --version 0.1.2\nscoop install klim@0.1.2\n```\n\nOr download the matching archive from the [tagged release page](https://github.com/nassiharel/klim/releases) directly.\n\n\u003c/details\u003e\n\nLaunch the interactive TUI:\n\n```bash\nklim\n```\n\nOr use deterministic commands from scripts, CI, or agents:\n\n```bash\nklim check --output json\nklim diff teammate.yaml\nklim security audit --sbom\nklim install --pack go-developer\n```\n\n---\n\n## What Klim gives you\n\n### Map your environment\n\nKlim scans your `PATH` and native package managers to show installed developer tools, versions, install sources, binary paths, GitHub metadata, project references, pack membership, and update status.\n\n### Standardize project requirements\n\nDrop a `.klim.yaml` in a repo to define required and optional tools with version constraints. `klim check` validates every developer's environment locally or in CI, and `klim init` can generate the contract from project files such as `package.json`, `go.mod`, Dockerfiles, CI workflows, Helm charts, Terraform, Bicep, and more.\n\n### Reproduce and move toolchains\n\nExport, import, share, diff, and capture environment snapshots. Klim maps tools to the best available package manager on each OS, so a known-good setup can move between macOS, Linux, Windows, containers, and teammates.\n\n### Automate through native package managers\n\nKlim delegates installs and upgrades to the package managers you already trust: winget, Homebrew, apt, Chocolatey, Scoop, snap, and npm. It adds selection, planning, JSON output, exit codes, dry runs, packs, and cross-manager visibility without replacing those managers.\n\n### Audit trust and security\n\nRun health checks, security audits, license inventory, vulnerability scans, and CycloneDX SBOM generation across your toolchain. Klim flags PATH problems, unmanaged installs, archived upstreams, stale repositories, missing versions, and known CVEs/GHSAs.\n\n### Give agents deterministic primitives\n\nAI agents are good at translating intent. Klim is the stable local primitive they should call for environment operations. Instead of asking an agent to improvise package-manager commands, let it run `klim check`, `klim install`, `klim diff`, or `klim security audit --output json` and parse predictable results.\n\n---\n\n## Screenshots\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003cstrong\u003eInstalled\u003c/strong\u003e\u003cbr\u003e\u003csub\u003eEvery tool, every version, every install source\u003c/sub\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003cstrong\u003eDashboard\u003c/strong\u003e\u003cbr\u003e\u003csub\u003eScore, coverage, GitHub highlights, package-manager mix\u003c/sub\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"assets/examples/klim-installed-tui.png\" alt=\"klim Installed view\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"assets/examples/klim-dashboard-tui.png\" alt=\"klim Dashboard view\"\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003cstrong\u003eMarketplace\u003c/strong\u003e\u003cbr\u003e\u003csub\u003e110+ curated tools with category, stars, and policy state\u003c/sub\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003cstrong\u003eCurated packs\u003c/strong\u003e\u003cbr\u003e\u003csub\u003eBundle status across Cloud Essentials, Kubernetes Starter, Go Developer, …\u003c/sub\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"assets/examples/klim-marketplace-tui.png\" alt=\"klim Marketplace tab\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"assets/examples/klim-marketplace-packs-tui.png\" alt=\"klim Marketplace Packs sub-tab\"\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003cstrong\u003eFor You\u003c/strong\u003e\u003cbr\u003e\u003csub\u003ePersonalised recommendations ranked by overlap with your installed set\u003c/sub\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003cstrong\u003eProject scan\u003c/strong\u003e\u003cbr\u003e\u003csub\u003eAuto-detect required tools from \u003ccode\u003ego.mod\u003c/code\u003e, \u003ccode\u003epackage.json\u003c/code\u003e, \u003ccode\u003e.github/\u003c/code\u003e\u003c/sub\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"assets/examples/klim-marketplace-for-you-tui.png\" alt=\"klim Marketplace For You sub-tab\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"assets/examples/klim-project-tui.png\" alt=\"klim Project tab\"\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003cstrong\u003eCompliance\u003c/strong\u003e\u003cbr\u003e\u003csub\u003eDisallowed sources, blocked tools, license violations against your active policy\u003c/sub\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003cstrong\u003eLocal browser\u003c/strong\u003e\u003cbr\u003e\u003csub\u003e\u003ccode\u003eklim browser\u003c/code\u003e — same data and actions as the TUI in your default browser\u003c/sub\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\u003cimg src=\"assets/examples/klim-security-compliance-tui.png\" alt=\"klim Security tab on Compliance\"\u003e\u003c/td\u003e\n    \u003ctd\u003e\u003cimg src=\"assets/examples/klim-local-browser-view.png\" alt=\"klim browser local web view\"\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003e Nine TUI tabs and an optional local web view. Same data, same actions, same JSON — whichever surface you prefer.\n\n---\n\n## Core workflows\n\n| Workflow | Commands |\n| --- | --- |\n| Map this machine | `klim`, `klim list`, `klim info kubectl` |\n| Standardize a project | `klim init`, `klim check`, `klim generate github-action` |\n| Reproduce an environment | `klim export`, `klim import`, `klim env show`, `klim env apply` |\n| Compare machines | `klim diff baseline.yaml`, `klim trail capture`, `klim trail diff` |\n| Audit and score | `klim health`, `klim health path`, `klim security audit`, `klim score`, `klim security vuln` |\n| Preview and apply | `klim plan`, `klim apply`, `klim checkpoint \u003cname\u003e`, `klim rollback \u003cname\u003e` |\n| Automate installs | `klim install jq`, `klim upgrade --pack go-developer`, `klim remove jq`, `klim watch` |\n| Agent-safe execution | `klim check --output json`, `klim install --dry-run --output json` |\n\n## Feature map\n\n- **Interactive TUI**: My Tools, Marketplace, Project, Dashboard, My Profile (with My Score breakdown), Health (PATH conflict explorer + interactive fix wizard), Security, Backup, and Config views.\n- **Plan / apply / rollback**: Terraform-style preview (`klim plan`) with confidence scoring, auto-checkpointed execution (`klim apply`) with shell-resolution + binary-validation + PATH-consistency + manager-integrity postcheck, and named snapshot management (`klim checkpoint`, `klim rollback`).\n- **Marketplace and packs**: Browse 110+ curated developer tools, install bundles, and create custom packs.\n- **Team manifests**: Versioned `.klim.yaml` contracts for local checks, CI, generated workflows, Dockerfiles, and devcontainers.\n- **Environment tokens**: `klim env` captures tools, favorites, custom packs, package managers, Klim version, OS, and security state into a privacy-safe token.\n- **Backup and sharing**: Manifest exports, share tokens, saved backups, cross-machine imports, OS-aware package-manager mapping, and **PATH backups** captured before any Health-tab PATH fix runs.\n- **Toolchain history**: `klim trail` captures content-addressed snapshots that can be labeled, diffed, pruned, and compared over time.\n- **Environment diff**: Compare local tools against manifests or tokens and see matches, version differences, local-only tools, and remote-only tools.\n- **Security and compliance**: Health checks with interactive remediation, audits, vulnerability lookup through OSV.dev, license inventory, policy enforcement, and SBOM output.\n- **Shell integration**: Native completions and hooks that automatically run `.klim.yaml` checks when you enter a project.\n- **Auto-install shims**: `klim proxy` creates lightweight shims that install missing tools on first use through the best available package manager.\n- **Onboarding and discovery**: Role-based recommendations, related-tool suggestions, `klim why`, and `klim try` for temporary installs.\n- **Custom marketplaces**: Merge extra catalog URLs with the default marketplace for internal or community tool definitions.\n\n---\n\n## Why not just use an agent with shell access?\n\nAgents can translate fuzzy intent into commands, but environment operations need determinism, auditability, local privacy, and stable artifacts. Klim and agents solve different parts of the problem.\n\n### Where agents help\n\n- Turning ambiguous requests into concrete tasks.\n- Explaining unfamiliar tools and trade-offs.\n- Composing multi-step plans across repositories.\n\n### Where Klim should be the primitive\n\n- **Determinism**: `klim install --pack go-developer --output json` exits the same way every time. A prompt does not.\n- **Trust boundary**: Klim uses a curated, versioned catalog and native package managers instead of arbitrary `curl | bash` suggestions from model context.\n- **Compliance as code**: `.klim.yaml` and policy files are reviewable contracts. Prompt instructions are not auditable controls.\n- **Privacy and offline use**: Tool inventories, project requirements, paths, and policies stay local unless you explicitly export or share them.\n- **Stable artifacts**: Manifests, share tokens, env tokens, trail snapshots, and JSON output outlive a chat session.\n- **CI safety**: Klim has stable exit codes and schemas without token spend or model drift.\n\nThe honest framing: **agents handle judgment calls; Klim handles operations that must be the same every time.**\n\n---\n\n## Architecture\n\nKlim is written in Go with a Bubble Tea TUI and Cobra CLI. The runtime flow is:\n\n```text\nToolService\n  -\u003e ToolCatalog     fetch/cache marketplace.yaml from GitHub\n  -\u003e ToolFinder      scan PATH and detect install sources\n  -\u003e VersionResolver query native package managers for installed/latest versions\n```\n\nVersion data comes from native package managers, not a private registry:\n\n| Package manager | Platforms | Used for |\n| --- | --- | --- |\n| winget | Windows | Installed and latest versions |\n| Chocolatey | Windows | Installed and latest versions |\n| Homebrew | macOS, Linux | Installed and latest versions |\n| apt / dpkg | Debian/Ubuntu | Installed and latest versions |\n| snap | Linux | Installed and latest versions |\n| npm | All | Installed and latest versions |\n\nThe marketplace is fetched from `https://raw.githubusercontent.com/nassiharel/klim/marketplace/marketplace.yaml` and cached locally for offline use.\n\n## Configuration\n\nKlim stores user data under `~/.klim/` (same path on macOS, Linux, and Windows). The marketplace cache lives at `~/.klim/marketplace/marketplace-cache.yaml`.\n\nUse:\n\n```bash\nklim config path\nklim config edit\n```\n\n## Troubleshooting\n\n| Problem | Solution |\n| --- | --- |\n| `klim: command not found` | Ensure the install directory is in `PATH`. Use `which klim` on macOS/Linux or `where klim` on Windows. |\n| Tool not detected | Verify the binary is in `PATH`, then run `klim` and press `r` or use `--refresh` on CLI commands. |\n| Permission denied on upgrade | The native package manager may need elevated privileges. Use `sudo` or an Administrator shell where appropriate. |\n| Stale version info | Run `klim security health`, use `--refresh`, or clear the scan cache. |\n| Self-update fails | Download the latest archive from [Releases](https://github.com/nassiharel/klim/releases/latest) and replace the binary manually. |\n\n## Contributing\n\nContributions are welcome. See [AGENTS.md](./AGENTS.md) for architecture, conventions, and development commands.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnassiharel%2Fklim","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnassiharel%2Fklim","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnassiharel%2Fklim/lists"}