OpenClaw এর মতো AI agent তৈরির নিয়ম
নিজস্ব সার্ভারে OpenClaw স্টাইলের AI agent তৈরি করার পদ্ধতি জানুন। CVE-2026-32922 এর মতো ঝুঁকি এড়াতে কেন security hardening করা জরুরি তা বিস্তারিত দেখুন।
OpenClaw আসলে কী
OpenClaw হলো একটি self-hosted personal AI agent। আপনি এটি আপনার নিজস্ব সার্ভারে চালাতে পারেন, আপনার ব্যবহৃত chat apps গুলোর সাথে এটি কানেক্ট করতে পারেন, এবং এটি shell commands চালাতে পারে, একটি browser নিয়ন্ত্রণ করতে পারে, আপনার ফাইল পড়া ও লেখা করতে পারে এবং আপনার পাঠানো মেসেজের ভিত্তিতে কাজ করতে পারে। এটি MIT-licensed, local-first, এবং ২০২৬ সালের মাঝামাঝি সময়ে এর GitHub stars সংখ্যা ৩80,000 এর বেশি, যা এটিকে প্ল্যাটফর্মের অন্যতম জনপ্রিয় প্রজেক্ট করে তুলেছে। এর জটিলতার আড়ালে এটি মূলত কিছু পার্টস বা অংশের একটি সুসংগঠিত সমন্বয়। এই পোস্টটি সেই পার্টসগুলো নিয়ে আলোচনা করবে যাতে আপনি বুঝতে পারেন এই ধরণের টুল কীভাবে তৈরি করা হয় এবং এর ঝুঁকিগুলো কোথায়।
একটি সতর্কবার্তা প্রথমেই দিয়ে রাখা প্রয়োজন, কারণ এটি নিচের প্রতিটি design choice কে প্রভাবিত করে। ২০২৬ সালের মার্চ মাসে OpenClaw এর মাত্র চার দিনের মধ্যে নয়টি security issues প্রকাশ করা হয়েছিল, যার মধ্যে একটি critical privilege-escalation flaw ছিল যার রেটিং ১০ এর মধ্যে ৯.৯ (CVE-2026-32922)। এই প্রজেক্টটি এমনভাবে ডিজাইন করা হয়েছে যাতে আপনি, অর্থাৎ operator, এটিকে আরও সুরক্ষিত (harden) করতে পারেন। একটি agent যা যেকোনো command চালাতে পারে, তার নিরাপত্তা নির্ভর করে সেটি যে box-এ চলছে এবং আপনি তার চারপাশে কী কী সীমা (limits) নির্ধারণ করে দিয়েছেন তার ওপর। পড়ার সময় এটি মনে রাখবেন।
The gateway daemon: একটি প্রসেস, যা প্রাইভেট রাখা হয়
এর কেন্দ্রে রয়েছে একটি মাত্র long-running process, যাকে সাধারণত gateway বলা হয়। এটি হলো control plane। এটি মেসেজ গ্রহণ করে, কী করতে হবে তা সিদ্ধান্ত নেয়, tools গুলো চালায় এবং রিপ্লাই পাঠায়। বাকি সবকিছু এর সাথেই যুক্ত থাকে।
gateway সম্পর্কে সবচেয়ে গুরুত্বপূর্ণ তথ্য হলো এটি কোথায় listen করে। ডিফল্টভাবে OpenClaw এটিকে loopback address, 127.0.0.1 এর সাথে bind করে, তাই আপনি নিজে থেকে এটি expose না করলে ইন্টারনেট থেকে এটি পাওয়া সম্ভব নয়। এটি সেখানেই রাখুন। এই একটি মাত্র প্রসেসই মূলত সব command চালায়, তাই একটি exposed gateway খুঁজে পাওয়া যেকোনো ব্যক্তিকে আপনার সার্ভারে রিমোট অ্যাক্সেস দিয়ে দেয়। যখন আপনার ল্যাপটপ থেকে এটি ব্যবহার করার প্রয়োজন হবে, তখন কোনো port ওপেন না করে VPN বা SSH tunnel ব্যবহার করুন। যে port এ পৌঁছানো সম্ভব নয়, কেউ সেটি আক্রমণ করতে পারবে না।
Channel connectors: মেসেজ গ্রহণ এবং রিপ্লাই পাঠানো
একটি personal agent তখনই কাজের উপযোগী যখন আপনি আপনার ব্যবহৃত অ্যাপগুলো থেকেই এর সাথে কথা বলতে পারেন। channel connectors সেই কাজটিই করে। প্রতিটি connector একটি নির্দিষ্ট প্ল্যাটফর্ম যেমন Telegram, WhatsApp, Slack, অথবা Discord এর সাথে সেই প্ল্যাটফর্মের bot API বা webhooks ব্যবহার করে কথা বলে।
এদের সবার গঠন একই রকম। connectorটি প্ল্যাটফর্মের কাছে একটি bot register করে, আপনার ইনকামিং মেসেজ গ্রহণ করে (প্ল্যাটফর্মটিকে poll করার মাধ্যমে অথবা প্ল্যাটফর্ম থেকে পাঠানো webhook এর মাধ্যমে), সেই মেসেজটি gateway কে দেয় এবং gateway এর রিপ্লাইটি একই API এর মাধ্যমে পাঠিয়ে দেয়। connector হলো একটি পাতলা translation layer। এটি "একটি Telegram মেসেজ এসেছে" বিষয়টিকে "এজেন্টের জন্য এই টেক্সটটি" হিসেবে এবং এর উল্টোটি কনভার্ট করে। নিজের connector তৈরি করা মূলত একটি প্ল্যাটফর্মের bot documentation পড়া এবং তার মেসেজ ফরম্যাটকে gateway এর ফরম্যাটের সাথে মিলিয়ে দেওয়ার বিষয়।
The brain and the tool loop
gateway এর ভেতরেই সেই অংশটি থাকে যা এটিকে chatbot এর বদলে একটি agent হিসেবে গড়ে তোলে। এটি একটি loop।
একটি মেসেজ আসে। gateway মেসেজটি একটি language model এর কাছে পাঠায় এবং সাথে কিছু tools এর লিস্ট দেয় যা মডেলটি ব্যবহার করতে পারবে। মডেলটি মেসেজটি পড়ে এবং সিদ্ধান্ত নেয়: সরাসরি উত্তর দেবে, নাকি কোনো tool ব্যবহার করবে। যদি এটি কোনো tool ব্যবহার করে, gateway সেই tool টি চালায়, ফলাফল সংগ্রহ করে এবং ফলাফলটি মডেলের কাছে ফেরত পাঠায়। মডেলটি ফলাফলটি দেখে আবার সিদ্ধান্ত নেয়। এই প্রক্রিয়াটি ততক্ষণ চলতে থাকে যতক্ষণ না মডেলটির আর কিছু করার থাকে না এবং এটি একটি চূড়ান্ত রিপ্লাই তৈরি করে।
এই loop ই হলো একটি agent এর মূল ধারণা, এবং এটি chat app বা terminal যেখানেই থাকুক না কেন একই পদ্ধতিতে কাজ করে। standard ভাবে tools গুলো কীভাবে এই loop এর সাথে যুক্ত করা হয় তা জানতে connecting tools through the Model Context Protocol পড়া যেতে পারে, আর মডেলের জন্য running the model itself on your own hardware পড়া যেতে পারে।
The tool set হলো মূল বিষয়, এবং ঝুঁকিও
tools গুলোই OpenClaw কে শক্তিশালী করে তোলে। একটি tool যা shell command চালায়, একটি tool যা browser নিয়ন্ত্রণ করে, একটি tool যা ফাইল পড়া ও লেখা করতে পারে। উপরের loop টিকে এই সুবিধাগুলো দিলে এটি কিবোর্ডে আপনি যা করতে পারেন তার প্রায় সবকিছুই করতে পারে। এই সক্ষমতাই হলো এই প্রোডাক্টের মূল বৈশিষ্ট্য, এবং এটাই হলো এর মূল ঝুঁকি।
একটি agent যা যেকোনো command চালাতে পারে এবং chat app থেকে আসা নির্দেশ অনুযায়ী কাজ করে, তার attack surface অনেক বড়। একটি ভুল নির্দেশ, browser tool দিয়ে ভিজিট করা কোনো ওয়েব পেজে লুকিয়ে থাকা prompt-injection attack, অথবা ২০২৬ সালের মার্চ মাসের ত্রুটির মতো কোনো bug আপনার "আমার ক্যালেন্ডার পড়ো" নির্দেশটিকে "আমার ফাইলগুলো ডিলিট করো" নির্দেশ হিসেবে বদলে দিতে পারে। তাই limits বা সীমা নির্ধারণ করা কোনো ঐচ্ছিক বিষয় নয়। agent টিকে একটি dedicated, unprivileged user হিসেবে চালান যার কোনো sudo ক্ষমতা নেই, যাতে কোনো compromise হলে তা escalate করতে না পারে। বিপজ্জনক tools গুলোর জন্য approval step রাখুন যাতে agent কোনো ধ্বংসাত্মক কাজ করার আগে আপনাকে জিজ্ঞাসা করে। tool execution কে sandbox এর মধ্যে রাখুন যাতে কোনো runaway command নিয়ন্ত্রণে থাকে। মডেলের API key আলাদা রাখুন যাতে কোনো leak হলে আক্রমণকারী আপনার অ্যাকাউন্টে প্রবেশ করতে না পারে।
shell command চালায় এমন কিছু expose করার আগে, সচেতনভাবে মৌলিক বিষয়গুলো সম্পন্ন করুন। আপনার নিজের box এর জন্য এখানে একটি checklist তৈরি করুন, তারপর উপর থেকে নিচে তা অনুসরণ করুন:
unprivileged-user সংক্রান্ত বিস্তারিত বিষয় running services as an unprivileged user এ আলোচনা করা হয়েছে, এবং আসল প্রজেক্টের জন্য সম্পূর্ণ safe-setup গাইড running OpenClaw safely on a VPS এ দেওয়া আছে।
Memory হিসেবে plain files
বেশিরভাগ মানুষ আশা করে যে একটি agent এর memory কোনো database-এ থাকবে। OpenClaw এর ক্ষেত্রে তা নয়। এটি memory গুলো ডিস্কে plain Markdown files হিসেবে জমা রাখে, এবং এই সিদ্ধান্তটি অনুসরণ করা উচিত।
Files খুবই সহজ। এখানে কোনো schema migrate করার প্রয়োজন নেই, কোনো service চালু রাখার দরকার নেই, এবং কোনো query language শেখার প্রয়োজন নেই। এগুলো inspect করা যায়: আপনি ফোল্ডারটি খুলে এজেন্ট আপনার সম্পর্কে কী মনে করে তা পড়তে পারেন, একটি ফাইল এডিট করে ভুল নোট ঠিক করতে পারেন, অথবা কোনো ফাইল মুছে দিয়ে memory ডিলিট করতে পারেন। এছাড়া এগুলো portable, কারণ এজেন্টকে নতুন সার্ভারে নেওয়া মানে কেবল একটি directory কপি করা। একজন single-user personal agent এর জন্য টেক্সট ফাইলের একটি ফোল্ডারই যথেষ্ট, এবং এটি পুরো সিস্টেমটিকে সহজবোধ্য রাখে।
Skills: সক্ষমতা বাড়ানোর একটি portable উপায়
built-in tools ছাড়াও OpenClaw একটি portable skill format ব্যবহার করে যাতে community এর মানুষ এর core পরিবর্তন না করেই এর সক্ষমতা বাড়িয়ে দিতে পারে। একটি skill হলো নির্দেশাবলী এবং কখনও কখনও কোডের একটি self-contained bundle যা এজেন্টকে নতুন কোনো কাজ শেখায়। যখন কোনো কাজের জন্য প্রয়োজন হয়, এজেন্ট তখন একটি skill load করে।
এই ধরণের ফরম্যাটের সুবিধা হলো সক্ষমতাগুলো শেয়ার করা যায়। কেউ একটি নির্দিষ্ট কাজের জন্য skill তৈরি করে সেটি পাবলিশ করে এবং অন্যরা তা ব্যবহার করতে পারে। আপনি যদি নিজের agent তৈরি করেন, তবে শুরুতেই একটি ছোট এবং পরিষ্কার extension format তৈরি করা আপনাকে পরে প্রতিটি capability core-এ hard-code করা থেকে বাঁচাবে।
Bring your own model
OpenClaw হলো model-agnostic। এতে নিজস্ব কোনো language model দেওয়া থাকে না। পরিবর্তে এটি আপনার পছন্দ করা কোনো মডেলের সাথে কানেক্ট করে, যা কোনো hosted API হতে পারে অথবা আপনি নিজে চালানো কোনো মডেল হতে পারে।
খরচ, privacy এবং control এর জন্য এই বিভাজনটি গুরুত্বপূর্ণ। একটি hosted API আপনাকে কোনো hardware ম্যানেজ না করেই শক্তিশালী মডেল দেয়, তবে এর জন্য প্রতি-token হিসেবে খরচ করতে হয় এবং আপনার prompts সার্ভার থেকে বাইরে চলে যায়। self-hosted model, যা Ollama এর মতো কিছু দিয়ে চালানো হয়, প্রতিটি মেসেজ আপনার নিজের box-এই রাখে এবং এর খরচ কেবল hardware ও বিদ্যুতের ওপর নির্ভর করে, তবে এক্ষেত্রে মডেলটি ছোট বা ধীরগতির হতে পারে। অনেকে এই দুটির মিশ্রণ ব্যবহার করেন। আপনি যদি এজেন্টকে সম্পূর্ণ private রাখতে চান, তবে self-hosting the model on your VPS হলো সেই শেষ ধাপ যা প্রয়োজন, এবং Hermes Agent হলো আরেকটি self-hosted agent যা তুলনা করার মতো।
আপনার কি এটি তৈরি করা উচিত?
আপনি এই সবকিছুই তৈরি করতে পারেন। এর পার্টসগুলো খুব জটিল নয়: একটি daemon, কিছু chat connector, একটি model-and-tools loop, Markdown ফাইলের একটি ফোল্ডার এবং একটি plugin format। এগুলো বোঝা সত্যিই দরকারি, কারণ এটি আপনি যে যেকোনো agent ব্যবহার করবেন তার রহস্য উন্মোচন করে এবং ঠিক কোথায় ঝুঁকি আছে তা বলে দেয়।
কিন্তু বেশিরভাগ মানুষের জন্য সৎ উত্তর হলো, নতুন করে তৈরি করার চেয়ে আসল জিনিসটি চালানো এবং সেটিকে আরও সুরক্ষিত (harden) করা। OpenClaw ইতিমধ্যে connector, loop এবং skill format এর সমাধান করে ফেলেছে এবং এটি প্রকৃত security scrutiny এর মধ্য দিয়ে গেছে। আপনার প্রচেষ্টা সেই কাজে ব্যয় করা উচিত যা আসলে আপনার নিজের করার বিষয়, আর তা হলো আপনার নিজস্ব সার্ভারে setup এবং hardening করা। শেখার জন্য একটি ছোট এজেন্ট তৈরি করুন। ব্যবহারের জন্য আসলটি চালান এবং lock down করুন।
সাধারণ ভিত্তিগুলো building your own AI agent on a VPS এ রয়েছে, এবং building an agent with Claude একটি নির্দিষ্ট মডেলকে brain হিসেবে ব্যবহার করে একই ধারণাগুলো দেখায়।
FAQ
OpenClaw এর মতো একটি agent তৈরি করা কি কঠিন?
আলাদা আলাদা পার্টগুলো কঠিন নয়। একটি gateway process, একটি chat connector, একটি model-and-tools loop, এবং ফাইলের একটি ফোল্ডার—প্রতিটিই আলাদাভাবে সহজ। কঠিন কাজ হলো এটি নিরাপদে করা। চ্যাট মেসেজ থেকে shell command চালানো একটি বড় security surface, এবং sandboxing, permissions, এবং unprivileged-user setup সঠিকভাবে করা ফিচারগুলো কানেক্ট করার চেয়ে বেশি পরিশ্রমের কাজ।
OpenClaw কেন database এর বদলে Markdown file হিসেবে memory জমা রাখে?
কারণ একজন single-user personal agent এর জন্য ফাইলই যথেষ্ট এবং অনেক বেশি সহজ। এখানে চালানোর জন্য কোনো database service লাগে না, মেমরি হাতে কলমে পড়া ও ঠিক করা যায়, এবং এজেন্টকে অন্য সার্ভারে নেওয়া মানে কেবল একটি directory কপি করা। বড় স্কেলের কাজের জন্য database প্রয়োজন, এখানে নয়।
একটি personal AI agent এর সবচেয়ে বিপজ্জনক অংশ কোনটি?
যে tools গুলো এজেন্টকে কাজ করতে সাহায্য করে: shell command চালানো, browser নিয়ন্ত্রণ করা এবং ফাইল লেখা। এগুলোই এজেন্ট তৈরির কারণ এবং এগুলোই আপনাকে ক্ষতির সম্মুখীন করতে পারে। OpenClaw এর ২০২৬ সালের মার্চ মাসের security event—চার দিনে নয়টি ইস্যু (যার মধ্যে একটি ৯.৯ রেটিং প্রাপ্ত critical flaw ছিল)—তা প্রমাণ করে যে tool layer কে অত্যন্ত সতর্কতার সাথে ব্যবহার করা উচিত: unprivileged user হিসেবে চালানো, ধ্বংসাত্মক কাজের জন্য approval gate রাখা এবং execution কে sandbox করা।
আমার কি নিজস্ব language model প্রয়োজন?
না। OpenClaw এর মতো agent গুলো model-agnostic, তাই আপনি আপনার পছন্দমতো মডেল কানেক্ট করতে পারেন। শক্তিশালী মডেলের জন্য এটি একটি hosted API হতে পারে, অথবা পূর্ণ privacy এর জন্য আপনি নিজে চালানো কোনো মডেল হতে পারে। Ollama দিয়ে self-hosting করলে প্রতিটি মেসেজ আপনার নিজের সার্ভারেই থাকে, তবে এর বিনিময়ে আপনাকে একটি ছোট মডেল চালাতে হবে।