# Deployment modes: engine को locally या cloud में चलाएँ

Engine चलाने के दो तरीके: आपकी machine पर locally, या Pro key के साथ AfterPack के cloud में।

Source: https://www.afterpack.dev/hi/docs/deployment-modes

Deployment mode यह बदलता है कि काम कहाँ होता है और आपके source को क्या छूता है। यह नहीं बदलता कि transforms क्या करते हैं: वही input और वही [settings](https://www.afterpack.dev/hi/docs/config) हर जगह वही सुरक्षा देते हैं, engine चाहे जहाँ चले। AfterPack दो modes में चलता है।

## Mode 1: Local (Free)

[`npx afterpack@latest <path>`](https://www.afterpack.dev/hi/docs/cli#usage) AfterPack को आपकी machine पर natively चलाता है, और बिना [`key`](https://www.afterpack.dev/hi/docs/config#key) configure किए हर [framework plugin](https://www.afterpack.dev/hi/docs/frameworks) भी यही करता है। **आपका source कभी आपके filesystem से बाहर नहीं जाता।** Install करें, build करें, हो गया। न [account](https://www.afterpack.dev/hi/docs/accounts), न key, न obfuscation के लिए कोई network round trip।

यह डिफ़ॉल्ट रास्ता है, और लगभग हर build को यही अपनाना चाहिए।

यहाँ दो Pro-only settings अलग व्यवहार करती हैं: hardening flags [`transforms.selfIntegrity.enabled`](https://www.afterpack.dev/hi/docs/config#transforms-kind-enabled) और [`transforms.comparisonHardening.enabled`](https://www.afterpack.dev/hi/docs/config#transforms-kind-enabled) लागू नहीं होते, और protection बढ़ाने वाला per-region [`@afterpack` directive](https://www.afterpack.dev/hi/docs/directives#free-builds) build को रोक देता है। देखें [Pro](https://www.afterpack.dev/hi/docs/pro)।

> **एक network call जो obfuscation नहीं है**
>
> जो build `error` या `critical` [diagnostic](https://www.afterpack.dev/hi/docs/diagnostics) emit करती है, वह anonymous build diagnostics रिपोर्ट करती है: code, severity, versions, bucketed counts, source कभी नहीं। साफ़ build कुछ नहीं भेजती। इसे [`AFTERPACK_telemetry_enabled=false`](https://www.afterpack.dev/hi/docs/config#telemetry-enabled) से, या अपने plugin options में [`telemetry.enabled`](https://www.afterpack.dev/hi/docs/config#telemetry-enabled) से बंद करें। विवरण [Privacy & data handling](https://www.afterpack.dev/hi/docs/privacy) में है।

## Mode 2: AfterPack cloud (Pro)

वही package, साथ में एक [`key`](https://www.afterpack.dev/hi/docs/config#key)। यह एक सामान्य configuration key है, जिसे उन्हीं तीन तरीकों से सेट किया जा सकता है जैसे बाकी हर key को: command line पर `--key=ap_v1_…`, environment में [`AFTERPACK_key=ap_v1_…`](https://www.afterpack.dev/hi/docs/config#key), या `afterpack.json` में `"key"`। Flag environment पर भारी पड़ता है, और environment फ़ाइल पर; पूरा precedence नियम [Configuration](https://www.afterpack.dev/hi/docs/config) में है।

> **Key की जगह environment में है, command line पर नहीं**
>
> `--key=` एक बार के local run के लिए है। Command line shell history, CI logs और `ps` output में पहुँच जाती है, इसलिए किसी भी साझा चीज़ के लिए [`AFTERPACK_key`](https://www.afterpack.dev/hi/docs/config#key) का उपयोग करें। न कोई sign-in step है, न कोई अलग credential: [dashboard से मिली key](https://www.afterpack.dev/hi/docs/dashboard/api-keys) ही सब कुछ है।

जब कोई `key` resolve होती है, तो engine आपकी फ़ाइलों को batch करता है और [`POST /v1/obfuscate/batch`](https://www.afterpack.dev/hi/docs/cloud-api) call करता है। Cloud [Pro](https://www.afterpack.dev/hi/docs/pro) engine build चलाता है और हर फ़ाइल पूरी होते ही obfuscated output वापस stream करता है; आपकी build हर नतीजे को आते ही लिख देती है। Source केवल memory में process होता है और persist नहीं किया जाता। एक artifact store होता है: per-build [Protection Map](https://www.afterpack.dev/hi/docs/protection-map) जो [dashboard](https://www.afterpack.dev/hi/docs/dashboard/builds) को चलाता है, और जिसे आप [project के हिसाब से बंद](https://www.afterpack.dev/hi/docs/protection-map#turning-it-off) कर सकते हैं। पूरा wire contract [Cloud API reference](https://www.afterpack.dev/hi/docs/cloud-api) है।

**Cloud down होने पर fail closed।** अगर cloud तक नहीं पहुँचा जा सकता (DNS failure, connection refused, `5xx` पर retries ख़त्म, या request timeout), तो build Free-tier output पर गिरने के बजाय विफल हो जाती है। यह नियम और उसके पीछे के exit codes [Diagnostics](https://www.afterpack.dev/hi/docs/diagnostics#fail-closed-no-exceptions) में हैं।

Client `503`/`504` को 1 s / 4 s / 16 s के schedule पर retry करता है (कुल चार प्रयास) और हार मानने से पहले `429` के `Retry-After` का ठीक एक बार पालन करता है। बाकी हर status non-retryable है और API के अपने [diagnostic code](https://www.afterpack.dev/hi/docs/diagnostics) के साथ build failure के रूप में सामने आता है।

## इनमें से कैसे चुनें

| स्थिति | Mode |
|---|---|
| डिफ़ॉल्ट: zero friction, आपकी machine से कुछ बाहर नहीं जाता | Mode 1 (Local) |
| आप चाहते हैं कि [per-region directives](https://www.afterpack.dev/hi/docs/directives) सचमुच लागू हों | Mode 2 (Cloud) |
| आप dashboard में stored [Protection Maps](https://www.afterpack.dev/hi/docs/protection-map) और [build history](https://www.afterpack.dev/hi/docs/dashboard/builds) चाहते हैं | Mode 2 (Cloud) |
| Compliance कहता है कि source आपके infrastructure से बाहर नहीं जा सकता | Mode 1 (Local) |

## Deployment के दूसरे रूप

### Cloudflare Workers

Engine इतना छोटा है कि Cloudflare Worker के अंदर चल सके, और cloud builds वहीं चलती हैं: आपका bundle एक Worker isolate में transform होकर milliseconds में लौट आता है, और Worker के लिए बहुत बड़ी फ़ाइल अपने आप container में चली जाती है। आप AfterPack को अपने Worker में भी इसी तरह चला सकते हैं: देखें [Cloudflare Worker में AfterPack चलाना](https://www.afterpack.dev/hi/docs/workers)।

अपने Worker से, उसी `obfuscate()` call को अपनी Pro key दें और build Mode 2 में, AfterPack के cloud पर चलती है: देखें [Pro, आपके अपने Worker से](https://www.afterpack.dev/hi/docs/workers#pro-from-your-own-worker)।

### वह source जो आपके infrastructure से बाहर नहीं जा सकता

Mode 1 इसका जवाब पहले से देता है: Free, local, कोई network call नहीं, review करने को कुछ नहीं। आपके अपने account के अंदर एक private Pro deployment के लिए [Enterprise](https://www.afterpack.dev/hi/docs/enterprise) देखें; यह ऐसा कुछ नहीं है जिसे आप आज चालू कर सकें।

## आगे

- [Cloud API reference](https://www.afterpack.dev/hi/docs/cloud-api): Mode 2 का पूरा request/response contract।
- [Pro](https://www.afterpack.dev/hi/docs/pro): Pro local engine के ऊपर क्या जोड़ता है।
- [Privacy & data handling](https://www.afterpack.dev/hi/docs/privacy): हर mode क्या store करता है, और कितने समय तक।
- [Tiers](https://www.afterpack.dev/hi/docs/tiers): कौन-सा plan Mode 2 खोलता है, और वह क्या meter करता है।
- [CLI reference](https://www.afterpack.dev/hi/docs/cli): वह command जो Mode 1 चलाता है।
- [Configuration](https://www.afterpack.dev/hi/docs/config): हर key, flag और variable, जिसमें [`key`](https://www.afterpack.dev/hi/docs/config#key) भी शामिल है।
- [Threat model](https://www.afterpack.dev/hi/docs/threat-model): engine के जगह बदलने पर क्या बदलता है, और क्या नहीं।
