SSD Nodes Learn 8GB RAM — $66/বছর
নির্দেশিকা Matt Connorদ্বারা Matt Connor · আপডেট করা হয়েছে 2026-08-01

VPS-এ AI এজেন্টের জন্য Memmy মেমোরি হাব সেটআপ

আপনার AI এজেন্টদের জন্য একটি শেয়ারড মেমোরি স্টোর হিসেবে Memmy ব্যবহার করুন। Ubuntu সার্ভারে সোর্স থেকে বিল্ড করুন এবং 18960 পোর্টে সার্ভিসটি চালু করে লোকাল ডেটাবেস ম্যানেজ করুন।

Memmy কী এবং এটি কী সংরক্ষণ করে

Memmy হলো AI এজেন্টদের জন্য একটি লোকাল মেমোরি হাব, যা আপনার নিজস্ব VPS (ভার্চুয়াল প্রাইভেট সার্ভার)-এ চলে। এটি এজেন্টদের শেখা বিষয়গুলোর একটি SQLite ডেটাবেস বজায় রাখে এবং সার্ভারে থাকা প্রতিটি এজেন্ট একই স্টোর থেকে তথ্য পড়ে ও লেখে। এই প্রকল্পটি MemTensor থেকে memmy-agent, MIT লাইসেন্সপ্রাপ্ত এবং জুলাই 2026 অনুযায়ী এর সংস্করণ 1.0.4।

সার্ভারে এর শুধুমাত্র কিছু অংশ প্রয়োজন। Memmy একটি মেমোরি সার্ভিস প্রদান করে যা http://127.0.0.1:18960-এ লিসেন করে, একটি memmy-memory কমান্ড লাইন ইন্টারফেস (CLI) যা সেই সার্ভিসের সাথে যোগাযোগ করে এবং একটি ডেস্কটপ ওয়ার্কবেঞ্চ। ওয়ার্কবেঞ্চটি শুধুমাত্র macOS এবং Windows-এর জন্য প্যাকেজ করা হয়েছে, তাই Linux VPS-এ আপনি সার্ভিস এবং CLI ব্যবহার করবেন। Claude Code, Codex এবং Cursor-কে একটি শেয়ারড মেমোরি দেওয়ার জন্য এটিই যথেষ্ট।

Memmy তার সংরক্ষিত তথ্যগুলোকে চারটি স্তরে বিন্যস্ত করে। L1 Trace হলো প্রাথমিক টার্ন: রিকোয়েস্ট, রেসপন্স এবং টুল কল। L2 Policy হলো ট্রেস থেকে প্রাপ্ত এমন পদ্ধতি যা কার্যকর প্রমাণিত হয়েছে। L3 World Model হলো কোনো প্রজেক্ট বা এনভায়রনমেন্ট সম্পর্কে স্থিতিশীল জ্ঞান। Skill হলো পলিসি থেকে তৈরি একটি কলযোগ্য পদ্ধতি। সার্ভিসটি কোনো টার্ন ইনজেস্ট করার সময় নিজেই একটি স্তর নির্ধারণ করে দেয়, তাই আপনাকে এগুলো হাতে তৈরি করতে হয় না।

শেয়ারড মেমোরি হাব পার-টুল মেমোরির তুলনায় কী পরিবর্তন আনে

আজকের প্রতিটি এজেন্ট নিজস্ব মেমোরি ব্যবহার করে। Claude Code রিপোজিটরিতে ইনস্ট্রাকশন ফাইল রাখে। Cursor তার ওয়ার্কস্পেস ডেটাবেসে নিয়মগুলো জমা রাখে। Codex সেশন লগগুলো ~/.codex-এর অধীনে রাখে। প্রতিটি স্টোর একটি নির্দিষ্ট টুলের অন্তর্গত, তাই সোমবার একটি টুলে আপনি যে তথ্য শিখিয়েছেন, মঙ্গলবার অন্য টুলে তা অজানা থাকে। এর জন্য আপনাকে দুবার মূল্য দিতে হয়: একবার একই প্রজেক্ট বারবার ব্যাখ্যা করার টোকেন খরচের মাধ্যমে, এবং অন্যবার ভুল কাজের মাধ্যমে, যখন কোনো এজেন্ট এমন কোনো ধারণার ওপর ভিত্তি করে কাজ করে যা আপনি অন্য কোথাও আগেই সংশোধন করেছেন।

