
SkyDot কী
SkyDot হলো Pi Agent Runtime-এর ওপর ভিত্তি করে তৈরি একটি ওপেন সোর্স, স্ব-হোস্টেড মাল্টি-ইউজার Agent ওয়ার্কবেঞ্চ। আপনি একাধিক নামকরণযোগ্য ও কনফিগারযোগ্য Dot তৈরি করে তাদের আলাদা দায়িত্ব দিতে পারেন; আবার একাধিক Dot-কে গ্রুপ চ্যাটে যুক্ত করে নির্ধারিত কাজ, Skills, MCP, Plugins এবং Memory-এর মাধ্যমে দীর্ঘমেয়াদি কাজের সক্ষমতা বাড়াতে পারেন।
এটি শুধু একটি চ্যাট পেজ নয়। Workspace ফাইল, সেশন, মেমরি এবং এক্সিকিউশন সীমা ভাগ করে, Backend প্রমাণীকরণ, অনুমতি, কিউ, শিডিউলিং, Provider এবং মেসেজিং চ্যানেল পরিচালনা করে, আর Host বা Docker Runner বাস্তবে Agent চালায়। ব্যবহারকারীর নিশ্চিতকরণ প্রয়োজন এমন টুল অনুমোদন, ডিভাইস অনুরোধ এবং কাজের অগ্রগতিও একই ওয়ার্কবেঞ্চে ফিরে আসে।

মূল আর্কিটেকচার ও এক্সিকিউশন সীমা
SkyDot ইন্টারফেস, কন্ট্রোল প্লেন এবং এক্সিকিউশন প্লেনকে আলাদা রাখে, তাই এটি ব্যক্তিগত ব্যবহার এবং দলের স্ব-হোস্টেড ডিপ্লয়মেন্ট উভয়ের জন্য উপযোগী।
- Backend: Node.js, TypeScript, Hono, SQLite এবং WebSocket-এর ওপর ভিত্তি করে তৈরি; এটি প্রমাণীকরণ, স্থায়ী সংরক্ষণ, কিউ, শিডিউলিং, Provider, চ্যানেল এবং অনুমোদন পরিচালনা করে।
- Runner: Pi Agent Runtime ব্যবহার করে বাস্তব Agent কাজ চালায়; স্থানীয় Host মোড বা non-root Docker কনটেইনার বেছে নেওয়া যায়।
- Workspace: ফাইল, Session, Memory, চ্যানেল সংযোগ এবং রান-সীমা নির্ধারণ করে।
- Web, PWA ও Electron: একই React ব্যবসায়িক ফ্রন্টএন্ড ব্যবহার করে; Electron Renderer শুধু ইন্টারফেস পরিচালনা করে, ডেটাবেস, ফাইল সিস্টেম, ক্রেডেনশিয়াল, Docker বা shell/process অনুমতিতে সরাসরি প্রবেশ করে না।
কোনো একটি স্তর অনুমতি দিলেই অন্য সীমা স্বয়ংক্রিয়ভাবে অতিক্রম করা যায় না। দলের পরিবেশে ডিপ্লয় করার আগে অনুমতি ম্যাট্রিক্স এবং নিরাপত্তা নীতি পড়ার পরামর্শ দেওয়া হচ্ছে।
প্রধান বৈশিষ্ট্য
ব্যক্তিগত Dot ও সেশন
প্রতিটি Dot-এর নাম, অবতার, Prompt, মডেল, চিন্তার স্তর, Skills, MCP এবং এক্সিকিউশন নীতি আলাদাভাবে নির্ধারণ করা যায়। কথোপকথনে স্ট্রিমিং আউটপুট, Markdown, কোড ব্লক, ফাইল সংযুক্তি, বাতিল, পরবর্তী বার্তা এবং সেশন পুনরুদ্ধার সমর্থিত।

