gekro
GitHub LinkedIn
Architecture

Raspberry Pi AI সোয়ার্মকে আর্থিকভাবে এয়ার-গ্যাপ করা

6 মিনিটে পড়া যায়

এটি ইংরেজি মূল লেখাটির মেশিন অনুবাদ। কিছু সূক্ষ্মতা হারিয়ে যেতে পারে, তাই ইংরেজি সংস্করণই মূল রেফারেন্স। মূল ইংরেজি লেখাটি পড়ুন

সংক্ষেপে

খরচ কমাতে আমি কীভাবে একটি MCP রাউটার ও বিচ্ছিন্ন OpenClaw ওয়ার্কার নেটওয়ার্ক দিয়ে Pi 5-কে একটি লোকাল অর্কেস্ট্রেটরে পরিণত করলাম।
আমি আমার তিনটি Raspberry Pi 5 (16GB + M.2 256GB) নোডের একটিকে আর্থিকভাবে এয়ার-গ্যাপড অর্কেস্ট্রেশন শেলে রূপান্তর করেছি, যা পূর্ণ সক্ষম, প্রতিদিনের ব্যবহারের AI ব্যক্তিগত সহকারী চালায়। স্প্লিট-ব্রেন আর্কিটেকচারে, যেখানে একটি মাস্টার কন্ট্রোল প্রোগ্রাম (MCP) বহুমুখী OpenClaw ওয়ার্কারদের তদারকি করে, সিস্টেম Telegram ইন্টারফেস থেকে ব্যবসায়িক টুল ইন্টিগ্রেশন পর্যন্ত সবকিছু স্বয়ংক্রিয়ভাবে সামলাতে পারে। এই পদ্ধতি অতি সক্ষম এজেন্টদের ওপর তাদের সক্ষমতা কৃত্রিমভাবে সীমিত না করে কঠোর খরচ-শাসন আরোপ করে, এবং প্রমাণ করে যে উন্নত AI সহায়তা আর পূর্বানুমেয় API বিলিংয়ের মধ্যে আপনাকে বেছে নিতে হয় না।

আমি আমার তিনটি Raspberry Pi 5 (16GB + M.2 256GB) নোডের একটিকে আলাদা করেছি, যাতে সেটি একটি মাস্টার কন্ট্রোল প্রোগ্রাম (MCP) দ্বারা শাসিত, আর্থিকভাবে এয়ার-গ্যাপড AI অর্কেস্ট্রেটর হিসেবে কাজ করে। লক্ষ্য ছিল একটি সক্ষম, বহুমুখী AI সহকারী সিস্টেম বানানো যা আমি প্রতিদিন ব্যবহার করতে পারি, আর অবিরাম স্টেট-রক্ষণাবেক্ষণের কারণে আমার “Pro” স্তরের API বিল যেন পুরোপুরি উবে না যায়।

এই সিস্টেমের ওয়ার্কাররা সংকীর্ণ, একক-উদ্দেশ্যের ডেমন নয়। তারা পূর্ণ কার্যকর ব্যক্তিগত সহকারী, যারা সক্রিয়ভাবে সিস্টেম পর্যবেক্ষণ করে, স্বয়ংক্রিয় ব্যাকগ্রাউন্ড কাজ চালায়, ব্যক্তিগত উৎপাদনশীলতার টুলের সঙ্গে যুক্ত হয় এবং Telegram-এর মাধ্যমে প্রশ্নের উত্তর দেয়। তবু এই অতি সক্ষম সহকারীদের চালাতে একটি সুরক্ষাবলয় দরকার। সমাধান ছিল একটি আক্রমণাত্মক রাউটিং কৌশল: পরিবেশের ওপর নজর রাখতে একটি কেন্দ্রীয় MCP ব্যবহার, আর আসল সহকারীরা অ্যাকাউন্ট-স্তরের কঠোর খরচ-সীমাসহ একটি অ্যাগ্রিগেটরের মাধ্যমে ডকারাইজড ব্যাকগ্রাউন্ড প্রসেস হিসেবে চলে। Pi আর সাধারণ-উদ্দেশ্যের হোম ল্যাব নয়: বাকি প্রতিটি কনটেইনার সরিয়ে দিয়ে এটিকে একটি নিবেদিত, নেটওয়ার্কযুক্ত OpenClaw শেল বানানো হয়েছে।

আর্কিটেকচার