একটি হাব স্টোরটিকে টুলের বাইরে নিয়ে আসে। Memmy বিদ্যমান স্টোরগুলোও পড়তে পারে, তাই আপনাকে খালি ডেটাবেস থেকে শুরু করতে হয় না। এর স্ক্যানার ছয়টি উৎস শনাক্ত করতে পারে: ~/.claude/projects/**/*.jsonl-এ Claude Code, ~/.codex/sessions/<YYYY>/<MM>/<DD>/rollout-*.jsonl-এ Codex, ~/.local/share/opencode/opencode.db-এ OpenCode, Cursor-এর state.vscdb ফাইল, ~/.openclaw-এর অধীনে OpenClaw-এর SQLite ডেটাবেস এবং ~/.hermes-এ Hermes। আপনি নাম এবং লোকাল পাথ ব্যবহার করে ম্যানুয়ালি একটি উৎস যোগ করতে পারেন।

ইমপোর্ট কাউন্টারগুলো মিলবে না, এবং এটি প্রত্যাশিত। স্ক্যানার উৎস এবং কথোপকথন অনুযায়ী মেসেজগুলোকে গ্রুপ করে, তারপর প্রতিটি সম্পূর্ণ টার্নের জন্য একটি L1 মেমোরি লেখে। একটি টার্ন তখনই সম্পূর্ণ হিসেবে গণ্য হয় যখন তাতে ব্যবহারকারীর অ-শূন্য কন্টেন্ট থাকে এবং তা একটি অ-শূন্য অ্যাসিস্ট্যান্ট মেসেজ দিয়ে শেষ হয়, তাই মাঝপথে বাধাগ্রস্ত কোনো সেশন কোনো অবদান রাখে না। কথোপকথনের চেকপয়েন্ট এবং স্থিতিশীল টার্ন ID ব্যবহার করে মেসেজগুলো থেকে ডুপ্লিকেট সরানো হয়। একই রান চলাকালীন স্ক্যান করা সংখ্যা, ইমপোর্ট করা মেসেজের সংখ্যা এবং নতুন মেমোরির সংখ্যা ভিন্ন হতে পারে।

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

VPS-এ আপনার যা প্রয়োজন

  • Node.js 22 বা তার পরবর্তী সংস্করণ। Memmy ডকুমেন্টেশনের জন্য এটি প্রয়োজন এবং Ubuntu 24.04-এ Node 18 থাকে।
  • git এবং একটি বিল্ড টুলচেইন, কারণ better-sqlite3 একটি নেটিভ মডিউল যা ইনস্টল করার সময় কম্পাইল হতে পারে।
  • প্রায় 2 GB RAM। রুট ইনস্টলেশনের সময় একটি বড় ওয়ার্কস্পেস এবং ফ্রন্টএন্ড বিল্ড চেইন ডাউনলোড হয়।
  • node_modules এবং ডেটাবেসের জন্য কয়েক GB খালি ডিস্ক স্পেস।
sudo apt update
sudo apt install -y git build-essential python3 curl ca-certificates sqlite3
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
node --version

node --version কমান্ডটি আউটপুট হিসেবে v22 বা তার বেশি প্রদর্শন করা উচিত। এখানে v18 আসার অর্থ হলো NodeSource ধাপটি কার্যকর হয়নি এবং পরবর্তীতে প্রজেক্টের ইঞ্জিন চেক করার সময় ইনস্টলেশন ব্যর্থ হবে।

Ubuntu 24.04-এ সোর্স থেকে Memmy ইনস্টল করা

git clone https://github.com/MemTensor/memmy-agent.git
cd memmy-agent
cp .env.example .env
npm install
npm run memory:build

npm run memory:build, @memmy/memory ওয়ার্কস্পেসটিকে Memory/dist-এ কম্পাইল করে। হেডলেস সার্ভারের জন্য ট্রি-এর অন্য কোনো কিছু বিল্ড করার প্রয়োজন নেই। নেটিভ মডিউলটি লোড হয়েছে কিনা তা পরীক্ষা করুন:

node -e "require('better-sqlite3'); console.log('better-sqlite3 loads')"

