
عميل API خفيف يعتمد على الملفات ويعمل عبر سطر الأوامر CLI، مع أسرار مشفّرة بأداة age، ودعم من الدرجة الأولى لـ GraphQL، وخادم MCP لسير العمل بالوكلاء.
REST · GraphQL · OAuth
البدء السريع • مستكشف GraphQL • هيكل المشروع • التوثيق
hulak run ./requests/
يشغّل Hulak ملفات الطلبات مباشرةً من مشروعك. وهو يدعم تنفيذ الأدلة بشكل متزامن. ويتحول إلى منتقي تفاعلي عند تشغيل hulak فقط.
تصفّح المخططات من نقاط نهاية متعددة. ابحث في العمليات. أنشئ الاستعلامات بشكل تفاعلي. نفّذها مباشرةً. احفظ الملفات المُولّدة من الطرفية.
يتوفر Hulak عبر xaaha/tap. يتطلب Homebrew 6.0+ ثقةً صريحةً في النواهض الخارجية (third-party taps)؛ وبدون ذلك، يتخطى brew upgrade hulak بصمت. خطوة تُنفَّذ مرة واحدة لكل جهاز:
brew trust xaaha/tap
brew install --cask xaaha/tap/hulak
خيارات تثبيت أخرى:
go install github.com/xaaha/hulak@latestgo build -o hulakيثبّت Homebrew الإكمال تلقائيًا. إذا ثبّت عبر go install أو بنيت من المصدر، فعّل الخيار مرة واحدة:
# 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 وجود autoload -Uz compinit && compinit في ملف .zshrc.
mkdir my-apis && cd my-apis
hulak init # creates .hulak/store.age + identity
أنشئ طلبًا مبدئيًا؛ وللتحقق السريع من شكل ملف الطلب، شغّل:
hulak example api # writes example-api.hk.yaml you can run
[!Note] للأنواع الأخرى شغّل:
hulak example. يمنحك الأمر الفرعيexampleطريقة سريعة لكتابة ملف طلب يمكنك تعديله. لمزيد من المعلومات شغّلhulak example -h
لإعداد سرّ، يمكنك تشغيل:
hulak secrets keys set placeholder https://jsonplaceholder.typicode.com/posts -env prod
الآن، في ملف example-api.hk.yaml، يمكنك الإشارة إلى هذا السرّ:
method: POST
url: "{{.placeholder}}"
# rest of the body of the file remains same
شغّل الطلب:
hulak run example-api.hk.yaml --env prod
env/*.env النصية العادية بدل الأسرار المشفّرة؟hulak init classic
وضع النص العادي مدعوم بالكامل. راجع docs/environment.md لمزيد من المعلومات
.env النصية العاديةيعمل Hulak بنموذجين. اختر مرة واحدة أثناء hulak init. ويمكنك الترحيل لاحقًا.
.hulak/store.age، مشفّرة بمفتاح age أو SSH. وهي آمنة للالتزام. تشارك الفرق عبر ملف المستفيدين. راجع docs/store.md.env/*.env بنص عادي. أبسط، وبدون تشفير. أضف env/ إلى .gitignore. راجع docs/environment.md.تستخدم الوضع الكلاسيكي وتريد التبديل؟ راجع docs/migrating-to-vault.md.
يأتي Hulak مزوّدًا بخادم MCP مدمج، بحيث يمكن لوكلاء مثل Claude Code وCursor وZed تشغيل مجموعة API الخاصة بك بلغة طبيعية — «اعرض الطلبات»، «جرّب login جافًا (dry-run) على staging»، «استدعِ getUser واعرض الاستجابة».
لإضافته إلى Claude Code، استخدم أمرًا واحدًا:
claude mcp add hulak -s user -- hulak mcp --project api=~/work/api-tests
بدلًا من ذلك، تستخدم Cursor وZed وCodex وopencode وPi ملف إعداد صغير. راجع docs/mcp.md لكل أداة.
لا تغادر الأسرار جهازك أبدًا: يعمل الوكيل مع أسماء الطلبات والبيئات، وليس مع القيم المفكوكة تشفيرها أبدًا. القراءات والتشغيل الجاف (dry-runs) للقراءة فقط؛ وتُتحقق الكتابات من المخطط (schema)؛ ولا تُحفظ ملفات الاستجابة إلا عند طلب ذلك.
الإعداد الكامل ومرجع الأدوات ونموذج الأمان: docs/mcp.md.
شغّل 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.hulak init، ينشئ -env ملفات بيئة. إنه خيار إعداد وليس محددًا في وقت التشغيل. يهيئ hulak init -env staging prod بيئتين.env اسم مستعار لـsecrets. يعمل hulak env list بالطريقة نفسها التي يعمل بها hulak secrets list.secrets edit. استخدم EDITOR="code -w" أو EDITOR="zed --wait". وبدون ذلك، يعود المحرر فورًا وتُفقد التغييرات.store.age إلى وصفة معالجة. راجع .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.
ابدأ المستكشف بملف أو دليل:
hulak gql e2etests/gql_schemas/countries.yml
hulak gql .
hulak gql -env staging ./collections/graphql
اقرأ الدليل الكامل في docs/graphql-explorer.md.
ابدأ هنا للاطلاع على المرجع الكامل:
env/ إلى .hulak/.للاطلاع على واجهة الأوامر المباشرة، شغّل:
hulak help
hulak <command> --help
مخطط Hulak متاح في Schema Store؛ لذلك يمكن للمحررات التي تدعم Schema Store تفعيل الإكمال التلقائي لملفات .hk.yaml و.hk.yml.
يمكنك أيضًا توجيه خادم لغة YAML مباشرةً إلى:
https://raw.githubusercontent.com/xaaha/hulak/refs/heads/main/assets/schema.json
git clone https://github.com/xaaha/hulak.git
cd hulak
mise install
راجع CONTRIBUTING.md لسير عمل التطوير الكامل.
إذا كان Hulak مفيدًا لك، فافتح مشكلة (issue)، أو اقترح ميزة، أو أرسل طلب سحب (pull request)، أو ادعم المشروع ماليًا.
| Command | الغرض | اقرأ المزيد |
|---|
run | تنفيذ ملف(ات) الطلبات أو دليل | body.md, actions.md |
gql | مستكشف GraphQL بواجهة TUI | graphql-explorer.md |
secrets | عمليات CRUD للخزنة المشفّرة | store.md |
init | تهيئة مشروع hulak | store.md |
migrate | تحويل من Postman إلى hulak | migrating-to-vault.md |
example | إنشاء ملفات طلبات نموذجية | — |
doctor | فحص سلامة المشروع | — |
mcp | تقديم الطلبات لوكلاء الذكاء الاصطناعي عبر MCP | mcp.md |
version | طباعة الإصدار | — |