সিস্টেমটি স্প্লিট-ব্রেন, স্তরবিশিষ্ট আর্কিটেকচারে চলে। মূলে বসে আছে MCP। একটিমাত্র ব্যয়বহুল মডেল হার্ডকোড করার বদলে MCP একটি manifest.ai স্কিলকে বিল্ট-ইন রাউটার হিসেবে ব্যবহার করে। এটি প্রশাসনিক কাজের জটিলতা গতিশীলভাবে মূল্যায়ন করে এবং কোন Gemini মডেল ডাকবে তা ঠিক করে, মৌলিক দক্ষতার জন্য Gemini-র নেটিভ অটো মোডকে ডিফল্ট রেখে।

তার নিচে, একটি নিবেদিত Docker ব্রিজ নেটওয়ার্কে (claw_net) সম্পূর্ণ বিচ্ছিন্ন অবস্থায়, দুটি কাজ-নির্দিষ্ট ওয়ার্কার বসে আছে। ওয়ার্কাররা প্রিপেইড OpenRouter সংযোগের মাধ্যমে ভারী কাজ করে। MCP তাদের লগ পর্যবেক্ষণ করে, ব্যর্থ হলে তাদের কনফিগারেশন নতুন করে লেখে এবং তাদের কনটেইনার রিস্টার্ট করে।

স্তরইনস্ট্যান্সপ্রোভাইডার/মডেলভূমিকা ও সক্ষমতাখরচ কাঠামো
সুপারভাইজারMCP (রুট)Google AI (manifest.ai রাউটার / Gemini Auto)গতিশীল রাউটিং, কনফিগ বদলায়, Docker ডেমন নিয়ন্ত্রণ করে।পরিবর্তনশীল / অপ্টিমাইজড
সাব-প্রসেসWorker 01OpenRouter (DeepSeek V3)দ্রুত ডেটা পার্সিং, Telegram ইন্টারফেস।$0.14 / 1M টোকেন
সাব-প্রসেসWorker 02OpenRouter (DeepSeek V3)জটিল API ক্রিয়া, Telegram ইন্টারফেস।$0.14 / 1M টোকেন

নির্মাণ

এই রূপান্তরের জন্য পোর্ট সংঘাত ও CPU ওভারহেড দূর করতে Pi 5 মুছে ফেলতে হয়েছে। হার্ডওয়্যারটি এখন একান্তই একটি OpenClaw হোস্ট।

প্রথমে আমার দরকার ছিল একটি পরিষ্কার স্লেট। বিদ্যমান অবকাঠামো আমি পুরোপুরি ঝেঁটিয়ে দিয়েছি, যাতে কোনো ভূতুড়ে কনটেইনার মেমরি চিবিয়ে না খায় বা আমার রাউটিং স্তরের সঙ্গে সংঘাত না করে। তারপর আমি বিচ্ছিন্ন নেটওয়ার্ক (claw_net) তৈরি করেছি। Telegram API ও OpenRouter-এর জন্য ওয়ার্কারদের বহির্মুখী ইন্টারনেট দরকার, কিন্তু তাদের নিজস্ব ব্রিজ নেটওয়ার্কে আলাদা রাখলে নিশ্চিত হয় যে তাদের কাছে কোনো অন্তর্মুখী প্রবেশাধিকার নেই এবং তারা একে অপরের ট্র্যাফিক দেখতে পায় না।

# Purge all non-essential containers and images
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)
docker system prune -a --volumes -f

# Create the dedicated network for the swarm
docker network create --driver bridge claw_net

আমি শ্রেণিবিন্যাস প্রতিফলিত করতে /opt/openclaw-এ ফাইল সিস্টেম নতুন করে সাজিয়েছি, যাতে MCP ওয়ার্কারদের কনফিগারেশন ফাইলের ওপর পূর্ণ দৃশ্যমানতা পায়।

mkdir -p /opt/openclaw/{mcp,workers/worker-01,workers/worker-02}