যদি এই লাইনটি প্রিন্ট করার পরিবর্তে কোনো এরর দেখায়, তবে বুঝতে হবে নেটিভ মডিউলটি আপনার Node ভার্সনের সাথে সামঞ্জস্যপূর্ণ নয়। npm rebuild better-sqlite3 কমান্ডটি চালান, যা প্রজেক্টের নিজস্ব স্টার্ট স্ক্রিপ্ট কোনো কিছু লঞ্চ করার আগে ঠিক এই কাজটিই করে।

README-তে bash scripts/dev-start.sh-কে একটি সিঙ্গেল কমান্ড স্টার্ট হিসেবে উল্লেখ করা হয়েছে। হেডলেস VPS-এ এটি চালাবেন না। এটি মেমোরি সার্ভিসের পাশাপাশি পোর্ট 19000-এ একটি Electron ডেস্কটপ শেল এবং একটি Vite ডেভ সার্ভার চালু করে। যেহেতু Electron-এর জন্য একটি ডিসপ্লে প্রয়োজন, তাই গ্রাফিক্যাল সেশন নেই এমন সার্ভারে স্ক্রিপ্টটি আটকে যায় অথবা বন্ধ হয়ে যায়।

মেমোরি সার্ভিস চালু করুন এবং এটি সাড়া দিচ্ছে কিনা তা যাচাই করুন

npm run memory:serve:dev

সোর্স থেকে মেমোরি সার্ভিস চালানোর এটিই নথিবদ্ধ পদ্ধতি। এটি 127.0.0.1:18960-এ বাইন্ড হয়, ডাটাবেসকে ~/.memmy/memory-service/memory.sqlite-এ রাখে এবং ~/.memmy/config.yaml থেকে কনফিগারেশন পড়ে। আপনি যখন মানগুলো স্পষ্টভাবে উল্লেখ করতে চান, তখন README-তেও একই মানগুলো দেওয়া আছে:

npm run memory:serve:dev -- \
  --host 127.0.0.1 --port 18960 \
  --db ~/.memmy/memory-service/memory.sqlite \
  --config ~/.memmy/config.yaml

দ্বিতীয় একটি শেল থেকে, সার্ভিসটি সচল আছে কিনা তা জিজ্ঞাসা করুন:

curl -sS http://127.0.0.1:18960/api/v1/health

Health হলো একমাত্র এন্ডপয়েন্ট যা কখনোই টোকেন চায় না, আর এই কারণেই এটি যাচাই করার জন্য সঠিক উপায়। যদি curl কোড 7 এবং একটি Failed to connect to 127.0.0.1 port 18960 মেসেজ দিয়ে বন্ধ হয়ে যায়, তবে বুঝতে হবে কোনো সার্ভিস লিসেন করছে না। সার্ভিসটি যে টার্মিনালে চলছে সেটি পড়ুন, কারণ স্টার্টআপের সময় কোনো ক্র্যাশ হলে তা সেখানে প্রদর্শিত হয়। সাধারণত নেটিভ SQLite মডিউল লোড হতে ব্যর্থ হওয়ার কারণে এমনটি ঘটে। সার্ভিসটি চালু হওয়ার পর ss -lntp | grep 18960 সকেটটি নিশ্চিত করে।

বাকি HTTP API (অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস) /api/v1-এর অধীনে থাকে।

  • POST /api/v1/memory/add একটি মেমোরি লেখে এবং POST /api/v1/memory/search কোয়েরি করে।
  • GET /api/v1/memory/:id এবং DELETE /api/v1/memory/:id একটি এন্ট্রি পড়ে এবং মুছে ফেলে।
  • POST /api/v1/sessions/open এবং POST /api/v1/sessions/:sessionId/close একটি এজেন্ট সেশন শুরু ও শেষ করে।
  • POST /api/v1/turns/start এবং POST /api/v1/turns/:turnId/complete একটি টার্ন রেকর্ড করে।
  • GET /api/v1/panel/overview, /api/v1/panel/analysis এবং /api/v1/panel/items ড্যাশবোর্ডে তথ্য প্রদান করে।

Memmy পোর্টগুলোর একটি ব্লক সংরক্ষণ করে রাখে এবং হেডলেস মোডে আপনি শুধুমাত্র প্রথমটি ব্যবহার করবেন: মেমোরির জন্য 18960, গেটওয়ে হেলথের জন্য 18970, ওয়েব UI এবং অ্যাডমিন HTTP-এর জন্য 18980, OpenAI-সামঞ্জস্যপূর্ণ API-এর জন্য 18990 যা memmy serve শুরু করে, এবং ডেস্কটপ ফ্রন্টএন্ডের ডেভ সার্ভারের জন্য 19000 ও 19010। যদি আপনার মেশিনে অন্য কোনো সার্ভিস এই পোর্টগুলোর কোনোটি দখল করে রাখে, তবে এই তালিকাটিই আপনাকে দেখতে হবে।