বিভিন্ন Workspace পরস্পর থেকে বিচ্ছিন্ন থাকে; একই ইন্টারফেসে প্রবেশ করলেও ফাইল, সেশন, মেমরি, চ্যানেল সংযোগ এবং এক্সিকিউশন অনুমতি একসঙ্গে মিশে যায় না। এক্সিকিউশনের সময় Host মোড অথবা Container মোড বেছে নেওয়া যায়।
একাধিক Dot-এর গ্রুপ চ্যাট ও সহযোগিতা
নেটিভ গ্রুপ চ্যাট চালু করলে একই টাইমলাইনে একাধিক Dot-এর বার্তা, কাজের রসিদ, অগ্রগতি এবং ফলাফল দেখা যায়। নির্দিষ্ট উল্লেখ এবং নিয়ন্ত্রিত ডেলিগেশন সহযোগিতার পরিসর নিয়ন্ত্রণ করে; পুনরায় সংযোগ বা পেজ পুনরায় খোলা শুধু অবস্থা পড়ে, স্বয়ংক্রিয়ভাবে নতুন কাজ জমা দেয় না।

গ্রুপ চ্যাট ডিফল্টভাবে বন্ধ থাকে। নেটিভ গ্রুপ চ্যাট চালু করতে SKYDOT_BOT_GROUPS=true সেট করতে হবে; Bot-গুলোর মধ্যে সহযোগিতামূলক এক্সিকিউশনও অনুমোদন করতে চাইলে অতিরিক্তভাবে SKYDOT_BOT_HANDOFFS=true সেট করতে হবে এবং প্রশাসককে রান করার অনুমতি ও কল বাজেট কনফিগার করতে হবে।

নির্ধারিত কাজ, Skills ও Memory
Scheduler Cron, নির্দিষ্ট ব্যবধান এবং এককালীন কাজ সমর্থন করে; এতে অবিলম্বে চালানো, বিরতি, বাতিল, রান ইতিহাস এবং ফলাফল বিতরণের সুবিধা রয়েছে। Skills, MCP এবং Plugins কেন্দ্রীয়ভাবে পরিচালনা করে প্রতিটি Dot-এর কনফিগারেশন অনুযায়ী সক্রিয় করার পরিসর নির্ধারণ করা যায়।
Memory Workspace-ভিত্তিকভাবে তথ্য, পছন্দ, সিদ্ধান্ত, অভিজ্ঞতা এবং অনুসরণযোগ্য বিষয় সংরক্ষণ করে; এতে অনুসন্ধান, নতুন তৈরি, সম্পাদনা, ভুলে যাওয়া এবং সংস্করণ ইতিহাস সমর্থিত। Session নির্দিষ্ট কথোপকথনের প্রসঙ্গ সংরক্ষণ করে, আর Workspace Memory বিভিন্ন Session-এ পুনর্ব্যবহারযোগ্য জ্ঞান সংরক্ষণ করে; দুটি পরস্পর স্বাধীন।
ইনস্টলেশনের আগে প্রস্তুতি
- Node.js: 22.19 বা পরবর্তী সংস্করণ; Node.js 24 LTS সুপারিশ করা হয়। Pi Durable স্টোরেজের জন্য Node.js-এর বিল্ট-ইন SQLite প্রয়োজন।
- npm: Node.js-এর সঙ্গে ইনস্টল হয় এবং প্রতিটি সাবপ্রজেক্টের নির্ভরতা ইনস্টল করতে ব্যবহৃত হয়।
- Docker: শুধু Container এক্সিকিউশন মোডে প্রয়োজন।
- Model Provider: বাস্তব AI কথোপকথনের জন্য একটি কার্যকর মডেল Provider প্রয়োজন; API Key না থাকলেও প্রথমে ইন্টারফেস চালু করা যায়।
- GNU Make: ঐচ্ছিক; টাইপ চেক, ব্যাকআপ এবং রক্ষণাবেক্ষণ কমান্ডের জন্য ব্যবহৃত হয়।
শূন্য থেকে SkyDot ইনস্টল করুন
1. রিপোজিটরি ক্লোন করে নির্ভরতা ইনস্টল করুন
টার্মিনালে নিচের কমান্ডগুলো চালিয়ে প্রধান প্রজেক্ট, Web ফ্রন্টএন্ড এবং Agent Runner-এর নির্ভরতা আলাদাভাবে ইনস্টল করুন:
git clone https://github.com/2SinceJuly/SkyDot.git
cd SkyDot
npm install
npm --prefix web install
npm --prefix container/agent-runner install2. বিল্ড করে সার্ভিস চালু করুন
নির্ভরতা ইনস্টল শেষ হলে সব কম্পোনেন্ট বিল্ড করে Backend চালু করুন:
npm run build:all
npm starthttp://127.0.0.1:3000 খুলে পেজের নির্দেশনা অনুসরণ করে প্রশাসক ইনিশিয়ালাইজেশন সম্পন্ন করুন। Provider এবং মেসেজিং চ্যানেল পরে কনফিগার করা যায়, তবে মডেল কনফিগারেশন না থাকলে বাস্তব AI কথোপকথন চালানো যাবে না।
3. ডেভেলপমেন্ট পরিবেশ চালু করুন