এরপর আমি বিচ্ছিন্ন ওয়ার্কারদের কনফিগার করেছি। তাদের অথেনটিকেশন OpenRouter-এ আটকে দিয়েছি এবং সরাসরি অ্যাকাউন্ট-স্তরে মাসিক কঠোর খরচ-সীমা বসিয়েছি। এতে ব্যাকএন্ডে খরচের বাড়াবাড়ি ঠেকে: কোনো লুপ চললেও সর্বোচ্চ ক্ষতি স্পষ্টভাবে সীমাবদ্ধ, যা আমাকে 500 ডলারের আকস্মিক মাসিক বিল থেকে বাঁচায়। বাস্তবে, এই পূর্ণ সক্ষম, প্রতিদিনের ব্যবহারের AI সহকারীদের চালাতে আমার বাস্তবসম্মত খরচ মাসে 8 থেকে 15 ডলারের মধ্যে। খেয়ালখুশি সক্ষমতার সীমা চাপানোর বদলে আমি তাদের maxOutputTokens ও maxHistoryTurns ভেবেচিন্তে বেছে নেওয়া পারফরম্যান্স-ক্যালিব্রেশন প্যারামিটার হিসেবে টিউন করেছি। মানগুলো প্রতিটি ওয়ার্কারের ভূমিকার প্রকৃতির সঙ্গে খাপ খাওয়ানো, অর্থাৎ দ্রুত উত্তর বনাম জটিল ক্রিয়ার জন্য কনটেক্সট উইন্ডো অপ্টিমাইজ করা, যাতে গণনার ওভারহেড নষ্ট না করেই তারা পূর্ণ কার্যকর থাকে।

# Configure Worker 01
cd /opt/openclaw/workers/worker-01
openclaw onboard --auth-choice apiKey --token-provider openrouter --token "$OPENROUTER_API_KEY" --non-interactive
openclaw config set agents.defaults.model.primary "openrouter/deepseek/deepseek-chat"
openclaw config set agents.defaults.maxOutputTokens 250
openclaw config set agents.defaults.maxHistoryTurns 5

# Configure Worker 02
cd /opt/openclaw/workers/worker-02
openclaw onboard --auth-choice apiKey --token-provider openrouter --token "$OPENROUTER_API_KEY" --non-interactive
openclaw config set agents.defaults.model.primary "openrouter/deepseek/deepseek-chat"
openclaw config set agents.defaults.maxOutputTokens 600
openclaw config set agents.defaults.maxHistoryTurns 8

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

docker run -d --name worker-01 \
  --network claw_net \
  -v /opt/openclaw/workers/worker-01:/app/config \
  openclaw/core:latest

docker run -d --name worker-02 \
  --network claw_net \
  -v /opt/openclaw/workers/worker-02:/app/config \
  openclaw/core:latest

সবশেষে, মাস্টার কন্ট্রোল প্রোগ্রাম। MCP-র Google AI ক্রেডেনশিয়াল দরকার, তবে অকারণ টোকেন পোড়া ঠেকাতে আমি manifest.ai রাউটিং স্কিল বসিয়েছি। আমি Docker সকেট ও রুট /opt/openclaw/workers ডিরেক্টরি তার কনটেইনারে মাউন্ট করেছি, যাতে সে সাব-প্রসেসগুলোর তদারকি নেটিভভাবে করতে পারে। রাজ্যের চাবি আছে কেবল MCP কনটেইনারের কাছে।

cd /opt/openclaw/mcp
openclaw onboard --auth-choice oauth --token-provider google --non-interactive

# Inject the manifest.ai router skill and set dynamic defaults
openclaw skill add manifest.ai/router
openclaw config set agents.defaults.model.primary "google/gemini-auto"
openclaw config set routing.strategy "manifest-dynamic"

docker run -d --name mcp \
  --network claw_net \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v /opt/openclaw/workers:/supervised_workers \
  -v /opt/openclaw/mcp:/app/config \
  openclaw/core:latest

সমঝোতা

একটি LLM-চালিত কনটেইনারে /var/run/docker.sock মাউন্ট করা প্রোডাকশন পরিবেশে বিপর্যয়কর নিরাপত্তা ঝুঁকি। MCP যদি প্রম্পট ইনজেকশন আক্রমণের শিকার হয়, Pi-র Docker ডেমনের ওপর তার রুট-স্তরের নিয়ন্ত্রণ থাকে। আমি এই ঝুঁকি মেনে নিয়েছি কারণ Pi 5 শারীরিকভাবে বিচ্ছিন্ন এবং কেবল এই পরীক্ষাটির জন্য নিবেদিত, কিন্তু এটি এন্টারপ্রাইজ ডিপ্লয়মেন্টের প্যাটার্ন নয়।