memmy-memory কমান্ডটি মূলত যেখান থেকে আসে

সাধারণত প্রথমবার ইনস্টল করার সময় এখানেই ভুল হয়, তাই অনুমান না করে প্যাকেজ থেকে এটি পড়ে নিন। কমান্ডের নামের সাথে রিপোজিটরি নামের কোনো সম্পর্ক নেই। এটি ওয়ার্কস্পেসের bin ফিল্ড থেকে আসে যা এটিকে সংজ্ঞায়িত করে:

node -p "JSON.stringify(require('./Memory/package.json').bin)"

এটি {"memmy-memory":"./dist/src/cli/index.js"} প্রিন্ট করে। সুতরাং বিল্ট এন্ট্রি পয়েন্টটি হলো Memory/dist/src/cli/index.js, এবং এটি শুধুমাত্র npm run memory:build এর পরেই বিদ্যমান থাকে, কারণ বিল্ড প্রক্রিয়াটিই dist তৈরি করে এবং ফাইলটিকে এক্সিকিউটেবল হিসেবে চিহ্নিত করে। এটি সরাসরি চালান:

node Memory/dist/src/cli/index.js health

আপনি যদি আপনার PATH-এ ছোট নামটি রাখতে চান, তবে একই ফাইলটি লিঙ্ক করুন:

sudo ln -s "$PWD/Memory/dist/src/cli/index.js" /usr/local/bin/memmy-memory
memmy-memory health

CLI ডিফল্টরূপে http://127.0.0.1:18960 ব্যবহার করে এবং --url, --token, --config, --source--user-id গ্রহণ করে। এর সাবকমান্ডগুলো হলো init, health, search, add, get এবং delete, এছাড়া সেশন এবং টার্ন কল রয়েছে যা মানুষ নয় বরং এজেন্টরা ব্যবহার করে। memmy-memory search "deploy steps" এবং memmy-memory add "staging migrates on deploy" হলো এমন দুটি কমান্ড যা একটি এজেন্ট সবচেয়ে বেশি চালায়।

Claude Code-কে কীভাবে Memmy-এর সাথে সংযুক্ত করবেন?

Claude Code-এ কোনো মেমরি প্লাগইন ইন্টারফেস নেই, তাই Memmy সরাসরি এর সাথে যুক্ত হয় না। এই ইন্টিগ্রেশনটি আরও সাধারণ। Claude Code একটি সাধারণ শেল কমান্ড হিসেবে memmy-memory চালায় এবং একটি ইনস্ট্রাকশন ফাইল এটিকে বলে দেয় কখন তা করতে হবে। Memmy-এর ডকুমেন্টেশনে থাকা ইনস্টলার আপনার জন্য সেই ফাইলটি লিখে দেয়: memmy-memory init --agent কমান্ডটি টার্গেট এজেন্টের রুলস ডিরেক্টরিতে একটি মেমরি ইনস্ট্রাকশন ফাইল তৈরি করে।

একবার নিজে হাতে ইনস্ট্রাকশনটি লিখুন, কারণ এতে আপনি নিশ্চিতভাবে জানতে পারবেন এজেন্টকে কী নির্দেশ দেওয়া হয়েছে। Claude Code প্রতিটি সেশনের শুরুতে প্রজেক্ট রুট থেকে CLAUDE.md ফাইলটি পড়ে, তাই নিচের মতো একটি সেকশনই সম্পূর্ণ ইন্টিগ্রেশনের জন্য যথেষ্ট:

## Memory

Before starting a task, run `memmy-memory search "<topic>"` and read what comes back.
When a task is done, run `memmy-memory add "<what you learned>"` for anything that will matter next session.

