
🔱 البروكسي الوحيد المستقل للاعتمادات لوكلاء الذكاء الاصطناعي: عزل بخزاناتك الخاصة وسياسات طلب بأقل الامتيازات. تبقى مفاتيحك حيث تخزنها بالفعل، ولا تصل أبدًا إلى ذاكرة الوكيل. متوافق مع 1Password و keychain و keepassxc والعديد غيرها.
🔱 الوكيل المستقل الوحيد لبيانات الاعتماد للوكلاء الذكاء الاصطناعي: عزل خاص بـ"أحضر خزنتك الخاصة" وسياسات طلب بأقل الامتيازات. مفاتيحك تبقى حيث تحتفظ بها أصلاً، ولا تدخل ذاكرة الوكيل مطلقاً. متوافق مع 1Password، keychain، keepassxc وغيرها الكثير.
تقوم بإعداد Claude Code، أو OpenClaw، أو Hermes، وتجد نفسك تحدق في ملفات .env بمفاتيح API الثمينة مكتوبة بالنص الصريح. قرأت المقالات. تعلم ماذا يحدث عندما يتعرض الوكيل لحقن التعليمات (prompt injection). نحن نتفهم ذلك.
يعالج أكوامان هذا بثلاث طبقات دفاعية:
يتوزع أكوامان كأربع حزم منسقة، تشترك في خزنة واحدة + خفيّ واحد. ثبّت ما تحتاجه فقط:
CLI واحد باسم aquaman يظهر الأربع: أوامر عليا للخزنة والتدقيق، aquaman openclaw ... لتكامل OpenClaw، aquaman coder ... لتكامل وكيل البرمجة (يفوض إلى aquaman-coder تحت الغطاء) بالإضافة إلى aquaman hermes ... لحزمة Hermes بلغة Python.
aquaman help و aquaman doctor هما صديقاك.
npm install -g aquaman-proxy
aquaman setup # معالج الخلفية + تخزين المفاتيح
aquaman daemon & # بدء الوكيل
aquaman credentials list # التحقق
يستمع الوكيل على ~/.aquaman/proxy.sock (مقبس Unix، chmod 0o600). وجّه أي أداة إلى http://aquaman.local/<service>/<path> ويحقن الوكيل رؤوس المصادقة لتلك الخدمة من خزنة الخلفية التي اخترتها.
openclaw plugins install aquaman-plugin # 1. تثبيت الإضافة + الوكيل
openclaw aquaman setup # 2. الخلفية + المفاتيح + توصيل الإضافة
openclaw # 3. تم - يبدأ الوكيل تلقائياً
استكشاف الأخطاء: openclaw aquaman doctor.
هل تستخدم npm مباشرة؟ الأمر npm install -g aquaman-proxy && aquaman openclaw setup يفعل نفس الشيء - يثبت CLI للوكيل، يخزن مفاتيحك، يثبت الإضافة في ~/.openclaw/extensions/aquaman-plugin/، ويوصل بيانات الاعتماد (مراجع SecretRef على OpenClaw ≥ 2026.6.5، أو ملف auth-profiles.json الاحتياطي على الإصدارات الأقدم).
مُعترض HTTP للإضافة يوجّه فقط حركة المرور للخدمات الموجودة في إعدادات services الخاصة به (Anthropic + OpenAI افتراضياً). أضف المزيد تحت إعدادات الإضافة في openclaw.json - القنوات المدعومة تشمل Slack، Discord، Telegram، MS Teams، Matrix، LINE، Twitch، Twilio، BlueBubbles، Mattermost، Nostr، Tlon، Feishu، Google Chat، ElevenLabs، xAI، Cloudflare AI Gateway، Mistral، Hugging Face، وغيرها (25 خدمة إجمالاً).
npm install -g aquaman-proxy aquaman-coder # 1. تثبيت الخفيّ + المحول
aquaman setup # 2. معالج الخزنة
aquaman daemon & # 3. بدء الوكيل
aquaman coder project add my-app --path ~/code/my-app \
--env ANTHROPIC_API_KEY=aquaman://anthropic/api_key \
--env GITHUB_TOKEN=aquaman://github/token # 4. تعريف مشروع
aquaman coder setup claude-code # 5. توصيل خطافات Claude Code
aquaman doctor # 6. التحقق - يجب أن يظهر كل من الخزنة والمحول باللون الأخضر
شاهد بنفسك (لحظة "آها" في 30 ثانية): أعد تشغيل Claude Code، افتح جلسة جديدة داخل ~/code/my-app، واطلب من الوكيل تنفيذ:
printenv | grep ANTHROPIC_API_KEY
سترى هذا في النص:
ANTHROPIC_API_KEY=[REDACTED:injected-value]
⏺ ANTHROPIC_API_KEY is set and available (injected via aquaman vault).
العملية الفرعية رأت المفتاح الحقيقي (اختباراتك، بنائك، خوادم MCP، نصوص الاستيراد - أي شيء يحتاجه فعلاً يعمل). الوكيل - الذي يقرر الكود الذي سيشغله على جهازك - لا يرى القيمة أبداً، وبالتالي لا يراها تاريخ المحادثة، ولا سجلات مزود النموذج، ولا أي شخص يلتقط لقطة شاشة لطرفيتك لاحقاً.
استخدمه من طرفيتك أيضاً. يعمل نفس الغلاف بدون الوكيل. فقط أدخل cd في مشروع مغطى وسبّق الأمر:
cd ~/code/
aquaman-coder exec -- python app/scripts/import.py
نفس حقن المتغيرات البيئية، نفس التعتيم على stdout/stderr. ضعه في أهداف Makefile، أو aliases شل، أو مشغّلات CI - في أي مكان كنت ستستخدم فيه ملف .env.
عندما يشغل Claude Code أداة Bash في ~/code/my-app، يعيد خطاف أكوامان كتابة الأمر عبر updatedInput.command ليغلّفه تحت aquaman-coder exec. ذلك الغلاف:
aquaman://service/key عبر الوسيط (POST /broker/resolve عبر UDS). تُحضر بيانات الاعتماد لأمر واحد، وليس لعمر الوكيل.Hermes هو مضيف أجنبي (Python) لا يحتوي على خطاف نقل للحقن، لذا يتم العزل في جانب الوكيل: يعرض الوكيل مستمع حلقة استرجاعية مقيد برمز اختياري، ويُوجّه Hermes إليه عبر متغيرات البيئة الخاصة به.
npm install -g aquaman-proxy # 1. تثبيت الخفيّ
aquaman setup # 2. معالج الخزنة
aquaman credentials add anthropic api_key sk-ant-... # 3. تخزين مفتاح مزود
aquaman hermes setup # 4. تمكين الحلقة الاسترجاعية + كتابة ~/.hermes/.env
aquaman daemon & # 5. بدء الوكيل (UDS + حلقة استرجاعية)
aquaman hermes doctor # 6. التحقق - المستمع + env + الخزنة + Hermes
يقوم aquaman hermes setup بتمكين مستمع الحلقة الاسترجاعية، ويولّد رمزًا خاصًا بالتثبيت، ويكتب كتلة مُدارة بواسطة أكوامان في ~/.hermes/.env (مع احترام HERMES_HOME): ANTHROPIC_BASE_URL/OPENAI_BASE_URL الأصلية بالإضافة إلى قيمة api_key مؤقتة تساوي الرمز. يرسل Hermes الرمز كمفتاح مزود؛ يزيله الوكيل، يحقن بيانات اعتماد خزنتك الحقيقية، ويعيد التوجيه إلى عنوان المصب. مزودات LLM فقط (Anthropic، OpenAI) حالياً.
إضافات اختيارية داخل الجلسة - إضافة Python تضيف أمر /aquaman-status وأداة aquaman_status وفحص صحي عند بدء الجلسة داخل Hermes (لا تحمل أي بيانات اعتماد):
pip install aquaman-hermes # أو: uv tool install aquaman-hermes
aquaman-hermes install # تضع الإضافة في ~/.hermes/plugins/aquaman/
hermes plugins enable aquaman
Agent / OpenClaw / Coding Agent Aquaman Proxy
┌──────────────────────┐ ┌──────────────────────┐
│ │ │ │
│ ANTHROPIC_BASE_URL │═══ UDS / HTTP ════>│ Keychain / 1Pass / │
│ = aquaman.local │ │ Vault / Encrypted │
│ │<══════════════════ │ │
│ fetch() interceptor │═══ broker:resolve │ + Policy enforced │
│ (channel APIs) │ │ + Auth injected: │
│ │ │ header / url-path │
│ No credentials. │ ~/.aquaman/ │ basic / oauth │
│ No open ports. │ proxy.sock │ │
│ Nothing to steal. │ (chmod 0o600) │ │
└──────────────────────┘ └──┬─────────┬─────────┘
│ │
│ ▼
│ ~/.aquaman/audit/
│ (hash-chained)
▼
api.anthropic.com
api.telegram.org
slack.com/api …
403، ولا تحصل أبداً على رؤوس مصادقة حقيقية.none، للاستخدام فقط عند السكون (يرفض الوكيل حركة المرور).POST /broker/resolve يحضر بيانات اعتماد لكل استدعاء أداة، مقيد ببيئة أمر واحد، ثم ينتهي.لا يرى الوكيل أبداً سوى اسم مضيف مراقب (aquaman.local) أو علامة مؤقتة (aquaman-proxy-managed). لا يرى مفتاحاً حقيقياً أبداً، ولا يوجد منفذ TCP مفتوح لاستطلاع العمليات الأخرى.
النموذج المفصل - تفاصيل خاصة بكل تكامل (نطاق معترض HTTP، ملفات تعريف المصادقة، نتائج الماسح الضوئي، ملاحظة ناشر ClawScan) - موجود في packages/plugin/README.md و packages/coder/README.md.
يحتوي أكوامان على اختبارات توافقية قابلة للتشغيل تحت test/compliance/ مرسلة إلى:
test/compliance/atlas/)test/compliance/nist/)بالإضافة إلى سرديات توافق مع CISA/Five-Eyes "تبني حذر لخدمات الذكاء الاصطناعي الوكيلة" (أبريل 2026)، وCSA MAESTRO، وOWASP Top 10 للتطبيقات الوكيلة. تعمل الاختبارات كجزء من npm test. راجع docs/compliance/ للخرائط.
لا تستطيع نطاقات OAuth التمييز بين "كتابة مسودة بريد إلكتروني" و"إرسال بريد إلكتروني". كلاهما gmail.send. سياسات الطلبات تسد هذه الفجوة.
# ~/.aquaman/config.yaml
policy:
anthropic:
defaultAction: allow
rules:
- method: "*"
path: "/v1/organizations/**"
action: deny # حظر API الإدارة / الفوترة
openai:
defaultAction: allow
rules:
- method: "*"
path: "/v1/organization/**"
action: deny
- method: DELETE
path: "/v1/**"
action: deny # لا عمليات حذف
slack:
defaultAction: allow
rules:
- method: "*"
path: "/admin.*"
action: deny
gmail:
defaultAction: allow
rules:
- method: POST
path: "/v1/users/*/messages/send"
action: deny # المسودات مسموحة، الإرسال محظور
defaultAction* يطابق داخل مقطع، ** يطابق صفراً أو أكثر من المقاطعaquaman setup يطبق إعدادات آمنة افتراضية للخدمات المخزنة (anthropic, openai, slack, gmail).aquaman policy list / aquaman policy test <svc> <method> <path> للفحص / التشغيل الجاف.أحضر خزنتك الخاصة - لا يوجد تخزين خاص لأكوامان. اختر الخلفية التي تديرها بالفعل؛ تبقى الأسرار هناك، ويقرأها الوكيل في مكانها.
يكتشف aquaman setup تلقائياً إعداداً افتراضياً معقولاً (macOS → keychain; Linux → keychain إذا كان libsecret موجوداً، أو systemd-creds إذا كان systemd ≥ 256، أو encrypted-file).
encrypted-file هو ملاذ أخير للبيئات الرأسية Linux/CI بدون سلسلة مفاتيح أصلية. لأمان أفضل على Linux، ثبّت libsecret-1-dev (GNOME Keyring)، استخدم systemd-creds (ربط TPM2)، أو استخدم 1Password/Vault.
الخلفيات ذات تكلفة لكل وصول — 1password (موجه بيومتري لكل قراءة في وضع تطبيق سطح المكتب)، bitwarden (~1-2 ثانية تشغيل CLI)، vault (رحلة HTTP ذهاباً وإياباً) — تُخزَّن مؤقتاً في ذاكرة الخفيّ لمدة 15 دقيقة افتراضياً، بحيث تفتح جلسة الوكيل النشطة الخزنة مرة واحدة لكل نافذة زمنية بدلاً من فتحها مرة واحدة لكل طلب. الخلفيات الأخرى سريعة بالفعل أو تخزّن داخلياً، لذا التخزين المؤقت معطل لها افتراضياً. اضبطه باستخدام credentials.cacheTtlSeconds في ~/.aquaman/config.yaml (أو AQUAMAN_CACHE_TTL); 0 يعطل التخزين المؤقت.
المقايضة الصادقة: موجه بيومتري لكل وصول هو اختبار لوجود المستخدم، ويقوم التخزين المؤقت بإزالة اختبار الوجود لكل وصول خلال نافذة TTL. بالنسبة للوكلاء غير المراقبين، لا يتم الرد على ذلك الموجه أبداً - يتم التخلي عن الخزنة لصالح ملف .env نصي، وهو أسوأ بشكل قاطع. التخزين المؤقت لا يحرك حدود العزل: القيم تعيش فقط في عملية الوكيل (حيث تنتقل بالفعل في كل طلب)، لا تُكتب أبداً على القرص، ويتم إبطالها فوراً عند التناوب عبر aquaman credentials add. عمليات الكتابة تذهب دائماً إلى خزنتك. تم اختبار التوافق في test/compliance/cache-residency.test.ts. للحصول على صفر موجهات مع 1Password، استخدم حساب خدمة مقيد بخزنة aquaman - سيرشدك aquaman doctor إلى ذلك.
MIT - انظر LICENSE.
| الحزمة | وظيفتها | متى تُثبّت |
|---|
aquaman-proxy | الأساس: الخزنة، الخفيّ، التدقيق، السياسة، CLI. القطعة التي يحتاجها الجميع. | دائماً. |
aquaman-plugin | محول Gateway الخاص بـ OpenClaw. يُطلق الخفيّ عند بدء Gateway؛ يعترض حركة القنوات؛ 25 خدمة مدمجة عبر 5 أوضاع مصادقة. | إذا كنت تدير OpenClaw Gateway. متوفر أيضاً على https://clawhub.ai/plugins/aquaman-plugin |
aquaman-coder | محول وكيل البرمجة (AI coding-agent). مراجع aquaman://service/key خاصة بالمشروع تُحل عند كل استدعاء لأداة Bash. | إذا كنت تستخدم Claude Code (حالياً) - Codex / OpenCode / Cursor مخطط لها. |
aquaman-hermes | إضافة مضيف Heromes (بلغة Python، على PyPI). يوجه Hermes إلى مستمع حلقة استرجاعية (loopback) مقيد برمز عبر متغيرات ANTHROPIC_BASE_URL/OPENAI_BASE_URL الأصلية؛ يضيف أمر /aquaman-status وأداة وفحص صحي داخل الجلسة. العزل على جانب الخفيّ؛ لا تحمل الإضافة أي بيانات اعتماد. | إذا كنت تدير مضيف Hermes. pip install aquaman-hermes |
| الطبقة | ماذا تفعل | ماذا تمنع |
|---|
| عزل العمليات | بيانات الاعتماد في عملية منفصلة، متصلة عبر مقبس Unix (chmod 0o600) | الوكيل المخترق لا يستطيع قراءة المفاتيح - مساحة عنوان مختلفة، لا منفذ TCP لاستطلاعه |
| القائمة البيضاء للخدمات | proxiedServices يتحكم بأي APIs يمكن للوكيل الوصول إليها | لا يستطيع الوكيل التحدث إلى خدمات لم تأذن بها |
| سياسات الطلبات | قواعد الطريقة + المسار لكل خدمة، تُنفّذ قبل حقن بيانات الاعتماد | يمكن للوكيل الوصول إلى Anthropic ولكن ليس API الإدارة الخاص بها؛ يمكنه كتابة مسودات البريد الإلكتروني ولكن ليس إرسالها |
| سجل التدقيق | سجلات متسلسلة بتجزئة SHA-256 لكل استخدام لبيانات الاعتماد | التحقيقات بعد الحوادث، كشف التلاعب، أدلة الامتثال |
| وسيط لكل استدعاء أداة (coder) | aquaman-coder exec يحضر بيانات الاعتماد لأمر واحد في كل مرة | لا تنتشر بيانات الاعتماد عبر بيئة شل الوكيل |
| تعتيم المخرجات (coder) | aquaman-coder exec يمرّر stdout/stderr عبر مُعتّم يمحو كل قيمة حقنها حرفياً - بالإضافة إلى أنماط عامة للمزودات كخطة احتياطية | حتى بيانات الاعتماد التعسفية غير القابلة للتشكيل لا تصل إلى نص الوكيل |
| الخلفية | الأنسب لـ | الإعداد |
|---|
keychain | التطوير المحلي على macOS (افتراضي) | يعمل فوراً |
encrypted-file | Linux، WSL2، CI/CD | AES-256-GCM، محمي بكلمة مرور |
keepassxc | مستخدمو KeePass الحاليون | عيّن AQUAMAN_KEEPASS_PASSWORD أو ملف مفتاح |
1password | مشاركة بيانات الاعتماد بين الفريق | brew install 1password-cli && op signin — للوكلاء غير المراقبين استخدم حساب خدمة (OP_SERVICE_ACCOUNT_TOKEN) |
vault | إدارة أسرار المؤسسات | عيّن VAULT_ADDR + VAULT_TOKEN |
systemd-creds | Linux مع systemd ≥ 256 | مدعوم بـ TPM2، لا حاجة للجذر |
bitwarden | مستخدمو Bitwarden | bw login && export BW_SESSION=$(bw unlock --raw) |