
एक हल्का, फ़ाइल-आधारित CLI API क्लाइंट जिसमें age-एन्क्रिप्टेड सीक्रेट्स, प्रथम-श्रेणी GraphQL समर्थन, और AI एजेंट वर्कफ़्लो के लिए एक अंतर्निहित MCP सर्वर शामिल है।
<p align="center">
<img alt="Hulak" src="https://raw.githubusercontent.com/xaaha/hulak/main/assets/hulak-logo.svg" width="180" />
</p>
<h1 align="center">Hulak</h1>
<h3 align="center">
टर्मिनल में आपका मैसेंजर।
</h3>
<p align="center">
<a href="#quick-start">क्विक स्टार्ट</a> •
<a href="#graphql-explorer">GraphQL एक्सप्लोरर</a> •
<a href="#project-layout">प्रोजेक्ट लेआउट</a> •
<a href="#documentation">दस्तावेज़ीकरण</a>
</p>
---
### एक अनुरोध, पूरी डायरेक्टरी चलाएँ, या इंटरैक्टिव रहें
<img alt="Concurrent Execution" src="https://assets.kitploit.com/production/public/readmes/12535/3ea47749f291ed181923d64f3751b68e0fa035e3c16ec44c973a65fb32ee4c5a.gif" width="720" />
```bash
hulak run ./requests/
```
Hulak सीधे आपके प्रोजेक्ट से अनुरोध फ़ाइलें चलाता है। यह समवर्ती डायरेक्टरी निष्पादन का समर्थन करता है। जब आप केवल `hulak` चलाते हैं तो यह एक इंटरैक्टिव पिकर पर वापस चला जाता है।
### समर्पित GraphQL एक्सप्लोरर
<img alt="GraphQL Explorer" src="https://assets.kitploit.com/production/public/readmes/12535/be3004f25dc07831b622ac6bae4a8cf276dbe450518d70d0de4641accd1cb454.gif" width="720" />
कई एंडपॉइंट्स से स्कीमा ब्राउज़ करें। ऑपरेशन खोजें। इंटरैक्टिव रूप से क्वेरी बनाएँ। इनलाइन निष्पादित करें। टर्मिनल से जेनरेट की गई फ़ाइलें सहेजें।
## क्विक स्टार्ट
### इंस्टॉल करें
Hulak [xaaha/tap](https://github.com/xaaha/homebrew-tap) के माध्यम से उपलब्ध है। Homebrew 6.0+ को तृतीय-पक्ष टैप्स के लिए स्पष्ट विश्वास की आवश्यकता होती है; इसके बिना, `brew upgrade` चुपचाप hulak को छोड़ देता है। प्रति मशीन एक बार का चरण:
```bash
brew trust xaaha/tap
brew install --cask xaaha/tap/hulak
```
अन्य इंस्टॉल विकल्प:
- `go install github.com/xaaha/hulak@latest`
- `go build -o hulak` के साथ स्रोत से बिल्ड करें
#### शेल कम्पलीशन (go install / स्रोत बिल्ड)
Homebrew स्वचालित रूप से कम्पलीशन इंस्टॉल करता है। यदि आपने `go install` के माध्यम से इंस्टॉल किया है
या स्रोत से बिल्ड किया है, तो एक बार ऑप्ट इन करें:
```bash
# zsh
hulak completion zsh > "${fpath[1]}/_hulak" # then restart your shell
# bash (macOS, Homebrew bash-completion)
hulak completion bash > $(brew --prefix)/etc/bash_completion.d/hulak
# bash (Linux)
hulak completion bash | sudo tee /etc/bash_completion.d/hulak >/dev/null
```
Zsh के लिए आपकी `.zshrc` में `autoload -Uz compinit && compinit` आवश्यक है।
### पथ A. एन्क्रिप्टेड सीक्रेट्स के साथ API क्लाइंट (डिफ़ॉल्ट)
```bash
mkdir my-apis && cd my-apis
hulak init # creates .hulak/store.age + identity
```
एक स्टार्टर अनुरोध स्कैफ़ोल्ड करें, यह देखने के लिए कि अनुरोध फ़ाइल कैसी दिखती है, चलाएँ:
```bash
hulak example api # writes example-api.hk.yaml you can run
```
> [!Note]
> अन्य प्रकारों के लिए चलाएँ: `hulak example`। `example` सब-कमांड आपको एक अनुरोध फ़ाइल लिखने का त्वरित तरीका देता है जिसे आप संशोधित कर सकते हैं। अधिक जानकारी के लिए `hulak example -h` चलाएँ
एक सीक्रेट सेट करने के लिए आप चला सकते हैं:
```bash
hulak secrets keys set placeholder https://jsonplaceholder.typicode.com/posts -env prod
```
अब, अपनी `example-api.hk.yaml` फ़ाइल में, आप इस सीक्रेट को संदर्भित कर सकते हैं:
```yaml
method: POST
url: "{{.placeholder}}"
# rest of the body of the file remains same
```
अनुरोध चलाएँ:
```bash
hulak run example-api.hk.yaml --env prod
```
### एन्क्रिप्टेड सीक्रेट्स के बजाय plaintext `env/*.env` फ़ाइलें पसंद करते हैं?
```bash
hulak init classic
```
Plaintext मोड पूरी तरह से समर्थित है। अधिक जानकारी के लिए [docs/environment.md](https://github.com/xaaha/hulak/blob/main/docs/environment.md) देखें
## एन्क्रिप्टेड सीक्रेट्स वॉल्ट या Plaintext `.env` फ़ाइलें
Hulak दो मोड में चलता है। `hulak init` के दौरान एक बार चुनें। आप बाद में माइग्रेट कर सकते हैं।
- **वॉल्ट (डिफ़ॉल्ट):** सीक्रेट्स `.hulak/store.age` में रहते हैं, जो age या SSH कीपेयर से एन्क्रिप्टेड होते हैं। कमिट करना सुरक्षित है। टीमें recipients फ़ाइल के माध्यम से साझा करती हैं। [docs/store.md](https://github.com/xaaha/hulak/blob/main/docs/store.md) देखें।
- **Plaintext:** सीक्रेट्स plaintext `env/*.env` फ़ाइलों में रहते हैं। सरल, कोई एन्क्रिप्शन नहीं। `.gitignore` में `env/` जोड़ें। [docs/environment.md](https://github.com/xaaha/hulak/blob/main/docs/environment.md) देखें।
classic चला रहे हैं और स्विच करना चाहते हैं? [docs/migrating-to-vault.md](https://github.com/xaaha/hulak/blob/main/docs/migrating-to-vault.md) देखें।
## इसे AI एजेंट (MCP) से उपयोग करें
Hulak एक अंतर्निहित [MCP](https://modelcontextprotocol.io) सर्वर के साथ आता है, ताकि Claude Code, Cursor, और Zed जैसे एजेंट सरल भाषा में आपके API संग्रह को चला सकें — "अनुरोधों की सूची बनाएँ", "staging के विरुद्ध `login` का dry-run करें", "`getUser` को कॉल करें और प्रतिक्रिया दिखाएँ"।
Claude Code के लिए, इसे एक कमांड से जोड़ें:
```bash
claude mcp add hulak -s user -- hulak mcp --project api=~/work/api-tests
```
Cursor, Zed, Codex, opencode, और Pi इसके बजाय एक छोटी कॉन्फ़िग फ़ाइल का उपयोग करते हैं। प्रत्येक के लिए [docs/mcp.md](https://github.com/xaaha/hulak/blob/main/docs/mcp.md) देखें।
सीक्रेट्स कभी आपकी मशीन नहीं छोड़ते: एजेंट अनुरोध और एनवायरनमेंट **नामों** के साथ काम करता है, कभी डिक्रिप्टेड मानों के साथ नहीं। रीड्स और dry-runs केवल-पढ़ने के लिए हैं; राइट्स स्कीमा-मान्य हैं; प्रतिक्रिया फ़ाइलें तब तक सहेजी नहीं जातीं जब तक पूछा न जाए।
पूर्ण सेटअप, टूल संदर्भ, और सुरक्षा मॉडल: [docs/mcp.md](https://github.com/xaaha/hulak/blob/main/docs/mcp.md)।
## कमांड
| Command | Purpose | Read more |
| --------- | -------------------------------------- | ---------------------------------------------------------- |
| `run` | Execute request file(s) or a directory | [body.md](https://github.com/xaaha/hulak/blob/main/docs/body.md), [actions.md](https://github.com/xaaha/hulak/blob/main/docs/actions.md) |
| `gql` | GraphQL explorer TUI | [graphql-explorer.md](https://github.com/xaaha/hulak/blob/main/docs/graphql-explorer.md) |
| `secrets` | Encrypted vault CRUD | [store.md](https://github.com/xaaha/hulak/blob/main/docs/store.md) |
| `init` | Initialize a hulak project | [store.md](https://github.com/xaaha/hulak/blob/main/docs/store.md) |
| `migrate` | Postman to hulak conversion | [migrating-to-vault.md](https://github.com/xaaha/hulak/blob/main/docs/migrating-to-vault.md) |
| `example` | Scaffold sample request files | — |
| `doctor` | Check project health | — |
| `mcp` | Serve requests to AI agents over MCP | [mcp.md](https://github.com/xaaha/hulak/blob/main/docs/mcp.md) |
| `version` | Print version | — |
फ़्लैग्स और प्रति-कमांड उदाहरणों के लिए `hulak <command> --help` चलाएँ।
### पिकर व्यवहार
`--env` छोड़ने पर एक इंटरैक्टिव पिकर खुलता है।
- `hulak run` और `hulak gql` केवल तब प्रॉम्प्ट करते हैं जब फ़ाइलें `{{.key}}` को संदर्भित करती हैं।
- `hulak secrets` सबकमांड हर बार प्रॉम्प्ट करते हैं (`secrets list` को छोड़कर)।
- गैर-इंटरैक्टिव शेल के लिए `--env <name>` आवश्यक है।
## सामान्य गलतियाँ
- **कभी `~/.config/hulak/identity.txt` कमिट न करें।** यह आपकी निजी कुंजी है। मोड 0600। पहले इसका बैकअप लें। [docs/store.md#identity-backup](https://github.com/xaaha/hulak/blob/main/docs/store.md#identity-backup) देखें।
- **`hulak init` पर, `-env` env फ़ाइलें बनाता है। यह एक सेटअप फ़्लैग है, रनटाइम सेलेक्टर नहीं।** `hulak init -env staging prod` दो envs स्कैफ़ोल्ड करता है।
- **`env` `secrets` का उपनाम है।** `hulak env list` वही काम करता है जो `hulak secrets list` करता है।
- **GUI एडिटर्स को `secrets edit` के लिए wait फ़्लैग चाहिए।** `EDITOR="code -w"` या `EDITOR="zed --wait"` का उपयोग करें। इसके बिना एडिटर तुरंत लौट आता है और परिवर्तन खो जाते हैं।
- **`store.age` पर मर्ज कॉन्फ्लिक्ट्स के लिए एक रेसिपी चाहिए।** [docs/versioning.md#merge-conflicts](https://github.com/xaaha/hulak/blob/main/docs/versioning.md#merge-conflicts) देखें।
## प्रोजेक्ट लेआउट
```text
my-project/
├── .hulak/
│ ├── store.age # encrypted secrets (safe to commit)
│ └── recipients.txt # public keys of recipients (safe to commit)
├── requests/
│ ├── create-user.hk.yaml
│ └── get-user.hk.yaml
└── (your project files)
~/.config/hulak/
└── identity.txt # YOUR private key. NEVER commit. Mode 0600.
```
## GraphQL एक्सप्लोरर
एक फ़ाइल या एक डायरेक्टरी के साथ एक्सप्लोरर शुरू करें:
```bash
hulak gql e2etests/gql_schemas/countries.yml
hulak gql .
hulak gql -env staging ./collections/graphql
```
पूरी गाइड [docs/graphql-explorer.md](https://github.com/xaaha/hulak/blob/main/docs/graphql-explorer.md) में पढ़ें।
## दस्तावेज़ीकरण
पूर्ण संदर्भ के लिए यहाँ से शुरू करें:
- [Encrypted Store](https://github.com/xaaha/hulak/blob/main/docs/store.md)। एन्क्रिप्शन मॉडल, टीम शेयरिंग, CI।
- [Migrating to the Vault](https://github.com/xaaha/hulak/blob/main/docs/migrating-to-vault.md)। `env/` से `.hulak/` तक।
- [Versioning Your Vault](https://github.com/xaaha/hulak/blob/main/docs/versioning.md)। सीक्रेट्स के लिए Git वर्कफ़्लो।
- [Comparison](https://github.com/xaaha/hulak/blob/main/docs/comparison.md)। Hulak बनाम SOPS, Bruno, और अन्य।
- [Request Body](https://github.com/xaaha/hulak/blob/main/docs/body.md)
- [Actions](https://github.com/xaaha/hulak/blob/main/docs/actions.md)
- [Environment Secrets (classic mode)](https://github.com/xaaha/hulak/blob/main/docs/environment.md)
- [Response Files](https://github.com/xaaha/hulak/blob/main/docs/response.md)
- [GraphQL Explorer](https://github.com/xaaha/hulak/blob/main/docs/graphql-explorer.md)
- [Auth 2.0](https://github.com/xaaha/hulak/blob/main/docs/auth20.md)
- [MCP Server](https://github.com/xaaha/hulak/blob/main/docs/mcp.md)। अपने अनुरोधों को AI एजेंट्स के लिए उजागर करें।
लाइव कमांड सरफेस के लिए, चलाएँ:
```bash
hulak help
hulak <command> --help
```
## स्कीमा समर्थन
Hulak स्कीमा [Schema Store](https://www.schemastore.org/) में उपलब्ध है, इसलिए Schema Store का समर्थन करने वाले एडिटर्स `.hk.yaml` और `.hk.yml` फ़ाइलों के लिए स्वचालित रूप से कम्पलीशन सक्षम कर सकते हैं।
आप अपने YAML लैंग्वेज सर्वर को सीधे इस पर भी इंगित कर सकते हैं:
```text
https://raw.githubusercontent.com/xaaha/hulak/refs/heads/main/assets/schema.json
```
## योगदान
```bash
git clone https://github.com/xaaha/hulak.git
cd hulak
mise install
```
पूर्ण विकास वर्कफ़्लो के लिए [CONTRIBUTING.md](https://github.com/xaaha/hulak/blob/main/CONTRIBUTING.md) देखें।
## प्रोजेक्ट का समर्थन करें
यदि Hulak आपके लिए उपयोगी है, तो एक इश्यू खोलें, एक फ़ीचर सुझाएँ, एक पुल रिक्वेस्ट भेजें, या प्रोजेक्ट को स्पॉन्सर करें।