এটি আপনাকে কী সুবিধা দেয় তা পরিষ্কারভাবে বুঝে নিন। এটি ইনস্ট্রাকশন লেভেলের ইন্টিগ্রেশন, তাই মডেল যখন কমান্ডটি চালানোর সিদ্ধান্ত নেয় কেবল তখনই এটি কাজ করে, অন্যথায় নয়। কোনো কিছুই এই কলটিকে বাধ্যতামূলক করে না। যদি কোনো সেশন add কমান্ড ছাড়াই শেষ হয়, তবে কিছুই সেভ হবে না এবং পরবর্তীবার সার্চ করার সময় শুধুমাত্র একটি খালি ফলাফল দেখা যাবে। এটি Claude Code-এর নিজস্ব মেমরি ফাইলগুলোর মতোই একটি ট্রেড-অফ, তবে একটি পার্থক্য আছে: এখানে স্টোরটি শেয়ার করা থাকে, তাই নোটটি একই মেশিনে থাকা Codex এবং Cursor-এর কাছেও পৌঁছে যায়।

বিপরীত দিকের জন্য কোনো সেটআপের প্রয়োজন নেই। Memmy-এর স্ক্যানার ইতিমধ্যে ~/.claude/projects/**/*.jsonl ফাইলটি পড়ে, যেখানে Claude Code তার সেশনের ট্রান্সক্রিপ্টগুলো লিখে রাখে। আপনি যে সার্ভারে tmux সেশনের ভেতরে Claude Code চালাচ্ছেন, সেখানেই Memmy চালান; তাহলে কোনো কনফিগারেশন ছাড়াই গতকালের কাজগুলো মেমরিতে পরিণত হবে।

Memmy কি Claude Code-এর জন্য একটি MCP সার্ভার হিসেবে কাজ করে?

না, এবং এই বিষয়টি আগে থেকে জানা থাকলে আপনার মূল্যবান সময় বাঁচবে। MCP (model context protocol)-এর ক্লায়েন্ট এবং সার্ভার থাকে। Memmy হলো একটি ক্লায়েন্ট। এটি MCP সার্ভারের সাথে সংযোগ স্থাপন করে এবং এর নিজস্ব এজেন্ট রানটাইমে সেই সার্ভারের টুলগুলো প্রদান করে। এটি এমন কোনো MCP এন্ডপয়েন্ট প্রকাশ করে না যার দিকে claude mcp add নির্দেশ করতে পারে। রিপোজিটরিতে থাকা একমাত্র MCP ব্রিজটি ডেস্কটপ লোকাল API-এর ভেতরে থাকা Composio ইন্টিগ্রেশনের অন্তর্গত, এবং সেই API তার নিজস্ব x-memmy-mcp-token হেডারের পেছনে 127.0.0.1-এ একটি র‍্যান্ডম পোর্ট বাইন্ড করে।

ক্লায়েন্ট সাইডটি MEMMY_CONFIG ফাইল দ্বারা নির্দেশিত ~/.memmy/config.yaml-এ, tools.mcpServers-এর অধীনে কনফিগার করা হয়:

tools:
  mcpServers:
    example:
      type: stdio
      command: npx
      args:
        - "-y"
        - "your-mcp-server"
      toolTimeout: 30
      enabledTools:
        - "*"

type-এ stdio, sse এবং streamableHttp ব্যবহার করা যায়। একটি stdio সার্ভার Memmy-এর চাইল্ড প্রসেস হিসেবে চলে, যার অর্থ হলো এর কমান্ডটি অবশ্যই একই মেশিনে থাকতে হবে এবং একই ব্যবহারকারীর অধীনে চলতে হবে। আপনি যদি ইতিমধ্যে একটি VPS-এ MCP সার্ভার চালু রেখে থাকেন, তবে সেগুলোই এখানে তালিকাভুক্ত করতে হবে।

মেমরি স্টোর ব্যক্তিগত রাখা

Memmy-এর মালিকানাধীন সবকিছু ~/.memmy-এর অধীনে থাকে: config.yaml, ওয়ার্কস্পেস, memory-service/memory.sqlite এবং রানটাইম ফাইল। স্ক্যানিং এবং ইনজেশন স্থানীয়ভাবে ঘটে এবং মেমরিগুলো সেই স্থানীয় SQLite ফাইলে লেখা হয়, তাই ডিফল্ট অবস্থানটি মূলত স্থানীয়।

দুটি পাথ নেটওয়ার্কে পৌঁছায়। MEMMY_CLOUD_SERVICE ডিফল্টভাবে https://memmy-api.memtensor.cn-এ থাকে এবং ট্রায়াল টোকেনসহ অ্যাকাউন্ট মোডকে সাপোর্ট করে, তাই API key মোড কখনোই এটিকে কল করে না। মেমরি ইমপ্রুভমেন্ট প্রোগ্রামটি প্রাইভেসি সেটিংসে একটি আলাদা টগল, যা আপনি চালু না করা পর্যন্ত বন্ধ থাকে।