এ ছাড়া, manifest.ai রাউটার চালাক, কিন্তু অভ্রান্ত নয়। Worker 02 যখন ভুল ফরম্যাটের API পেলোডের কারণে বিশাল স্ট্যাক ট্রেস ছুড়ে দিল, রাউটার সেটিকে সঠিকভাবে “জটিল ডিবাগিং টাস্ক” শনাক্ত করে হালকা Flash ভ্যারিয়েন্টের বদলে এক্সিকিউশনকে ভারী রিজনিং মডেলে তুলে দিল। সমাধান প্রস্তাবের আগে MCP এরর লগ পড়তে 40,000 টোকেন গিলেছিল। সে সফলভাবে Worker 02-এর আউটপুট স্কিমা নতুন করে লিখে কনটেইনার রিস্টার্ট করেছিল, কিন্তু সেই একক ডিবাগিং ক্রিয়া অটো মোডের সাশ্রয় এড়িয়ে গিয়ে DeepSeek-এ Worker 02-এর পুরো কর্মসপ্তাহের চেয়ে বেশি খরচ করিয়েছে।

যা শিখলাম

রাউটিং লজিক বসানোর আগে, Worker 01 আসলে নিঃশব্দে ব্যর্থ হয়েছিল। সে Telegram থেকে আসা ভুল ফরম্যাটের JSON পেলোড পার্স করতে পারেনি এবং সেখানেই আটকে ছিল, API বারবার টাইমআউট হচ্ছিল আর সে নিঃশব্দে Pi-র মেমরি সম্পদ চিবিয়ে যাচ্ছিল। আমি দুই দিন ধরতে পারিনি। সেই নীরবতা, আর তা থেকে যে ছড়িয়ে পড়া ব্যর্থতার ঝুঁকি ছিল, সেটাই আমাকে প্রথমে MCP বানাতে ঠেলে দিয়েছে।

সিস্টেমটি এখন নির্ভর করে আমি হাতে MCP-কে ওয়ার্কারদের খোঁজ নিতে বলছি কি না তার ওপর, যা একটি আধখেঁচড়া ব্যবস্থা। আর্কিটেকচারের যৌক্তিক পরিণতি, এবং ল্যাবে আমার পরের প্রজেক্ট, হলো একটি নিরবচ্ছিন্ন হার্টবিট মনিটর বানানো। ওয়ার্কারদের হেলথ চেক Pi-র একটি হালকা লোকাল ভেক্টর স্টোরে পাইপ করলে MCP স্বয়ংক্রিয়ভাবে ঐতিহাসিক ক্র্যাশ ডেটা ঘেঁটে দেখতে পারবে এবং ব্যর্থতা ছড়িয়ে পড়ার আগেই ওয়ার্কারদের DeepSeek তাপমাত্রা বা টোকেন সীমা সক্রিয়ভাবে সমন্বয় করতে পারবে।

এই পরীক্ষা প্রমাণ করেছে যে জটিল AI সিস্টেম চালাতে বিশাল, মনোলিথিক ক্লাউড অবকাঠামো লাগে না। আর্কিটেকচারকে একটিমাত্র Raspberry Pi 5-এর শারীরিক সীমা আর 8–15 ডলারের মাসিক খরচ-সীমার আর্থিক সীমায় বেঁধে ফেলায় ফলাফল কোনো আপসকৃত বা বাঁধা স্যান্ডবক্স হয়নি। সেই সীমাবদ্ধতাগুলোই বরং আরও শৃঙ্খলাবদ্ধ, অতি সক্ষম একটি অর্কেস্ট্রেশন সিস্টেম গড়েছে। আজ এগুলো শুধু সংকীর্ণ স্ক্রিপ্ট নয়; এগুলো সত্যিই কার্যকর, প্রতিদিনের ব্যবহারের AI ব্যক্তিগত সহকারী, যারা সক্রিয়ভাবে আমার ওয়ার্কফ্লো পরিচালনা করে। ল্যাব অবশেষে বুদ্ধিমানের মতো চলছে, সহকারীরা পুরোপুরি বন্ধনমুক্ত, আর আমার বিলিং পেজ অবশেষে একঘেয়ে।

Rohit Burani

লেখক

Rohit Burani

AI ইঞ্জিনিয়ার, যিনি ল্যাব থেকে লোকাল-ফার্স্ট সিস্টেম, সেলফ-হোস্টেড অবকাঠামো এবং স্বয়ংক্রিয় টুল তৈরি করেন।

পড়ার জন্য ধন্যবাদ।

লেখাটি ভালো লাগলে আপনার নেটওয়ার্কের সঙ্গে শেয়ার করুন।

← ব্লগে ফিরে যান