## বেশির ভাগ নির্মাতার সামনে সমস্যা

আপনি যদি একটি দোকানের বিরুদ্ধে একটি এজেন্ট চালান, তাহলে অ্যাট্রিবিউশন তুচ্ছ৷ আপনি জানেন প্রতি সারি কে লিখেছেন। আপনি এজেন্ট লিখেছেন.

যে মুহুর্তে আপনি একই নিওটোমা উদাহরণের বিরুদ্ধে দুই, তিন, পাঁচটি এজেন্ট চালান, [ছবি পরিবর্তন হয়](/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 বেছে নিয়েছি কারণ এর পিছনে থাকা ব্যক্তি, ডিক হার্ড, একজন বন্ধু এবং আমার পরিচিত একজন গভীরতম পরিচয় বিশেষজ্ঞ। তিনি OAuth 2.0 ([RFC 6749](https://www.rfc-editor.org/rfc/rfc6749)), সহ-লেখক OpenID প্রমাণীকরণ 2.0 সম্পাদনা করেছেন এবং [OpenID ফাউন্ডেশন](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, MCP-s ওভার দ্য টুল লিখুন এবং MCP-s উভয়ই MLT এবং স্টোর করুন HTTP প্রতিটি পর্যবেক্ষণ, সম্পর্ক, উত্স, এবং ব্যাখ্যা স্ট্যাম্প:

- একটি যাচাইকৃত এজেন্ট শনাক্তকারী (স্বাক্ষর করা লেখকদের জন্য পাবলিক-কী থাম্বপ্রিন্ট, এজেন্ট টোকেনের জন্য JWT বিষয় এবং ইস্যুকারী, ক্লায়েন্ট ইনফো নাম এবং ফলব্যাক হিসাবে সংস্করণ)।
- একটি বিশ্বাসের স্তর যা শ্রেণীবদ্ধ করে যে পরিচয়টি কতটা দৃঢ়ভাবে প্রমাণিত হয়েছে।
- লেখাটি যে পরিবহনে এসেছে।

পাঁচটি স্তর বর্ণালীকে কভার করে:

- `হার্ডওয়্যার`: এজেন্ট একটি `cnf.attestation` খাম (Apple Secure Enclave, WebAuthn প্যাকড, বা 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_*`) একটি বুট-টাইম ব্যর্থতার কারণ যদি এখনও সেট থাকে, একটি কাঠামোগত ত্রুটি মাইগ্রেশন কমান্ডের দিকে নির্দেশ করে৷

একটি অনুদান স্থগিত তাত্ক্ষণিক. এজেন্টের পরবর্তী অনুরোধ ভর্তি ব্যর্থ হয়. পুনরুদ্ধার সমান তাত্ক্ষণিক। কোনো সার্ভার রিস্টার্ট নেই, কোনো কনফিগারেশন রিলোড নেই।

যে কেউ গ্রাহক-মুখী এজেন্টদের সাথে একটি পণ্য চালাচ্ছেন, এর অর্থ হল ঘটনার প্রতিক্রিয়া "একটি নতুন কনফিগারেশন দিয়ে পরিষেবাটি পুনরায় চালু করুন" থেকে "একটি অনুদান স্থগিত করুন এবং তদন্ত করুন।" একটি দুর্ব্যবহারকারী এজেন্টের বিস্ফোরণ ব্যাসার্ধ অনুমোদিত ক্রিয়াকলাপগুলির সাথে আবদ্ধ।

## আইডেন্টিটি প্রিফ্লাইট

প্রতিটি এজেন্ট এখন নিওটোমাকে জিজ্ঞাসা করতে পারে, এটি কোনও ডেটা তৈরি করার আগে, এটি একটি বিশ্বস্ত লেখক হিসাবে স্বীকৃত কিনা।

তিনটি সমতুল্য এন্ট্রি পয়েন্ট:

- HTTP এর উপর `GET/session`।
- একটি MCP টুল হিসাবে `get_session_identity`।
- CLI তে `নিওটোমা প্রমাণীকরণ সেশন`।

প্রতিটি সমাধান করা বিশ্বাসের স্তর, অনুদানের অবস্থা (স্বীকৃত বা না, কারণ সহ), বেনামী-লেখা নীতি, এবং একটি বুলিয়ান `যোগ্য_ফর_ট্রাস্টেড_রাইটস` প্রদান করে। প্রতিক্রিয়াতে একটি ডায়গনিস্টিক ব্লক রয়েছে যা ব্যাখ্যা করে যে কীভাবে স্তরটি সমাধান করা হয়েছে। একজন নতুন এজেন্ট সেশনের শুরুতে বেনামী সারি লেখার পরিবর্তে জোরে ব্যর্থ হয় যতক্ষণ না কেউ লক্ষ্য করে।

পাঠানো MCP নির্দেশাবলী প্রতিটি সংযুক্ত এজেন্টকে লিখতে সক্ষম করার আগে এই চেকটি চালানোর জন্য বলে।

## আমি এইটা কোথায় চালাচ্ছি

আমার স্ট্যাকের তিনজন স্বতন্ত্র পরিষেবা এজেন্ট আজ AAuth-এর অধীনে Neotoma-কে লেখেন।

**Cursor MCP প্রক্সি।** কার্সার থেকে প্রতিটি MCP অনুরোধ একটি সাইনিং প্রক্সি (`mcp_identity_proxy.py`) এর মাধ্যমে প্রবাহিত হয় যা একটি RFC 9421 স্বাক্ষর একটি `aa-agent+jwt` এজেন্ট টোকেন দিয়ে ইনজেক্ট করে। নিওটোমা স্বাক্ষর যাচাই করে, পরিচয় সমাধান করে (`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-এ। এটির অনুদান শুধুমাত্র `নিওটোমা_ফিডব্যাক` ক্রিয়াকলাপের জন্য বিস্তৃত।

**[ডার্কমেশ](https://github.com/markmhendrickson/darkmesh) উষ্ণ-ইন্ট্রো রাইটব্যাক।** আমার [ডার্কমেশ কাঁটা](https://github.com/markmhendrickson/darkmesh/blob/main/docs/neotoma_integration.md) ([প্রসঙ্গ]([প্রসঙ্গ]-/poststte) ওয়ার্ম-ইনট্রো RFC 9421 স্বাক্ষর এবং একটি `aa-agent+jwt` টোকেন সহ নিওটোমাতে ফিরে আসে। প্রতিটি নোডের `agent_sub`, `agent_iss`, এবং কী থাম্বপ্রিন্ট সহ ভূমি প্রকাশ করে, প্রতি-নোড অনুদান দ্বারা স্কোপ করা হয়।

ডার্কমেশ যৌথ পরীক্ষাগুলি একটি প্রতিকূল আকারে প্রয়োগকারীকে প্রমাণ করেছে। একটি পিয়ার নোড থেকে একটি দ্বিতীয় সিমুলেটেড এজেন্ট তার অনুদানে সেই সত্তা টাইপ ছাড়াই একটি `উষ্ণ_সূচনা_প্রকাশ` লেখার চেষ্টা করেছে৷ নিওটোমা লেখাটি প্রত্যাখ্যান করেছে। অনুমোদিত নোডের লেখাগুলি অপরিবর্তিত হয়েছে৷

রোডম্যাপের পরবর্তী: [markmhendrickson.com-এর পাবলিক এজেন্ট](https://markmhendrickson.com/agent/) একটি নিওটোমা দৃষ্টান্তকে তার স্মৃতি হিসাবে মোড়ানো এবং আজ শুধুমাত্র সেই সত্তাগুলিকে পরিবেশন করে যা আমি স্পষ্টভাবে সর্বজনীন চিহ্নিত করেছি৷ আমি AAuth-গেটেড রিড যোগ করার পরিকল্পনা করছি যাতে অনুমোদিত দর্শকরা নির্দিষ্ট অ-পাবলিক সত্তার ধরন সম্পর্কে জিজ্ঞাসা করতে পারেন। একই স্বাক্ষরিত-পরিচয়-প্লাস-অনুদানের যন্ত্রপাতি, রিড পাথে প্রয়োগ করা হয়েছে।

## ফ্লিট-ওয়াইড আপগ্রেড

নিওটোমা সার্ভার থেকে প্রতিটি হ্যান্ডশেকে প্রতিটি সংযুক্ত ক্লায়েন্টকে তার ক্যানোনিকাল MCP নির্দেশাবলী প্রেরণ করে। v0.6.0-এ সেই নির্দেশগুলি এখন অ্যাট্রিবিউশন প্রিফ্লাইট, `অবজারভেশন_সোর্স` ট্যাগিং, উত্তর-উদ্ধৃত প্রোভেন্যান্স এজ, হিউরিস্টিক-মার্জ সতর্কতার জন্য একটি 'অস্পষ্ট (N)' ডিসপ্লে গ্রুপ এবং একটি কাঠামোগত প্রতিক্রিয়া-জমা লুপ কোড করে।

যখন আমি আমার সার্ভার আপগ্রেড করি, তখন আমার কার্সার, ক্লড কোড, কোডেক্স এবং ওপেনকোড হুকগুলি নতুন আচরণগুলি গ্রহণ করে৷ ক্লায়েন্ট-সাইড রিলিজ নেই। প্রতি-টুল মাইগ্রেশন নেই। একটি সার্ভার বাম্প, পাঁচটি এজেন্ট আপডেট করা হয়েছে। গ্রাহক ফ্লিট চালানোর জন্য যে কেউ, একই প্যাটার্ন প্রযোজ্য: নিওটোমা ইনস্ট্যান্স আপগ্রেড করুন এবং প্রতিটি সংযুক্ত এজেন্ট ক্লায়েন্ট স্থাপন ছাড়াই নতুন ডিফল্ট তুলে নেয়।

## নিরীক্ষা পৃষ্ঠ

নিয়ন্ত্রিত বাজারে পণ্য-নির্মাতাদের জন্য, একটি গ্রাহকের কাছ থেকে ফলো-আপ প্রশ্ন খুব কমই হয় "আপনার সিস্টেম কি এটি মনে রেখেছে।" এটি "কে এটি লিখেছেন, এবং আপনি প্রমাণ করতে পারেন যে তারা অনুমোদিত ছিল।"

v0.6.0 এর পরে এটি প্রথম শ্রেণীর ডেটার বিপরীতে পড়া হয়:

- `GET/agents` সার্ভারের দেখা প্রতিটি এজেন্ট পরিচয় গণনা করে।
- `GET /agents/{key}` প্রতি-এজেন্টের বিস্তারিত ভিউ প্রদান করে।
- `GET /agents/{key}/records` অডিট যা একটি প্রদত্ত এজেন্ট রচিত রেকর্ড করে।
- `GET /এজেন্ট/অনুদান` সমস্ত অনুদান, তাদের ক্ষমতা এবং তাদের জীবনচক্রের স্থিতি তালিকাভুক্ত করে।

আপনি যদি স্বাস্থ্যসেবা, অর্থ, আইনি, বা এন্টারপ্রাইজ উল্লম্ব গ্রাহকদের কাছে এজেন্টিক কার্যকারিতা পাঠান, তবে এটি এমন পৃষ্ঠ যা আপনার গ্রাহকরা শেষ পর্যন্ত দাবি করবে।

## কিভাবে এটি চালু করবেন

``বাশ
neotoma auth keygen --alg ES256
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 নয়। একই রিলিজ ওভার-মার্জড রেকর্ড, ফ্লিট স্ন্যাপশট এক্সপোর্ট প্লাস ড্রিফ্ট টুলিং, `কথোপকথন_বার্তা` এবং `প্রেরক_কাইন্ড` এর মাধ্যমে প্রথম-শ্রেণীর মাল্টি-এজেন্ট কথোপকথন, এবং একটি আঁটসাঁট 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
নিওটোমা প্রমাণীকরণ সেশন
```

সার্ভার আপগ্রেড করা আপনাকে নতুন অ্যাট্রিবিউশন স্ট্যাম্পিং দেয় এবং পরবর্তী ক্লায়েন্ট হ্যান্ডশেকে MCP নির্দেশ রিফ্রেশ করে। এমসিপির মাধ্যমে ইতিমধ্যে সংযুক্ত এজেন্টদের জন্য কোনো ক্লায়েন্ট-সাইড ইনস্টলের প্রয়োজন নেই।

সম্পূর্ণ ইনস্টল করুন: [neotoma.io/install](https://neotoma.io/install)। রেপো: [github.com/markmhendrickson/neotoma](https://github.com/markmhendrickson/neotoma)। রিলিজ নোট: [v0.6.0](https://github.com/markmhendrickson/neotoma/releases/tag/v0.6.0)।