তৃতীয় একটি পাথ এড়িয়ে যাওয়া সহজ। আপনি যদি একটি হোস্ট করা এম্বেডিং প্রোভাইডার কনফিগার করেন, তবে প্রতিটি মেমরির টেক্সট সেই প্রোভাইডারের কাছে পাঠানো হয় যাতে সেটিকে ভেক্টরে রূপান্তর করা যায়। স্থানীয় স্টোরেজ এক্ষেত্রে কোনো সাহায্য করে না। এটি বন্ধ করার একমাত্র উপায় হলো আপনার নিজের হোস্ট করা একটি এম্বেডিং এন্ডপয়েন্ট ব্যবহার করা।

পোর্ট 18960-কে লুপব্যাক অ্যাড্রেসে রাখুন। এর জন্য কোনো ফায়ারওয়াল রুলের প্রয়োজন নেই, কারণ 127.0.0.1-এ বাইন্ড করা কোনো সার্ভিস বক্সের বাইরে থেকে একেবারেই অ্যাক্সেসযোগ্য নয়। এর পরিবর্তে SSH-এর মাধ্যমে আপনার ল্যাপটপ থেকে এটিতে পৌঁছান:

ssh -N -L 18960:127.0.0.1:18960 you@your-vps

যদি আপনি কখনো এটিকে আরও বিস্তৃতভাবে বাইন্ড করেন, তবে প্রথমে একটি টোকেন সেট করুন। কনফিগারেশনে storage.token সেট করা, অথবা MEMMY_MEMORY_TOKEN বা MEMORY_SERVICE_TOKEN এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করা, হেলথ বাদে প্রতিটি এন্ডপয়েন্টের জন্য একটি বিয়ারার টোকেন বাধ্যতামূলক করে। কনফিগারেশন ভ্যালুগুলো ${ENV_NAME} রেফারেন্স সাপোর্ট করে, তাই টোকেন এবং আপনার মডেল API কিগুলো ফাইল থেকে দূরে থাকে। এটি অন্য সব জায়গার মতো AI এজেন্ট থেকে সিক্রেট দূরে রাখা-এর অভ্যাসের মতোই এবং ভবিষ্যতে কোনো ভার্সন যদি তার ডিফল্ট বাইন্ড অ্যাড্রেস পরিবর্তন করে, তবে একটি ডিফল্ট ডিনাই ufw পলিসি আপনার ব্যাকস্টপ হিসেবে কাজ করবে।

~/.memmy ব্যাক আপ নিন, এর ওপর নির্ভর করার আগে

memory.sqlite হলো পুরো স্টোর। ভেক্টরগুলো sqlite-vec এক্সটেনশনের মাধ্যমে একই ফাইলে থাকে, তাই একটি ফাইলই ব্যাক আপ হিসেবে যথেষ্ট। সার্ভিসটি যখন ডেটা লিখছে, তখন cp দিয়ে এটি কপি করলে ডেটাবেস ক্ষতিগ্রস্ত হতে পারে। SQLite-এর নিজস্ব ব্যাক আপ কমান্ড ব্যবহার করুন:

mkdir -p ~/memmy-backup
sqlite3 ~/.memmy/memory-service/memory.sqlite ".backup '$HOME/memmy-backup/memory.sqlite'"

এটি সার্ভিস চালু থাকা অবস্থায় একটি সামঞ্জস্যপূর্ণ কপি তৈরি করে। একটি নির্দিষ্ট সময়সূচী অনুযায়ী এটি সার্ভার থেকে সরিয়ে নিন, যার জন্য অফ-সাইট স্টোরেজে restic ব্যবহার করা হয়। config.yaml হারিয়ে ফেললে আপনার প্রোভাইডার সেটিংস হারাবে যা আপনি পুনরায় টাইপ করতে পারবেন। memory.sqlite হারিয়ে ফেললে আপনার প্রতিটি মেমরি মুছে যাবে এবং মেশিনের অন্য কোথাও এর কোনো দ্বিতীয় কপি থাকে না।

systemd-এর অধীনে মেমরি সার্ভিস চালানো

