## زیادہ تر بلڈرز کے سامنے مسئلہ

اگر آپ ایک اسٹور کے خلاف ایک ایجنٹ چلاتے ہیں، تو انتساب معمولی بات ہے۔ آپ جانتے ہیں کہ ہر قطار کس نے لکھی ہے۔ آپ نے ایجنٹ لکھا۔

جس لمحے آپ ایک ہی نیوٹوما مثال کے خلاف دو، تین، پانچ ایجنٹ چلاتے ہیں، [تصویر بدل جاتی ہے](/posts/when-agents-share-state-everything-breaks)۔ ہر ایجنٹ مشاہدات، تعلقات، ذرائع، تشریحات لکھتا ہے۔ اسٹور ان سب سے ریاست جمع کرتا ہے۔ اگر ان ایجنٹوں میں سے کوئی ایک غلط ڈیٹا لکھنا شروع کر دیتا ہے، بالکل غلط خلاصے، باسی تاریخیں، غلط انتسابات، تو یہ بتانے کا واحد طریقہ یہ ہے کہ کون سے ریکارڈ پر بھروسہ کیا جائے، یہ استدلال کرنا ہے کہ کس ایجنٹ نے انہیں لکھا ہے۔

فی قطار انتساب کے بغیر، کچھ غلط ہونے پر آپ کے اختیارات ناہموار ہیں: اسٹور کو صاف کریں اور دوبارہ اندراج کریں، یا خراب قطاروں کو چھوڑیں اور بڑھے ہوئے کے ساتھ رہیں۔ جیسے جیسے اسٹور بڑھتا ہے دونوں خراب ہوتے جاتے ہیں۔

یہ مسئلہ کسی بھی ایجنٹ سے چلنے والی پروڈکٹ بھیجنے والے کے لیے تیز تر ہو جاتا ہے۔ آپ کے صارفین کے ریکارڈ ایک بیڑے کے ذریعے لکھے جا رہے ہیں: آپ کے اپنے ایجنٹس، تیسرے فریق کے ایجنٹس جو MCP کے ذریعے مربوط ہیں، شاید پچھلے ہفتے کسی نے انسٹال کیا ہوا پلگ ان۔ جب کوئی صارف پوچھتا ہے کہ "یہ میرے اکاؤنٹ میں کس نے لکھا ہے اور کس کے اختیار پر؟"، تو اس سوال کا جواب ڈیٹا سے ہونا چاہیے، نہ کہ سرور لاگز اور گفتگو کے ٹرانسکرپٹس میں باہمی تعلق کی مشق سے۔

میں کرسر، کلاڈ کوڈ، کوڈیکس، اور چیٹ جی پی ٹی پر ایجنٹ چلاتا ہوں، یہ سب ایک نیوٹوما مثال پر لکھتے ہیں۔ میں نے اس بارے میں لکھا [وہ اسٹیک دراصل کیا کرتا ہے](/posts/what-my-agentic-stack-actually-does)۔ Neotoma کا AAuth انضمام وہی ہے جو میرے اسٹیک اور اس پر تعمیر کرنے والے ہر فرد کے لیے خلا کو ختم کرتا ہے: ہر ایجنٹ اپنی کلید لاتا ہے، اور بیڑے کے بڑھنے کے ساتھ ہی اسٹور قابل اعتماد رہ سکتا ہے۔

## کیوں AAuth

