{"adoption": {"forks": 747, "observed_at": "2026-08-28T04:11:07.209155+00:00", "stars": 14534}, "canonical_url": "https://ross.abutalabs.com/products/kamal", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Deploy web apps anywhere.", "domain": ["web-development", "self-hosted", "cloud-computing"], "enriched": true, "function": ["deployment", "container-runtime", "developer-tools", "cli", "configuration-management"], "health_score": 97, "homepage": "https://kamal-deploy.org", "language": "Ruby", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["basecamp/kamal", "basecamp/kamal-proxy"], "name": "Kamal", "platform": ["cli", "cross-platform"], "pushed_at": "2026-08-12T09:22:20+00:00", "repo": "basecamp/kamal", "stars": 14534, "tags": ["zero-downtime-deploys", "docker", "ssh", "rails", "kamal-proxy", "bare-metal", "rolling-deploys", "devops", "containers", "linux", "macos"], "topics": [], "urls": [{"kind": "homepage", "url": "https://kamal-deploy.org"}, {"kind": "site_page", "url": "https://kamal-deploy.org/docs"}, {"kind": "site_page", "url": "https://kamal-deploy.org/docs/installation"}, {"kind": "site_page", "url": "https://kamal-deploy.org/docs/configuration/overview"}, {"kind": "site_page", "url": "https://kamal-deploy.org/docs/commands/view-all-commands"}], "use_cases": ["deploy a Rails app to cheap Hetzner or DigitalOcean VMs with zero downtime", "deploy a Dockerized web app to my own bare metal servers over SSH", "avoid vendor lock-in from Heroku, Fly.io, or Render", "roll back a bad deployment to a previous container version", "manage accessory services like Redis or a database alongside my app", "run rolling restarts and asset bridging across multiple servers"], "what_it_is": "Kamal is a Ruby-based CLI tool that deploys containerized web apps to any server (bare metal or cloud VMs) over SSH with zero-downtime switching via its companion kamal-proxy. It automates Docker installation, image builds, registry pushes, rolling restarts, rollbacks, and accessory services from a simple config/deploy.yml file.", "when_to_avoid": ["you need autoscaling, self-healing, or multi-region orchestration (use Kubernetes)", "your app cannot be containerized with Docker", "you need a fully managed PaaS with no server administration", "you deploy only to serverless platforms"], "when_to_choose": ["you deploy containerized web apps to plain Ubuntu servers or your own hardware", "you want Heroku-like deploy ergonomics without managed-platform pricing", "you want a simple YAML-driven deploy tool without running Kubernetes", "you're a Rails team wanting a first-party deployment workflow"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/repos/basecamp/kamal", "repo": "basecamp/kamal", "role": "main", "score": 94}, {"path": "/repos/basecamp/kamal-proxy", "repo": "basecamp/kamal-proxy", "role": "infra", "score": 70}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:11:07.209155+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:12:29.986278+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25830360462ff1a050fdfda5e122aa626cef6be2f2539a18503353fd8e840666", "fetched_at": "2026-08-28T04:11:07.209155+00:00", "kind": "readme", "missing": false, "url": "https://github.com/basecamp/kamal"}, {"content_hash": "57a630603307041637a1ac7286570d3386e9ff17bcdbb1dc6dcc930600005f67", "fetched_at": "2026-08-29T08:05:56.716741+00:00", "kind": "homepage", "missing": false, "url": "https://kamal-deploy.org"}, {"content_hash": "d6b0d44b8bace1ffaed51442e349994568ac0a54f3ca4cb8ced4aad8de285cb6", "fetched_at": "2026-08-29T08:05:56.726659+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/hooks/overview"}, {"content_hash": "2b98f4d10c8044ac48c94916281108d6d83accd4bca3de79414be6e5f8ad1c85", "fetched_at": "2026-08-29T08:05:56.719305+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs"}, {"content_hash": "da624e4a121e32249182dedbbdd4b9e572977d15478d121e1f4adadbf830fd16", "fetched_at": "2026-08-29T08:05:56.721258+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/installation"}, {"content_hash": "232e00dc1d80fa74dbdaa3cd14995f9a19d93ea483786fd56d3c007016bbff37", "fetched_at": "2026-08-29T08:05:56.723121+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/configuration/overview"}, {"content_hash": "578d8911e6f770b80e4816d82e668e15b3b06b9e6d65499d2dc4ad6900d60216", "fetched_at": "2026-08-29T08:05:56.725017+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/commands/view-all-commands"}, {"content_hash": "a0a5b0581d03a14586b96b5f73e60aa6d5a38a6665dabfc2a3271077d4a6f66e", "fetched_at": "2026-08-29T08:05:56.728604+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/upgrading/overview"}, {"content_hash": "56d0e6352432a8eda195e9f0ad1dbe482f0f1c8a6c6122044468e141d3f14f82", "fetched_at": "2026-08-29T08:05:56.730350+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/v1/docs"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:11:07.209155+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:12:29.986278+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25830360462ff1a050fdfda5e122aa626cef6be2f2539a18503353fd8e840666", "fetched_at": "2026-08-28T04:11:07.209155+00:00", "kind": "readme", "missing": false, "url": "https://github.com/basecamp/kamal"}, {"content_hash": "57a630603307041637a1ac7286570d3386e9ff17bcdbb1dc6dcc930600005f67", "fetched_at": "2026-08-29T08:05:56.716741+00:00", "kind": "homepage", "missing": false, "url": "https://kamal-deploy.org"}, {"content_hash": "d6b0d44b8bace1ffaed51442e349994568ac0a54f3ca4cb8ced4aad8de285cb6", "fetched_at": "2026-08-29T08:05:56.726659+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/hooks/overview"}, {"content_hash": "2b98f4d10c8044ac48c94916281108d6d83accd4bca3de79414be6e5f8ad1c85", "fetched_at": "2026-08-29T08:05:56.719305+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs"}, {"content_hash": "da624e4a121e32249182dedbbdd4b9e572977d15478d121e1f4adadbf830fd16", "fetched_at": "2026-08-29T08:05:56.721258+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/installation"}, {"content_hash": "232e00dc1d80fa74dbdaa3cd14995f9a19d93ea483786fd56d3c007016bbff37", "fetched_at": "2026-08-29T08:05:56.723121+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/configuration/overview"}, {"content_hash": "578d8911e6f770b80e4816d82e668e15b3b06b9e6d65499d2dc4ad6900d60216", "fetched_at": "2026-08-29T08:05:56.725017+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/commands/view-all-commands"}, {"content_hash": "a0a5b0581d03a14586b96b5f73e60aa6d5a38a6665dabfc2a3271077d4a6f66e", "fetched_at": "2026-08-29T08:05:56.728604+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/upgrading/overview"}, {"content_hash": "56d0e6352432a8eda195e9f0ad1dbe482f0f1c8a6c6122044468e141d3f14f82", "fetched_at": "2026-08-29T08:05:56.730350+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/v1/docs"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:12:29.986278+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25830360462ff1a050fdfda5e122aa626cef6be2f2539a18503353fd8e840666", "fetched_at": "2026-08-28T04:11:07.209155+00:00", "kind": "readme", "missing": false, "url": "https://github.com/basecamp/kamal"}, {"content_hash": "57a630603307041637a1ac7286570d3386e9ff17bcdbb1dc6dcc930600005f67", "fetched_at": "2026-08-29T08:05:56.716741+00:00", "kind": "homepage", "missing": false, "url": "https://kamal-deploy.org"}, {"content_hash": "d6b0d44b8bace1ffaed51442e349994568ac0a54f3ca4cb8ced4aad8de285cb6", "fetched_at": "2026-08-29T08:05:56.726659+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/hooks/overview"}, {"content_hash": "2b98f4d10c8044ac48c94916281108d6d83accd4bca3de79414be6e5f8ad1c85", "fetched_at": "2026-08-29T08:05:56.719305+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs"}, {"content_hash": "da624e4a121e32249182dedbbdd4b9e572977d15478d121e1f4adadbf830fd16", "fetched_at": "2026-08-29T08:05:56.721258+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/installation"}, {"content_hash": "232e00dc1d80fa74dbdaa3cd14995f9a19d93ea483786fd56d3c007016bbff37", "fetched_at": "2026-08-29T08:05:56.723121+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/configuration/overview"}, {"content_hash": "578d8911e6f770b80e4816d82e668e15b3b06b9e6d65499d2dc4ad6900d60216", "fetched_at": "2026-08-29T08:05:56.725017+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/commands/view-all-commands"}, {"content_hash": "a0a5b0581d03a14586b96b5f73e60aa6d5a38a6665dabfc2a3271077d4a6f66e", "fetched_at": "2026-08-29T08:05:56.728604+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/upgrading/overview"}, {"content_hash": "56d0e6352432a8eda195e9f0ad1dbe482f0f1c8a6c6122044468e141d3f14f82", "fetched_at": "2026-08-29T08:05:56.730350+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/v1/docs"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:11:07.209155+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:11:07.209155+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:11:07.209155+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:12:29.986278+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25830360462ff1a050fdfda5e122aa626cef6be2f2539a18503353fd8e840666", "fetched_at": "2026-08-28T04:11:07.209155+00:00", "kind": "readme", "missing": false, "url": "https://github.com/basecamp/kamal"}, {"content_hash": "57a630603307041637a1ac7286570d3386e9ff17bcdbb1dc6dcc930600005f67", "fetched_at": "2026-08-29T08:05:56.716741+00:00", "kind": "homepage", "missing": false, "url": "https://kamal-deploy.org"}, {"content_hash": "d6b0d44b8bace1ffaed51442e349994568ac0a54f3ca4cb8ced4aad8de285cb6", "fetched_at": "2026-08-29T08:05:56.726659+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/hooks/overview"}, {"content_hash": "2b98f4d10c8044ac48c94916281108d6d83accd4bca3de79414be6e5f8ad1c85", "fetched_at": "2026-08-29T08:05:56.719305+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs"}, {"content_hash": "da624e4a121e32249182dedbbdd4b9e572977d15478d121e1f4adadbf830fd16", "fetched_at": "2026-08-29T08:05:56.721258+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/installation"}, {"content_hash": "232e00dc1d80fa74dbdaa3cd14995f9a19d93ea483786fd56d3c007016bbff37", "fetched_at": "2026-08-29T08:05:56.723121+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/configuration/overview"}, {"content_hash": "578d8911e6f770b80e4816d82e668e15b3b06b9e6d65499d2dc4ad6900d60216", "fetched_at": "2026-08-29T08:05:56.725017+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/commands/view-all-commands"}, {"content_hash": "a0a5b0581d03a14586b96b5f73e60aa6d5a38a6665dabfc2a3271077d4a6f66e", "fetched_at": "2026-08-29T08:05:56.728604+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/upgrading/overview"}, {"content_hash": "56d0e6352432a8eda195e9f0ad1dbe482f0f1c8a6c6122044468e141d3f14f82", "fetched_at": "2026-08-29T08:05:56.730350+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/v1/docs"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:11:07.209155+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:11:07.209155+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:12:29.986278+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25830360462ff1a050fdfda5e122aa626cef6be2f2539a18503353fd8e840666", "fetched_at": "2026-08-28T04:11:07.209155+00:00", "kind": "readme", "missing": false, "url": "https://github.com/basecamp/kamal"}, {"content_hash": "57a630603307041637a1ac7286570d3386e9ff17bcdbb1dc6dcc930600005f67", "fetched_at": "2026-08-29T08:05:56.716741+00:00", "kind": "homepage", "missing": false, "url": "https://kamal-deploy.org"}, {"content_hash": "d6b0d44b8bace1ffaed51442e349994568ac0a54f3ca4cb8ced4aad8de285cb6", "fetched_at": "2026-08-29T08:05:56.726659+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/hooks/overview"}, {"content_hash": "2b98f4d10c8044ac48c94916281108d6d83accd4bca3de79414be6e5f8ad1c85", "fetched_at": "2026-08-29T08:05:56.719305+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs"}, {"content_hash": "da624e4a121e32249182dedbbdd4b9e572977d15478d121e1f4adadbf830fd16", "fetched_at": "2026-08-29T08:05:56.721258+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/installation"}, {"content_hash": "232e00dc1d80fa74dbdaa3cd14995f9a19d93ea483786fd56d3c007016bbff37", "fetched_at": "2026-08-29T08:05:56.723121+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/configuration/overview"}, {"content_hash": "578d8911e6f770b80e4816d82e668e15b3b06b9e6d65499d2dc4ad6900d60216", "fetched_at": "2026-08-29T08:05:56.725017+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/commands/view-all-commands"}, {"content_hash": "a0a5b0581d03a14586b96b5f73e60aa6d5a38a6665dabfc2a3271077d4a6f66e", "fetched_at": "2026-08-29T08:05:56.728604+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/upgrading/overview"}, {"content_hash": "56d0e6352432a8eda195e9f0ad1dbe482f0f1c8a6c6122044468e141d3f14f82", "fetched_at": "2026-08-29T08:05:56.730350+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/v1/docs"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:11:07.209155+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:11:07.209155+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:11:07.209155+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:12:29.986278+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25830360462ff1a050fdfda5e122aa626cef6be2f2539a18503353fd8e840666", "fetched_at": "2026-08-28T04:11:07.209155+00:00", "kind": "readme", "missing": false, "url": "https://github.com/basecamp/kamal"}, {"content_hash": "57a630603307041637a1ac7286570d3386e9ff17bcdbb1dc6dcc930600005f67", "fetched_at": "2026-08-29T08:05:56.716741+00:00", "kind": "homepage", "missing": false, "url": "https://kamal-deploy.org"}, {"content_hash": "d6b0d44b8bace1ffaed51442e349994568ac0a54f3ca4cb8ced4aad8de285cb6", "fetched_at": "2026-08-29T08:05:56.726659+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/hooks/overview"}, {"content_hash": "2b98f4d10c8044ac48c94916281108d6d83accd4bca3de79414be6e5f8ad1c85", "fetched_at": "2026-08-29T08:05:56.719305+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs"}, {"content_hash": "da624e4a121e32249182dedbbdd4b9e572977d15478d121e1f4adadbf830fd16", "fetched_at": "2026-08-29T08:05:56.721258+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/installation"}, {"content_hash": "232e00dc1d80fa74dbdaa3cd14995f9a19d93ea483786fd56d3c007016bbff37", "fetched_at": "2026-08-29T08:05:56.723121+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/configuration/overview"}, {"content_hash": "578d8911e6f770b80e4816d82e668e15b3b06b9e6d65499d2dc4ad6900d60216", "fetched_at": "2026-08-29T08:05:56.725017+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/commands/view-all-commands"}, {"content_hash": "a0a5b0581d03a14586b96b5f73e60aa6d5a38a6665dabfc2a3271077d4a6f66e", "fetched_at": "2026-08-29T08:05:56.728604+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/upgrading/overview"}, {"content_hash": "56d0e6352432a8eda195e9f0ad1dbe482f0f1c8a6c6122044468e141d3f14f82", "fetched_at": "2026-08-29T08:05:56.730350+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/v1/docs"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:11:07.209155+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:11:07.209155+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:12:29.986278+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25830360462ff1a050fdfda5e122aa626cef6be2f2539a18503353fd8e840666", "fetched_at": "2026-08-28T04:11:07.209155+00:00", "kind": "readme", "missing": false, "url": "https://github.com/basecamp/kamal"}, {"content_hash": "57a630603307041637a1ac7286570d3386e9ff17bcdbb1dc6dcc930600005f67", "fetched_at": "2026-08-29T08:05:56.716741+00:00", "kind": "homepage", "missing": false, "url": "https://kamal-deploy.org"}, {"content_hash": "d6b0d44b8bace1ffaed51442e349994568ac0a54f3ca4cb8ced4aad8de285cb6", "fetched_at": "2026-08-29T08:05:56.726659+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/hooks/overview"}, {"content_hash": "2b98f4d10c8044ac48c94916281108d6d83accd4bca3de79414be6e5f8ad1c85", "fetched_at": "2026-08-29T08:05:56.719305+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs"}, {"content_hash": "da624e4a121e32249182dedbbdd4b9e572977d15478d121e1f4adadbf830fd16", "fetched_at": "2026-08-29T08:05:56.721258+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/installation"}, {"content_hash": "232e00dc1d80fa74dbdaa3cd14995f9a19d93ea483786fd56d3c007016bbff37", "fetched_at": "2026-08-29T08:05:56.723121+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/configuration/overview"}, {"content_hash": "578d8911e6f770b80e4816d82e668e15b3b06b9e6d65499d2dc4ad6900d60216", "fetched_at": "2026-08-29T08:05:56.725017+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/commands/view-all-commands"}, {"content_hash": "a0a5b0581d03a14586b96b5f73e60aa6d5a38a6665dabfc2a3271077d4a6f66e", "fetched_at": "2026-08-29T08:05:56.728604+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/upgrading/overview"}, {"content_hash": "56d0e6352432a8eda195e9f0ad1dbe482f0f1c8a6c6122044468e141d3f14f82", "fetched_at": "2026-08-29T08:05:56.730350+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/v1/docs"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:12:29.986278+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25830360462ff1a050fdfda5e122aa626cef6be2f2539a18503353fd8e840666", "fetched_at": "2026-08-28T04:11:07.209155+00:00", "kind": "readme", "missing": false, "url": "https://github.com/basecamp/kamal"}, {"content_hash": "57a630603307041637a1ac7286570d3386e9ff17bcdbb1dc6dcc930600005f67", "fetched_at": "2026-08-29T08:05:56.716741+00:00", "kind": "homepage", "missing": false, "url": "https://kamal-deploy.org"}, {"content_hash": "d6b0d44b8bace1ffaed51442e349994568ac0a54f3ca4cb8ced4aad8de285cb6", "fetched_at": "2026-08-29T08:05:56.726659+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/hooks/overview"}, {"content_hash": "2b98f4d10c8044ac48c94916281108d6d83accd4bca3de79414be6e5f8ad1c85", "fetched_at": "2026-08-29T08:05:56.719305+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs"}, {"content_hash": "da624e4a121e32249182dedbbdd4b9e572977d15478d121e1f4adadbf830fd16", "fetched_at": "2026-08-29T08:05:56.721258+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/installation"}, {"content_hash": "232e00dc1d80fa74dbdaa3cd14995f9a19d93ea483786fd56d3c007016bbff37", "fetched_at": "2026-08-29T08:05:56.723121+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/configuration/overview"}, {"content_hash": "578d8911e6f770b80e4816d82e668e15b3b06b9e6d65499d2dc4ad6900d60216", "fetched_at": "2026-08-29T08:05:56.725017+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/commands/view-all-commands"}, {"content_hash": "a0a5b0581d03a14586b96b5f73e60aa6d5a38a6665dabfc2a3271077d4a6f66e", "fetched_at": "2026-08-29T08:05:56.728604+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/upgrading/overview"}, {"content_hash": "56d0e6352432a8eda195e9f0ad1dbe482f0f1c8a6c6122044468e141d3f14f82", "fetched_at": "2026-08-29T08:05:56.730350+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/v1/docs"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:12:29.986278+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25830360462ff1a050fdfda5e122aa626cef6be2f2539a18503353fd8e840666", "fetched_at": "2026-08-28T04:11:07.209155+00:00", "kind": "readme", "missing": false, "url": "https://github.com/basecamp/kamal"}, {"content_hash": "57a630603307041637a1ac7286570d3386e9ff17bcdbb1dc6dcc930600005f67", "fetched_at": "2026-08-29T08:05:56.716741+00:00", "kind": "homepage", "missing": false, "url": "https://kamal-deploy.org"}, {"content_hash": "d6b0d44b8bace1ffaed51442e349994568ac0a54f3ca4cb8ced4aad8de285cb6", "fetched_at": "2026-08-29T08:05:56.726659+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/hooks/overview"}, {"content_hash": "2b98f4d10c8044ac48c94916281108d6d83accd4bca3de79414be6e5f8ad1c85", "fetched_at": "2026-08-29T08:05:56.719305+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs"}, {"content_hash": "da624e4a121e32249182dedbbdd4b9e572977d15478d121e1f4adadbf830fd16", "fetched_at": "2026-08-29T08:05:56.721258+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/installation"}, {"content_hash": "232e00dc1d80fa74dbdaa3cd14995f9a19d93ea483786fd56d3c007016bbff37", "fetched_at": "2026-08-29T08:05:56.723121+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/configuration/overview"}, {"content_hash": "578d8911e6f770b80e4816d82e668e15b3b06b9e6d65499d2dc4ad6900d60216", "fetched_at": "2026-08-29T08:05:56.725017+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/commands/view-all-commands"}, {"content_hash": "a0a5b0581d03a14586b96b5f73e60aa6d5a38a6665dabfc2a3271077d4a6f66e", "fetched_at": "2026-08-29T08:05:56.728604+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/upgrading/overview"}, {"content_hash": "56d0e6352432a8eda195e9f0ad1dbe482f0f1c8a6c6122044468e141d3f14f82", "fetched_at": "2026-08-29T08:05:56.730350+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/v1/docs"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:12:29.986278+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "25830360462ff1a050fdfda5e122aa626cef6be2f2539a18503353fd8e840666", "fetched_at": "2026-08-28T04:11:07.209155+00:00", "kind": "readme", "missing": false, "url": "https://github.com/basecamp/kamal"}, {"content_hash": "57a630603307041637a1ac7286570d3386e9ff17bcdbb1dc6dcc930600005f67", "fetched_at": "2026-08-29T08:05:56.716741+00:00", "kind": "homepage", "missing": false, "url": "https://kamal-deploy.org"}, {"content_hash": "d6b0d44b8bace1ffaed51442e349994568ac0a54f3ca4cb8ced4aad8de285cb6", "fetched_at": "2026-08-29T08:05:56.726659+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/hooks/overview"}, {"content_hash": "2b98f4d10c8044ac48c94916281108d6d83accd4bca3de79414be6e5f8ad1c85", "fetched_at": "2026-08-29T08:05:56.719305+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs"}, {"content_hash": "da624e4a121e32249182dedbbdd4b9e572977d15478d121e1f4adadbf830fd16", "fetched_at": "2026-08-29T08:05:56.721258+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/installation"}, {"content_hash": "232e00dc1d80fa74dbdaa3cd14995f9a19d93ea483786fd56d3c007016bbff37", "fetched_at": "2026-08-29T08:05:56.723121+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/configuration/overview"}, {"content_hash": "578d8911e6f770b80e4816d82e668e15b3b06b9e6d65499d2dc4ad6900d60216", "fetched_at": "2026-08-29T08:05:56.725017+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/commands/view-all-commands"}, {"content_hash": "a0a5b0581d03a14586b96b5f73e60aa6d5a38a6665dabfc2a3271077d4a6f66e", "fetched_at": "2026-08-29T08:05:56.728604+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/docs/upgrading/overview"}, {"content_hash": "56d0e6352432a8eda195e9f0ad1dbe482f0f1c8a6c6122044468e141d3f14f82", "fetched_at": "2026-08-29T08:05:56.730350+00:00", "kind": "site_page", "missing": false, "url": "https://kamal-deploy.org/v1/docs"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 97, "longevity": 95, "rhythm": 89}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 1334, "days_push": 21, "days_rel": 76, "gap_med": 2.5, "n_releases_24m": 29}, "score": 94, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}