একটি শেল-এ npm run memory:serve:dev চালালে শেল বন্ধ হওয়ার সাথে সাথে সেটিও বন্ধ হয়ে যায়। একটি ইউনিট ফাইল রিবুট করার পরেও সার্ভিসটিকে সচল রাখে।

[Unit]
Description=Memmy memory service
After=network-online.target

[Service]
Type=simple
User=memmy
WorkingDirectory=/opt/memmy/memmy-agent
EnvironmentFile=/etc/memmy/memory.env
ExecStart=/usr/bin/npm run memory:serve:dev
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

টোকেনটিকে ইউনিট ফাইলের বাইরে রাখুন। এটিকে /etc/memmy/memory.env-এ রাখুন, যার মালিকানা root-এর কাছে থাকবে এবং মোড হবে 600:

MEMMY_CONFIG=/home/memmy/.memmy/config.yaml
MEMMY_MEMORY_TOKEN=replace-this-with-a-long-random-string
sudo systemctl daemon-reload
sudo systemctl enable --now memmy-memory
systemctl status memmy-memory --no-pager
curl -sS http://127.0.0.1:18960/api/v1/health

স্ট্যাটাস আউটপুটে status=203/EXEC থাকার অর্থ হলো systemd কোনোভাবেই ExecStart চালাতে পারেনি, তাই which npm পরীক্ষা করুন: NodeSource ইনস্টলেশনের ক্ষেত্রে এটি /usr/bin/npm এবং nvm-এর ক্ষেত্রে ব্যবহারকারীর হোম ডিরেক্টরির অধীনে থাকে, যা systemd খুঁজে পাবে না। যে ইউনিটটি শুরু হওয়ার সাথে সাথেই বন্ধ হয়ে যায়, সেটি মূলত npm-এর ভেতরে ব্যর্থ হয়েছে এবং journalctl -u memmy-memory -n 50 সেই কারণটি প্রদর্শন করবে। এর কার্যপদ্ধতি VPS-এ অন্য যেকোনো systemd সার্ভিসের মতোই।

Memmy যা এখনও করে না

  • এতে কোনো Linux ডেস্কটপ বিল্ড নেই। প্যাকেজিং স্ক্রিপ্টগুলো শুধুমাত্র macOS এবং Windows-এর জন্য তৈরি, তাই workbench, এর অনবোর্ডিং উইজার্ড এবং মেমরি ড্যাশবোর্ড সার্ভারে সরাসরি উপলব্ধ নয়।
  • memory:serve:dev একটি ডেভেলপমেন্ট পাথ হিসেবে tsx-এর মাধ্যমে TypeScript এন্ট্রি পয়েন্ট চালায়। রিপোজিটরিতে কম্পাইল করা আউটপুটের জন্য memory:serve-ও রয়েছে। আপনার চেকআউটে কোন স্ক্রিপ্টগুলো আছে তা দেখতে কোনো আর্গুমেন্ট ছাড়া npm run চালান।
  • রিট্রিভাল বা পুনরুদ্ধার প্রক্রিয়াটি সর্বশেষ 2,000টি ভেক্টর সারি থেকে তার সার্চ উইন্ডো তৈরি করে এবং তারপর সেই উইন্ডোর ভেতরে Top-K সিলেকশন প্রয়োগ করে। খুব বড় স্টোরের ক্ষেত্রে, একটি পুরনো মেমরি এই উইন্ডোর বাইরে থেকে যেতে পারে।
  • ক্যাপচারের পরেই এমবেডিং সম্পন্ন হয় এবং কোনো ব্যর্থতা ঘটলে তা এজেন্টের কাজকে বাধা না দিয়ে একটি রিট্রাই কিউতে (retry queue) চলে যায়। তাই এইমাত্র যোগ করা কোনো মেমরি ভেক্টর সার্চের মাধ্যমে খুঁজে না-ও পাওয়া যেতে পারে।
  • একটি SQLite ফাইল মানে একটি নোড। এতে কোনো ক্লাস্টারিং নেই, তাই দ্বিতীয় একটি সার্ভার মানেই দ্বিতীয় একটি আলাদা মেমরি।