ডেভেলপমেন্টের সময় Backend এবং Vite Web Client একসঙ্গে চালু করা যায়:
npm run dev:allডেভেলপমেন্ট পেজের ডিফল্ট ঠিকানা http://127.0.0.1:5173। শুধু স্থানীয়ভাবে দ্রুত ইন্টারফেস দেখতে চাইলে লুপব্যাক ঠিকানা ব্যবহার করে লগইনবিহীন Demo চালানো যায়:
SKYDOT_DEMO_OPEN=true PROVIDER_SETUP_SKIPPED=true npm startপাবলিক বা অবিশ্বস্ত নেটওয়ার্কে Demo মোড চালু করবেন না। এই মোডের সম্পূর্ণ সীমাবদ্ধতার জন্য রিপোজিটরির DEMO.md দেখুন।
মডেল Provider কনফিগার করুন
SkyDot আগে ইন্টারফেস ইনিশিয়ালাইজ করে পরে সেটিংসে Provider সম্পূর্ণ করার সুযোগ দেয়। বাস্তব মডেল যুক্ত করতে সংশ্লিষ্ট API Key, Session Cookie বা অন্যান্য ক্রেডেনশিয়াল প্রস্তুত রাখতে হবে এবং ক্রেডেনশিয়াল স্ক্রিনশট, কমান্ড-লাইন ইতিহাস বা Git রিপোজিটরিতে লেখা এড়াতে হবে।
তৃতীয় পক্ষের OpenAI Completions ইন্টারফেস ব্যবহার করলে Provider-এর কাস্টম পরিবেশ ভেরিয়েবলে সেট করুন:
SKYDOT_MODEL_API=openai-completionsডিফল্ট প্রোটোকল হলো anthropic-messages; এই সেটিং সাধারণ Dot কথোপকথনের Host এবং Container Runner উভয়ের জন্য ব্যবহৃত হয়।
Agent এক্সিকিউশন মোড বেছে নিন
Host মোড
Host মোড সরাসরি স্থানীয় Runner ব্যবহার করে, Docker প্রয়োজন হয় না এবং স্থানীয় ডেভেলপমেন্ট ও দ্রুত যাচাইয়ের জন্য উপযোগী। এক্সিকিউশন অনুমতি Workspace, ব্যবহারকারী এবং রান নীতির সীমার অধীনেই থাকে।
Container মোড

Container মোডের জন্য Docker কার্যকর থাকতে হবে এবং Agent Runner ইমেজ প্রস্তুত করতে হবে। ডিফল্ট ইমেজ হলো 2sincejuly/skydot-agent:latest; বর্তমান সোর্স থেকেও বিল্ড করা যায়:
docker build --pull -t 2sincejuly/skydot-agent:latest containerঅন্য ইমেজ ব্যবহার করতে SKYDOT_CONTAINER_IMAGE সেট করা যায়; সামঞ্জস্যপূর্ণ কনফিগারেশন অপশন হলো CONTAINER_IMAGE। সার্ভিস এবং ইমেজ বিল্ডকে একই Docker daemon-এর সঙ্গে সংযুক্ত থাকতে হবে। make start বা make dev প্রথমে স্থানীয় ইমেজ ব্যবহার করবে, না থাকলে তা টানার চেষ্টা করবে।
ডেস্কটপ Electron চালান
Backend এবং Vite চালু থাকলে অন্য একটি টার্মিনালে Electron চালানো যায়:
SKYDOT_RENDERER_URL=http://127.0.0.1:5173 npm run desktop:devBackend যদি ইতিমধ্যে বিল্ড করা পেজ সরবরাহ করে, সরাসরি চালাতে পারেন:
npm run desktop:devElectron দূরবর্তী Backend-এর সঙ্গেও সংযুক্ত হতে পারে:
SKYDOT_SERVER_URL=https://your-skydot.example.com npm run desktop:devস্থানীয় প্যাকেজ তৈরির জন্য নিচের কমান্ডগুলো ব্যবহার করা যায়:
npm run desktop:package:dir
npm run desktop:packageপ্রজেক্টে ডিফল্টভাবে macOS arm64 প্যাকেজ কনফিগারেশন দেওয়া আছে; একই সঙ্গে Windows এবং Linux টার্গেটও রাখা হয়েছে। আনুষ্ঠানিক প্রকাশের আগে লক্ষ্য প্ল্যাটফর্ম অনুযায়ী সাইনিং এবং নোটারাইজেশন কনফিগার করতে হবে।
গুরুত্বপূর্ণ পরিবেশ ভেরিয়েবল

