
एक कमांड आपके पूरे क्लाउड अकाउंट को ग्रेड करता है — गलत कॉन्फ़िगरेशन, गुम ऑब्ज़र्वेबिलिटी, और सुरक्षा स्थिति।
एक कमांड आपके पूरे क्लाउड खाते को ग्रेड करता है — गलत कॉन्फ़िगरेशन, गुम ऑब्ज़र्वेबिलिटी, और सुरक्षा स्थिति, जिसमें पाँच चीज़ें पहले ठीक करने के लिए रैंक की जाती हैं।
इसे AWS, Cloudflare, Vercel, Supabase, Render, Fly.io या Railway पर लक्षित करें और यह एक स्कोर, क्या टूटा है, और प्रत्येक के लिए एक समाधान लेकर आता है — इतना स्व-निहित कि इसे सीधे किसी एजेंट को सौंपा जा सके।
npx cloud-doctor
https://github.com/user-attachments/assets/60b610ab-7aee-4c3a-8d9e-83f045c8cc56
यह एक प्रदाता चुनता है, आपकी पहचान हल करता है (AWS प्रोफ़ाइल, API टोकन, …), और इंटरैक्टिव रूप से स्कैन चलाता है। सीधे किसी प्रदाता पर जाने के लिए:
npx cloud-doctor aws --profile prod
npx cloud-doctor cloudflare --yes
npx cloud-doctor vercel --yes
यदि ~/.npmrc में min-release-age सेट है (सप्लाई-चेन हार्डनिंग) और इससे ताज़ा रिलीज़ ब्लॉक होती हैं:
# =<number>, 0 chosen as example
npm x --min-release-age=0 cloud-doctor -- aws profiles
ब्लीडिंग एज पसंद है? अल्फ़ा बिल्ड अपने स्वयं के टैग पर प्रकाशित होते हैं: npx cloud-doctor@alpha।
प्रमाणीकरण टोकन को env vars के रूप में सेट किया जा सकता है या जब TUI उनके लिए पूछता है तब प्रदान किया जा सकता है:
CLOUDFLARE_API_TOKEN=cfut_aHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1kUXc0dzlXZ1hjUQ== npx cloud-doctor cloudflare
(टोकन को base64 डीकोड न करें)
या
$ npx cloud-doctor cloudflare
Cloudflare क्रेडेंशियल सेट नहीं हैं — उन्हें नीचे दर्ज करें।
केवल इस रन के लिए रखा गया, डिस्क पर कभी नहीं लिखा गया। इन प्रॉम्प्ट को छोड़ें: export CLOUDFLARE_API_TOKEN
dashboard → My Profile → API Tokens
? Cloudflare रीड-ओनली API टोकन › <input>
जल्द ही आ रहे हैं: Google Cloud, Kubernetes, और डेटाबेस (Postgres, MySQL, Redis) — देखें What's next।
npx cloud-doctor # pick provider (default AWS) → pick identity → scan
npx cloud-doctor aws # AWS fast path
npx cloud-doctor aws --profile prod # non-interactive when unambiguous
npx cloud-doctor aws --yes --json # CI, machine-readable output
npx cloud-doctor aws --yes --json --fail-under 75 # CI gate on the score
npx cloud-doctor cloudflare --yes # needs CLOUDFLARE_API_TOKEN
npx cloud-doctor vercel --yes # needs VERCEL_TOKEN (+ VERCEL_TEAM_ID)
npx cloud-doctor supabase --yes # needs SUPABASE_ACCESS_TOKEN
npx cloud-doctor render --yes # needs RENDER_API_KEY
npx cloud-doctor fly --yes # needs FLY_API_TOKEN (+ FLY_ORG)
npx cloud-doctor railway --yes # needs RAILWAY_API_TOKEN
npx cloud-doctor aws profiles # list ~/.aws/config profiles
npx cloud-doctor aws whoami # show resolved AWS identity
--yes प्रॉम्प्ट को छोड़ देता है (CI-सुरक्षित); --json एक स्थिर, स्कीमा-वर्जित रिपोर्ट प्रिंट करता है (टर्मिनल दृश्य के बजाय); --verbose शीर्ष अपराधियों के बजाय हर निष्कर्ष प्रिंट करता है; --no-color रंग आउटपुट अक्षम करता है।
स्कोर कभी नकली नहीं होते: यदि शून्य नियम चल सके, तो स्कोर "No checks ran" लेबल के साथ null होता है, कभी खोखला 100 नहीं।
doctor.config.ts (या doctor.config.json, या package.json में cloudDoctor) के माध्यम से प्रति प्रदाता नियमों को ट्यून करें:
import { defineConfig } from "cloud-doctor/api";
export default defineConfig({
defaultProvider: "aws",
aws: {
profile: "prod",
regions: ["us-east-1", "eu-west-1"],
account: "123456789012",
},
rules: {
"aws/s3-unencrypted-bucket": "off",
"aws/iam-user-access-key": "error",
},
});
"off" एक नियम को अक्षम करता है; "error" / "warning" इसकी गंभीरता को ओवरराइड करता है। अक्षम नियमों को स्कोरिंग से हटा दिया जाता है और म्यूट के रूप में प्रकट किया जाता है — कभी चुपचाप घटाया नहीं जाता।
एक प्लगइन रजिस्ट्री के ऊपर एक पतला CLI — प्रत्येक प्रदाता एक ही अनुबंध को लागू करता है, ताकि CLI कभी भी एक को दूसरे पर विशेष-मामला न बनाए।
प्रत्येक प्रदाता CloudDoctorPlugin लागू करता है:
discoverIdentities() — पिकर के लिए प्रोफ़ाइल/प्रोजेक्ट/खातों की सूची बनाएंresolveIdentity() — फ़्लैग/envs/कॉन्फ़िग → पहचान मैप करें, कोई नेटवर्क कॉल नहींvalidateIdentity() — साबित करें कि क्रेडेंशियल काम करते हैं (sts:GetCallerIdentity या समकक्ष)scan() — गेटेड नियम चलाएं, डायग्नोस्टिक्स + स्कोर लौटाएंनए प्रदाता packages/plugins/src/index.ts में पंजीकृत होते हैं।
gcloud, k8s, और db जल्द ही आ रहे हैं।
pnpm install
pnpm build
pnpm typecheck
pnpm test
वास्तविक क्लाउड खाते को हिट किए बिना व्यावहारिक नियम सत्यापन के लिए, रिपॉजिटरी में एक http-mock और Moto/fab फिक्स्चर हार्नेस शामिल है: (ps: fab क्लाइ जो चलाने के लिए वातावरण उत्पन्न करता है, वर्तमान में निजी है, निर्भरता परियोजना को भी ओपन-सोर्स किया जाएगा)
pnpm mock:up <scenario> # एक स्थायी मॉक इंस्टेंस बूट करें
eval "$(pnpm -s mock:env <scenario>)" # इस पर env vars को इंगित करें
pnpm mock:run <scenario> # इसके विरुद्ध CLI चलाएं
react-doctor को शुभकामना
| प्रदाता | कमांड | प्रमाणीकरण |
|---|
| AWS | cloud-doctor aws | AWS SDK क्रेडेंशियल चेन — --profile, AWS_PROFILE, env vars, SSO, वेब आइडेंटिटी |
| Cloudflare | cloud-doctor cloudflare | CLOUDFLARE_API_TOKEN |
| Vercel | cloud-doctor vercel | VERCEL_TOKEN (+ वैकल्पिक VERCEL_TEAM_ID) |
| Supabase | cloud-doctor supabase | SUPABASE_ACCESS_TOKEN |
| Render | cloud-doctor render | RENDER_API_KEY |
| Fly.io | cloud-doctor fly | FLY_API_TOKEN (+ वैकल्पिक FLY_ORG) |
| Railway | cloud-doctor railway | RAILWAY_API_TOKEN (वर्कस्पेस/खाता टोकन) |
| पैकेज | भूमिका |
|---|
packages/cloud-doctor | CLI (commander, prompts, ora) + प्रोग्रामेटिक diagnose() API |
packages/core | प्लगइन रजिस्ट्री, स्कोरिंग, कॉन्फ़िग लोडिंग, साझा प्रकार |
packages/plugin-* | प्रति प्रदाता एक पैकेज — पहचान खोज + नियम |
packages/plugins | डिफ़ॉल्ट रजिस्ट्री जो प्रत्येक प्रदाता को एक साथ जोड़ती है |