2026 সালের জুলাই মাস পর্যন্ত 1.0.4 ভার্সন এবং প্রায় 329টি স্টার নির্দেশ করে যে এটি একটি নতুন প্রজেক্ট। ফ্ল্যাগ, পাথ এবং স্ক্রিপ্টের নাম রিলিজের সাথে সাথে পরিবর্তিত হতে পারে। অন্য যেকোনো জায়গা থেকে কপি করা কমান্ডের ওপর নির্ভর না করে, আপনার নিজের চেকআউটে bin ফিল্ড এবং npm run-এর আউটপুট পড়ুন।

FAQ

হেলথ চেক কেন connection refused ত্রুটি দেখায়?

18960 পোর্টে কোনো কিছু লিসেন করছে না। Failed to connect to 127.0.0.1 port 18960 সহ একটি curl এক্সিট কোড 7-এর অর্থ হলো মেমরি সার্ভিসটি চলছে না অথবা এটি চালু হওয়ার সময় বন্ধ হয়ে গেছে, তাই টার্মিনাল বা জার্নাল পড়ুন যেখানে এটি শুরু হয়েছিল। দুটি সাধারণ কারণ হলো একটি better-sqlite3 নেটিভ মডিউল যা আপনার Node ভার্সনের সাথে মেলে না, যা npm rebuild better-sqlite3 দিয়ে ঠিক করা যায়, এবং 22-এর নিচের Node ভার্সন। সার্ভিস চালু হওয়ার পর ss -lntp | grep 18960 দিয়ে সকেটটি নিশ্চিত করুন।

সোর্স থেকে বিল্ড করার পর memmy-memory কমান্ডটি কোথা থেকে আসে?

এটি রিপোজিটরির নাম থেকে নয়, বরং @memmy/memory ওয়ার্কস্পেস প্যাকেজের bin ফিল্ড থেকে আসে। চেকআউটের ভেতরে node -p "JSON.stringify(require('./Memory/package.json').bin)" রান করুন এবং এটি {"memmy-memory":"./dist/src/cli/index.js"} প্রিন্ট করবে। সেই ফাইলটি শুধুমাত্র npm run memory:build-এর পরেই বিদ্যমান থাকে, কারণ বিল্ড প্রক্রিয়াটি dist তৈরি করে এবং ফাইলটিকে এক্সিকিউটেবল হিসেবে চিহ্নিত করে। এটিকে node Memory/dist/src/cli/index.js health হিসেবে রান করুন, অথবা ছোট নামের জন্য এটিকে /usr/local/bin-এ সিমলিঙ্ক করুন।

আমি কি claude mcp add দিয়ে Claude Code-এ Memmy যোগ করতে পারি?

না। Memmy একটি MCP ক্লায়েন্ট, কোনো MCP সার্ভার নয়। এটি ~/.memmy/config.yaml-এর অধীনে tools.mcpServers-এ তালিকাভুক্ত সার্ভারগুলোর সাথে কানেক্ট হয় এবং সেগুলোর টুল নিজের রানটাইমে অফার করে। Claude Code উল্টোভাবে Memmy-এর সাথে যোগাযোগ করে, অর্থাৎ memmy-memory CLI-কে একটি শেল কমান্ড হিসেবে রান করে, যা একটি ইনস্ট্রাকশন ফাইল দ্বারা পরিচালিত হয় যা memmy-memory init --agent এজেন্টের রুলস ডিরেক্টরিতে লেখে।

Memmy রান করলে কি আমার মেমরিগুলো কোনো ক্লাউড সার্ভারে পাঠানো হয়?

স্ক্যানিং এবং ইনজেশন লোকালি রান করে এবং মেমরিগুলো আপনার নিজের ডিস্কের ~/.memmy/memory-service/memory.sqlite-এ লেখা হয়। MEMMY_CLOUD_SERVICE অ্যাকাউন্ট মোড এবং ট্রায়াল টোকেনের জন্য https://memmy-api.memtensor.cn-কে নির্দেশ করে এবং আপনি যতক্ষণ না এটি এনাবল করছেন ততক্ষণ মেমরি ইমপ্রুভমেন্ট প্রোগ্রাম বন্ধ থাকে। যে পাথটি পর্যবেক্ষণ করা প্রয়োজন তা হলো এম্বেডিং প্রোভাইডার: একটি হোস্ট করা এম্বেডিং মডেল প্রতিটি মেমরির টেক্সট গ্রহণ করে যা এটি ভেক্টরে রূপান্তর করে, তাই যদি এটি গুরুত্বপূর্ণ হয় তবে আপনার নিজের রান করা একটি এন্ডপয়েন্ট ব্যবহার করুন।