WEB_PORT: Backend যে পোর্টে শুনবে; ডিফল্ট মান3000।SKYDOT_SERVER_URL: Electron যে Backend-এ সংযুক্ত হবে; ডিফল্ট মানhttp://127.0.0.1:3000।SKYDOT_RENDERER_URL: Electron যে Renderer লোড করবে তার ঠিকানা।SKYDOT_CONTAINER_IMAGE: Agent Runner কনটেইনার ইমেজ।PROVIDER_SETUP_SKIPPED: সিস্টেম সেটিংস ফাইল না থাকলে Provider সেটআপ ধাপ এড়িয়ে যায়।SKYDOT_BOT_GROUPS: নেটিভ মাল্টি-Dot গ্রুপ চ্যাট চালু করে।SKYDOT_BOT_HANDOFFS: গ্রুপ চ্যাটে Bot সহযোগিতামূলক এক্সিকিউশন চালু করে।SKYDOT_PERSONAL_GOALS: ব্যক্তিগত Goal পরীক্ষামূলক সুবিধা চালু করে।
ব্যক্তিগত Goal এবং Durable Runtime ডিফল্টভাবে বন্ধ থাকে। সাধারণ নির্ধারিত কাজ এসব সুইচের ওপর নির্ভর করে না; নির্দিষ্ট রান শর্তের জন্য Goals and Tasks ডকুমেন্ট দেখুন।
একটি মৌলিক ব্যবহার প্রক্রিয়া
- SkyDot-এ লগইন করে প্রশাসক ইনিশিয়ালাইজেশন সম্পন্ন করুন।
- সেটিংসে একটি কার্যকর Model Provider কনফিগার করুন।
- একটি Dot তৈরি করে তার নাম, Prompt, মডেল এবং এক্সিকিউশন নীতি নির্ধারণ করুন।
- Dot-এর জন্য একটি Workspace বেছে নিন এবং ফাইল ও মেমরির সীমা প্রত্যাশামতো আছে কি না নিশ্চিত করুন।
- কথোপকথনে কাজ পাঠিয়ে স্ট্রিমিং আউটপুট, টুল অনুমোদন এবং এক্সিকিউশনের ফলাফল পর্যবেক্ষণ করুন।
- দীর্ঘমেয়াদি রান প্রয়োজন হলে Cron, নির্দিষ্ট ব্যবধান বা এককালীন কাজ তৈরি করুন।
- বহু-ভূমিকার সহযোগিতা প্রয়োজন হলে গ্রুপ চ্যাট চালু করে Bot সহযোগিতার অনুমতি স্পষ্টভাবে কনফিগার করুন।
উদাহরণস্বরূপ, কোড বিশ্লেষণের জন্য একটি Dot এবং তথ্য整理 করার জন্য আরেকটি Dot তৈরি করে তাদের একই গ্রুপ চ্যাটে যোগ করা যায়। স্পষ্টভাবে উল্লেখ করে বা নিয়ন্ত্রিতভাবে দায়িত্ব অর্পণ করে কাজ ভাগ করলে, ব্যবহারকারীরা শেয়ার করা টাইমলাইনে অগ্রগতি ও ফলাফল দেখতে পারবেন, পাশাপাশি প্রত্যেকের নিজস্ব Workspace-এর অনুমতির সীমাও বজায় থাকবে।
অপারেশন ও নিরাপত্তা পরামর্শ
রানটাইম ডেটা ডিফল্টভাবে রিপোজিটরির data/ ডিরেক্টরিতে সংরক্ষিত থাকে। এর মধ্যে SQLite, Workspace, Session, Memory এবং রান কনফিগারেশন অন্তর্ভুক্ত। এই ডিরেক্টরি Git-এ অন্তর্ভুক্ত হয় না, তবে ব্যাকআপে সংবেদনশীল কনফিগারেশন ও ডেটাবেস থাকতে পারে, তাই মূল ডেটার মতোই এর সুরক্ষা নিশ্চিত করতে হবে।
- Backend, লগ এবং Docker-এর অবস্থা দেখতে
make statusব্যবহার করুন। - বর্তমান পোর্টে চলমান SkyDot পরিষেবা বন্ধ করতে
make stopব্যবহার করুন। - রানটাইম ডেটার ব্যাকআপ তৈরি করতে
make backupব্যবহার করুন। - নির্দিষ্ট ব্যাকআপ পুনরুদ্ধার করতে
make restore FILE=...ব্যবহার করুন। - Backend, Web, Agent Runner এবং ডকুমেন্টেশন পরীক্ষা চালাতে
make typecheckব্যবহার করুন। - Vitest পরীক্ষা চালাতে
npm test -- --runব্যবহার করুন।
রিমোট ডিপ্লয়মেন্টের সময় HTTPS ও WSS ব্যবহার করতে হবে এবং রিভার্স প্রক্সি, Cookie ও অ্যাক্সেস কন্ট্রোল সঠিকভাবে কনফিগার করতে হবে। Renderer, ডেটাবেস বা Docker daemon কখনোই অবিশ্বস্ত ব্যবহারকারীদের জন্য সরাসরি উন্মুক্ত করবেন না। সহজতার জন্য পাবলিক Demo-ও চালু করবেন না।
আরও সম্প্রসারণ
SkyDot-এর সক্ষমতা লাইব্রেরি বিল্ট-ইন, হোস্ট মেশিন, প্রজেক্ট, ব্যবহারকারী, Workspace এবং Plugin-সহ বিভিন্ন উৎস সমর্থন করে। Agent চালানোর আগে একটি কার্যকর সক্ষমতার তালিকা তৈরি করা হয় এবং নীতি অনুযায়ী Prompt, রিসোর্স ও কনটেক্সটে তা যুক্ত করা হয়। প্রজেক্টটি Plugin সংস্করণের স্ন্যাপশট, Subagents এবং Host ও Container-এর মধ্যে অভিন্ন সক্ষমতার সীমাও সমর্থন করে।
বার্তা প্রবেশের ক্ষেত্রে Web, PWA এবং Electron একই ব্যবসায়িক ফ্রন্টএন্ড ব্যবহার করে এবং Feishu, Telegram, QQ, DingTalk, WeChat, Discord, WhatsApp-সহ বিভিন্ন চ্যানেলে সংযুক্ত হতে পারে। চ্যানেলগুলো নির্দিষ্ট Workspace বা Session-এর সঙ্গে সংযুক্ত করা যায়।
সারসংক্ষেপ
SkyDot বহু-Dot কথোপকথন, Workspace বিচ্ছিন্নতা, Agent সম্পাদন, নির্ধারিত কাজ, সম্প্রসারণযোগ্য সক্ষমতা এবং দলীয় অনুমতিকে একটি স্ব-হোস্টেড ওয়ার্কবেঞ্চে একত্রিত করে। এই নিবন্ধ অনুসরণ করে Node.js পরিবেশ প্রস্তুত, নির্ভরতা ইনস্টল, বিল্ড ও চালু করা এবং Provider কনফিগার করার পর আপনি প্রথমে ব্যক্তিগত Dot চালাতে পারবেন, তারপর ধীরে ধীরে Docker, Electron, গ্রুপ চ্যাট, Scheduler, Skills, MCP ও Memory-এর মতো সক্ষমতা চালু করতে পারবেন।
প্রজেক্টটি এখনও ধারাবাহিকভাবে উন্নয়নাধীন। তাই বাস্তব মডেল, Docker, বাহ্যিক চ্যানেল এবং রিমোট ডিপ্লয়মেন্ট প্রত্যেকটির নিজস্ব ক্রেডেনশিয়াল ও রানটাইম পরিবেশের ওপর নির্ভরশীল। Goal, Durable বা Cloud Runtime-এর মতো পরীক্ষামূলক সক্ষমতাগুলোকে ডিফল্টভাবে সক্রিয় ফিচার হিসেবে বিবেচনা করা উচিত নয়।