انتساب کی تہہ [AAuth](https://www.aauth.dev/) پر بنائی گئی ہے، ایک کھلا پروٹوکول جو ہر HTTP کلائنٹ کو اس کی اپنی خفیہ شناخت فراہم کرتا ہے۔ کوئی پری رجسٹریشن نہیں۔ کوئی مشترکہ راز نہیں۔ کوئی بیئرر ٹوکن نہیں۔ ہر درخواست پر [RFC 9421](https://datatracker.ietf.org/doc/html/rfc9421) HTTP پیغام دستخط کے ساتھ دستخط ہوتے ہیں، اس لیے چوری شدہ ٹوکن دستخطی کلید کے بغیر بیکار ہے۔

میں نے AAuth کا انتخاب کیا کیونکہ اس کے پیچھے والا شخص، Dick Hardt، ایک دوست ہے اور شناخت کے سب سے گہرے ماہرین میں سے ایک ہے جسے میں جانتا ہوں۔ اس نے OAuth 2.0 ([RFC 6749](https://www.rfc-editor.org/rfc/rfc6749)) میں ترمیم کی، OpenID Authentication 2.0 کی شریک تصنیف کی، اور [OpenID Foundation](https://openid.net/foundation/me) کے بانی بورڈ ممبر تھے۔ یہ وہی سلسلہ ہے جو زیادہ تر ڈویلپرز کو اجازت کے کوڈ کے بہاؤ اور فیڈریٹڈ لاگ ان کے ذریعے ملتا ہے۔ جب اس تاریخ کا کوئی فرد خاص طور پر ایجنٹوں کے لیے ایک نیا پروٹوکول شروع کرتا ہے، تو اس کے خلاف تعمیر کرنے کے قابل ہے۔

## جو اب ہر لکھتا ہے

[v0.6.0](https://github.com/markmhendrickson/neotoma/releases/tag/v0.6.0) ہر تحریری سطح پر فی قطار ایجنٹ کا انتساب بھیجتا ہے: `/store`, `/observations/create`, `/create_relationship`, `/correct`, `/entities, s اور MCP s سٹور اور ٹول دونوں کو لکھیں HTTP ہر مشاہدہ، تعلق، ماخذ، اور تشریحی ڈاک ٹکٹ:

- ایک تصدیق شدہ ایجنٹ شناخت کنندہ (دستخط شدہ مصنفین کے لیے عوامی کلید کے انگوٹھے کا نشان، JWT موضوع اور ایجنٹ ٹوکن کے لیے جاری کنندہ، کلائنٹ انفو کا نام اور ورژن بطور فال بیک)۔
- ایک اعتماد کا درجہ جو درجہ بندی کرتا ہے کہ شناخت کتنی مضبوطی سے ثابت ہے۔
- وہ نقل و حمل جس پر لکھا ہوا تھا۔

پانچ درجے سپیکٹرم کا احاطہ کرتے ہیں:

- `ہارڈ ویئر`: ایجنٹ نے ایک `cnf.attestation` لفافہ فراہم کیا (Apple Secure Enclave, WebAuthn packed, or TPM2) جس کی تصدیق سرور نے بھروسہ مند جڑوں سے کی۔
- `آپریٹر_توثیق شدہ`: دستخط کی تصدیق کی گئی ہے، اور آپریٹر نے جاری کنندہ یا جاری کنندہ کے موضوع کے جوڑے کو فہرست میں شامل کرنے کی اجازت دی ہے۔ آپریٹر ہارڈ ویئر کی تصدیق کی ضرورت کے بغیر ایجنٹ کے عمل کی ضمانت دیتا ہے۔
- 'سافٹ ویئر': ایجنٹ نے ایک درست کلید کے ساتھ درخواست پر دستخط کیے، جس کی تصدیق سرور سے ہوئی۔ یہ وہ جگہ ہے جہاں آج زیادہ تر ایجنٹ اترتے ہیں، بشمول میری اپنی کرسر پراکسی فائل کی حمایت یافتہ ES256 JWK کے ساتھ دستخط کرنا۔
- `unverified_client`: ایجنٹ نے خود کو ایک قابل شناخت کلائنٹ کی معلومات کے ساتھ اعلان کیا لیکن دستخط نہیں کیا۔
- `گمنام`: کوئی شناخت نہیں۔

نتیجہ: آپ اپنے اسٹور میں کسی بھی قطار کو دیکھ سکتے ہیں اور فرسٹ کلاس ڈیٹا کے خلاف پڑھنے کے طور پر "یہ کس ایجنٹ نے لکھا ہے" کا جواب دے سکتے ہیں۔

## کنفگ فائلوں کے بجائے گرانٹس

ابتدائی v0.6.0 سائیکل میں، صلاحیتوں کو ماحولیاتی متغیر JSON فائلوں سے لوڈ کیا گیا تھا۔ اس نے ایجنٹوں کے ایک مستحکم سیٹ کے لیے کام کیا لیکن اس لمحے کو توڑ دیا جب آپ سرور کو دوبارہ شروع کیے بغیر ایک ایجنٹ کو معطل کرنا چاہتے تھے۔

اب: ہر ایک `ایجنٹ_گرانٹ` ایک فرسٹ کلاس نیوٹوما ہستی ہے۔ یہ ایک AAuth شناخت سے میل کھاتا ہے (موضوع، جاری کنندہ، انگوٹھے کے نشان، یا ایک مجموعہ کے لحاظ سے)، ہر آپریشن اور ہستی کی قسم کے دائرہ کار میں صلاحیت کے اندراجات رکھتا ہے، اور اس کا لائف سائیکل ہے: `فعال`، `معطل`، `منسوخ`۔ داخلہ مڈل ویئر ہر درخواست پر اپنی مماثل گرانٹ کے لیے ایک تصدیق شدہ AAuth شناخت کو حل کرتا ہے، درخواست کے سیاق و سباق پر گرانٹ کے صارف اور صلاحیتوں پر مہر لگاتا ہے، اور ڈاؤن اسٹریم انفورسمنٹ گرانٹ کے خلاف ہر کارروائی کو چیک کرتا ہے۔

گرانٹس کا انتظام انسپکٹر UI، REST API (`POST/agents/grants`، `PATCH`، معطل، منسوخ، بحال) کے ذریعے کیا جاتا ہے یا `neotoma agents grants import` کے ذریعے پرانی env-config سے ایک بار منتقل کیا جاتا ہے۔ لیگیسی env vars (`NEOTOMA_AGENT_CAPABILITIES_*`) بوٹ ٹائم کی ناکامی کا سبب بنتی ہے اگر اب بھی سیٹ ہے، جس میں منتقلی کمانڈ کی طرف اشارہ کرنے والی ساختی خرابی ہے۔

گرانٹ کو معطل کرنا فوری ہے۔ ایجنٹ کی اگلی درخواست داخلے میں ناکام ہو جاتی ہے۔ بحال کرنا بھی اتنا ہی فوری ہے۔ کوئی سرور دوبارہ شروع نہیں، کوئی تشکیل دوبارہ لوڈ نہیں ہے۔

کسی بھی شخص کے لیے جو گاہک کا سامنا کرنے والے ایجنٹوں کے ساتھ پروڈکٹ چلا رہا ہے، اس کا مطلب ہے کہ واقعہ کا ردعمل "ایک نئی تشکیل کے ساتھ سروس کو دوبارہ شروع کریں" سے "ایک گرانٹ کو معطل کر کے تفتیش" تک لے جاتا ہے۔ بدتمیزی کرنے والے ایجنٹ کے دھماکے کا رداس ان کارروائیوں سے منسلک ہوتا ہے جو اجازت دیتے ہیں۔

## شناخت پری فلائٹ

ہر ایجنٹ اب Neotoma سے پوچھ سکتا ہے، اس سے پہلے کہ وہ کوئی ڈیٹا تیار کرے، آیا اسے ایک قابل اعتماد مصنف کے طور پر تسلیم کیا گیا ہے۔

تین مساوی داخلہ پوائنٹس:

- HTTP پر `GET/session`۔
- `get_session_identity` بطور MCP ٹول۔
- CLI پر 'neotoma auth سیشن'۔

ہر ایک حل شدہ اعتماد کا درجہ، گرانٹ کی حیثیت (تسلیم شدہ یا نہیں، وجہ کے ساتھ)، گمنام لکھنے کی پالیسی، اور ایک بولین `قابل_قابل_ٹرسٹڈ_رائٹس` واپس کرتا ہے۔ جواب میں ایک تشخیصی بلاک شامل ہے جس میں بتایا گیا ہے کہ درجے کو کیسے حل کیا گیا۔ ایک نیا ایجنٹ سیشن شروع ہونے پر گمنام قطاریں لکھنے کے بجائے زور سے ناکام ہو جاتا ہے جب تک کہ کوئی نوٹس نہ لے۔

بھیجی گئی MCP ہدایات ہر منسلک ایجنٹ کو لکھنے کو فعال کرنے سے پہلے اس چیک کو چلانے کے لیے کہتی ہیں۔

## جہاں میں اسے چلا رہا ہوں۔

میرے اسٹیک میں تین الگ الگ سروس ایجنٹ آج AAuth کے تحت Neotoma کو لکھتے ہیں۔

**Cursor MCP پراکسی۔** کرسر کی طرف سے ہر MCP درخواست ایک دستخط کرنے والی پراکسی (`mcp_identity_proxy.py`) سے گزرتی ہے جو ایک RFC 9421 دستخط کو `aa-agent+jwt` ایجنٹ ٹوکن کے ساتھ لگاتی ہے۔ Neotoma دستخط کی توثیق کرتا ہے، شناخت کو حل کرتا ہے (`sub=cursor@markmhendrickson.com`, `iss=https://markmhendrickson.com`)، `agent_grant` سے میل کھاتا ہے، اور `tier=software` پر تحریر کو تسلیم کرتا ہے۔ پراکسی اسٹارٹ اپ پر سیشن پری فلائٹ بھی چلاتی ہے اور اگر سرور گمنام درجے کی اطلاع دیتا ہے تو بند ہونے میں ناکام ہوسکتا ہے۔

**فیڈ بیک پائپ لائن۔** `agent.neotoma.io` پر ایک Netlify ریلے AAuth کے دستخط شدہ [Cloudflare Access](https://www.cloudflare.com/zero-trust/) سرنگ کے ذریعے Neotoma میں ایجنٹ بگ کی رپورٹ بھیجتا ہے۔ اس کی گرانٹ کا دائرہ صرف `neotoma_feedback` آپریشنز تک ہے۔

* گرم تعارف RFC 9421 دستخطوں اور ایک `aa-agent+jwt` ٹوکن کے ساتھ Neotoma میں واپس ظاہر کرتا ہے۔ ہر ایک نوڈ کے `agent_sub`، `agent_iss`، اور کلیدی انگوٹھے کے نشان کے ساتھ زمین کو ظاہر کرتا ہے، جس کا دائرہ فی نوڈ گرانٹ سے ہوتا ہے۔

Darkmesh مشترکہ ٹیسٹوں نے ایک مخالف شکل میں نفاذ کو ثابت کیا۔ ہم مرتبہ نوڈ کے ایک دوسرے نقلی ایجنٹ نے اس کی گرانٹ میں اس ہستی کی قسم کے بغیر ایک `warm_intro_reveal` لکھنے کی کوشش کی۔ نیوٹوما نے تحریر کو مسترد کر دیا۔ مجاز نوڈ کی تحریریں بغیر کسی تبدیلی کے گزر گئیں۔

روڈ میپ پر اگلا: [public agent on markmhendrickson.com](https://markmhendrickson.com/agent/) Neotoma مثال کو اپنی یادداشت کے طور پر لپیٹتا ہے اور آج صرف ان اداروں کی خدمت کرتا ہے جنہیں میں نے واضح طور پر عوامی نشان زد کیا ہے۔ میں AAuth-gated ریڈز کو شامل کرنے کا ارادہ رکھتا ہوں تاکہ مجاز زائرین مخصوص غیر عوامی ہستی کی اقسام سے استفسار کر سکیں۔ وہی دستخط شدہ شناختی پلس گرانٹ مشینری، پڑھنے کے راستے پر لاگو ہوتی ہے۔

## فلیٹ وسیع اپ گریڈ

Neotoma ہر مصافحہ پر سرور سے ہر منسلک کلائنٹ کو اپنی کینونیکل MCP ہدایات بھیجتا ہے۔ v0.6.0 میں وہ ہدایات اب انتساب کی پری فلائٹ، `مشاہدہ_ذریعہ` ٹیگنگ، جوابی حوالہ شدہ پرووینس ایجز، ہیورسٹک-مرج وارننگز کے لئے ایک `مبہم (N)` ڈسپلے گروپ، اور ایک منظم فیڈ بیک-سبمیشن لوپ کو کوڈفائی کرتی ہیں۔

جب میں نے اپنے سرور کو اپ گریڈ کیا، میرے کرسر، کلاڈ کوڈ، کوڈیکس، اور اوپن کوڈ ہکس نے نئے رویے کو اٹھایا۔ کوئی کلائنٹ سائڈ ریلیز نہیں ہے۔ کوئی فی ٹول ہجرت نہیں۔ ایک سرور ٹکرانا، پانچ ایجنٹوں کو اپ ڈیٹ کیا گیا۔ کسٹمر فلیٹس چلانے والے کسی بھی شخص کے لیے، وہی پیٹرن لاگو ہوتا ہے: نیوٹوما مثال کو اپ گریڈ کریں اور ہر منسلک ایجنٹ کلائنٹ کی تعیناتی کے بغیر نئے ڈیفالٹس اٹھا لیتا ہے۔

## آڈٹ کی سطح

ریگولیٹڈ مارکیٹوں میں پروڈکٹ بنانے والوں کے لیے، گاہک کی جانب سے فالو اپ سوال شاذ و نادر ہی ہوتا ہے "کیا آپ کے سسٹم نے یہ یاد رکھا؟" یہ "جس نے لکھا ہے، اور کیا آپ ثابت کر سکتے ہیں کہ وہ مجاز تھے۔"

v0.6.0 کے بعد یہ فرسٹ کلاس ڈیٹا کے خلاف پڑھا جاتا ہے:

- `GET/agents` ہر ایجنٹ کی شناخت کو شمار کرتا ہے جسے سرور نے دیکھا ہے۔
- `GET /agents/{key}` فی ایجنٹ کی تفصیل کا منظر لوٹاتا ہے۔
- `GET /agents/{key}/records` آڈٹ جو ایک دیئے گئے ایجنٹ کو تحریر کرتا ہے۔
- `GET/agent/grants` تمام گرانٹس، ان کی صلاحیتوں، اور ان کے لائف سائیکل کی حیثیت کی فہرست دیتا ہے۔

اگر آپ صحت کی دیکھ بھال، مالیات، قانونی، یا انٹرپرائز عمودی میں صارفین کو ایجنٹ کی فعالیت بھیجتے ہیں، تو یہ وہ سطح ہے جس کا آپ کے گاہک آخرکار مطالبہ کریں گے۔

## اسے کیسے آن کیا جائے۔

''بش
neotoma auth keygen --alg ES256
neotoma auth سائن کی مثال
neotoma auth سیشن
``

انسپکٹر یا REST API کے ذریعے نئی شناخت کے لیے ایک گرانٹ بنائیں، آپ کے ایجنٹ کی ضرورتوں کے لیے صلاحیتوں کا دائرہ کار بنائیں۔ اگر آپ پرانے env-config ماڈل سے اپ گریڈ کر رہے ہیں، تو `neotoma agents grants import --owner-user-id <your_user_id>` کو ایک بار چلائیں، پھر لیگیسی متغیرات کو غیر سیٹ کریں۔

پروگرامیٹک دستخط کے لیے، [`@aauth/local-keys`](https://www.aauth.dev/) یا اس کے مساوی AAuth لائبریری RFC 9421 HTTP پیغام دستخط کے علاوہ `aa-agent+jwt` ٹوکن کے ساتھ درخواستوں پر دستخط کرتی ہے۔ نیوٹوما کلائنٹ کے دستخط شدہ خام بائٹس پر دستخط کی تصدیق کرتا ہے۔

AAuth کے بغیر تحریریں اب بھی کام کرتی ہیں۔ وہ ''گمنام'' درجے میں اترتے ہیں۔ بلڈرز جو مشکل ناکامی چاہتے ہیں وہ `NEOTOMA_AAUTH_STRICT=1` کو پلٹ سکتے ہیں اور `NEOTOMA_STRICT_AAUTH_SUBS` میں مخصوص مضامین شامل کر سکتے ہیں۔

## بھی بھیج دیا گیا۔

v0.6.0 صرف AAuth نہیں ہے۔ ایک ہی ریلیز سے زیادہ ضم شدہ ریکارڈز، فلیٹ اسنیپ شاٹ ایکسپورٹ پلس ڈرفٹ ٹولنگ، 'conversation_message' اور 'sender_kind' کے ذریعے فرسٹ کلاس ملٹی ایجنٹ کی بات چیت، اور ایک سخت API کا دائرہ کار کے لیے ایک ہی ریلیز لینڈ کرتا ہے۔ مکمل ضمیمہ [v0.6.0 ریلیز نوٹس](https://github.com/markmhendrickson/neotoma/releases/tag/v0.6.0) میں ہے۔

## انسٹال اور اپ گریڈ کریں۔

''بش
npm install -g neotoma@[0.6.0](https://github.com/markmhendrickson/neotoma/releases/tag/v0.6.0)
neotoma init
neotoma auth keygen
neotoma auth سیشن
``

سرور کو اپ گریڈ کرنے سے آپ کو اگلی کلائنٹ ہینڈ شیک پر نئی انتساب سٹیمپنگ اور MCP انسٹرکشن ریفریش ملتا ہے۔ MCP کے ذریعے پہلے سے جڑے ہوئے ایجنٹوں کے لیے کسی کلائنٹ سائیڈ انسٹال کی ضرورت نہیں ہے۔

مکمل انسٹال: [neotoma.io/install](https://neotoma.io/install)۔ Repo: [github.com/markmhendrickson/neotoma](https://github.com/markmhendrickson/neotoma)۔ ریلیز نوٹس: [v0.6.0](https://github.com/markmhendrickson/neotoma/releases/tag/v0.6.0)۔