Hướng dẫn cài đặt Memmy làm bộ nhớ chung cho AI agent
Cài đặt Memmy trên VPS để tạo kho lưu trữ bộ nhớ dùng chung cho các AI agent. Hướng dẫn build từ source, cấu hình service chạy tại port 18960 và quản lý dữ liệu local an toàn.
Memmy là gì và lưu trữ những gì
Memmy là một memory hub cục bộ cho AI agent, chạy trên VPS (virtual private server) của bạn. Nó lưu một database SQLite về những gì các agent đã học, và mọi agent trên máy đều đọc, ghi vào cùng một kho dữ liệu đó. Project này được memmy-agent từ MemTensor, cấp phép theo MIT, ở version 1.2.401 tính đến ngày 1 November 2026; Memory được version độc lập ở 2.1.7.
Chỉ một phần của Memmy liên quan đến server. Memmy phát hành một memory service lắng nghe trên http://127.0.0.1:18960, một memmy-memory command line interface (CLI) giao tiếp với service đó, và một desktop workbench. Workbench chỉ được đóng gói cho macOS và Windows, nên trên Linux VPS bạn chạy service và CLI. Như vậy là đủ để Claude Code, Codex và Cursor dùng chung memory.
Memmy phân loại dữ liệu lưu trữ thành bốn layer. Capture trước tiên lưu một Raw Turn riêng, sau đó ghi một mục L1 Trace cho mỗi bước được capture, gồm request, response, tool call và result. L2 Policy là một thủ tục được suy ra từ các trace đã chứng minh là hữu ích. L3 World Model là kiến thức ổn định về một project hoặc một môi trường. Skill là một thủ tục có thể gọi, được kết tinh từ một policy. Capture tạo các L1 trace, background job phát triển các layer cao hơn, còn thao tác ghi tường minh có thể chọn layer. Nếu các phân biệt này còn trừu tượng, memory là một trong các giai đoạn sau của lộ trình từng bước để học cách xây dựng agent, và các layer sẽ dễ hiểu hơn sau khi bạn tự viết một agent loop đơn giản rồi quan sát nó quên toàn bộ dữ liệu giữa các lần chạy.
Một shared memory hub thay đổi điều gì so với memory riêng của từng tool
Hiện nay, mỗi agent đều có memory riêng. Claude Code lưu các file hướng dẫn trong repository. Cursor lưu rules trong workspace database. Codex lưu session log tại ~/.codex. Mỗi store chỉ thuộc về một tool, nên thông tin bạn dạy cho một tool vào thứ Hai sẽ không được tool khác biết vào thứ Ba. Bạn phải trả giá hai lần: một lần bằng số token dùng để giải thích lại cùng một project, và một lần bằng công việc sai do agent dựa trên giả định mà bạn đã sửa ở nơi khác.
Hub đưa store ra khỏi tool. Memmy cũng đọc các store hiện có, nên bạn không phải bắt đầu với một database trống. Scanner của Memmy biết 10 source tích hợp sẵn: Claude Code tại ~/.claude/projects/**/*.jsonl, Codex tại ~/.codex/sessions/<YYYY>/<MM>/<DD>/rollout-*.jsonl, OpenCode tại ~/.local/share/opencode/opencode.db, các file state.vscdb của Cursor, các SQLite database của OpenClaw tại ~/.openclaw, Hermes tại ~/.hermes, DeepSeek Harness tại ~/.dsh/sessions, WorkBuddy tại ~/.workbuddy/projects, Pi tại ~/.pi/agent/sessions và QwenWork tại ~/.qwenworkcn/projects. Desktop workbench có thể thêm agent khác theo tên và chỉ yêu cầu đường dẫn history khi không tự tìm thấy agent đó. Scanner phía server không có custom source, nên trên một VPS headless bạn chỉ nhận được các source tích hợp sẵn.
Các bộ đếm import sẽ không khớp nhau, và đây là điều bình thường. Scanner nhóm message theo source và conversation, sau đó ghi một memory L1 cho mỗi turn hoàn chỉnh. Một turn được xem là hoàn chỉnh khi có nội dung user không rỗng và kết thúc bằng một message assistant không rỗng, nên turn chưa hoàn chỉnh không đóng góp gì cho đến khi một lần sync sau đó hoàn tất nó. Message được deduplicate bằng conversation checkpoint và turn ID ổn định. Số lượng đã scan, số message đã import và số memory mới đều khác nhau trong cùng một lần chạy.
Đây là phần đi cùng với cách Claude Code quản lý context trong một session. Context management quyết định nội dung nào vừa trong một window. Memory hub quyết định nội dung nào vẫn còn sau khi window đó đóng.
Bạn cần gì trên VPS
- Node.js 22 trở lên. Tài liệu Memmy yêu cầu phiên bản này, còn Ubuntu 24.04 cung cấp Node 18.
gitvà bộ công cụ build, vìbetter-sqlite3là native module có thể được biên dịch trong quá trình cài đặt.- RAM cho việc cài đặt workspace root và chuỗi công cụ build frontend.
- Dung lượng đĩa trống cho
node_modulesvà database.
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 --versionnode --version phải hiển thị v22 trở lên để build từ source theo tài liệu. v18 ở đây có nghĩa là bước NodeSource chưa được áp dụng. engine-strict của npm mặc định là false, nên khai báo engine không tương thích thường chỉ tạo warning thay vì tự động làm quá trình cài đặt thất bại.
Cài Memmy từ source trên Ubuntu 24.04
git clone https://github.com/MemTensor/memmy-agent.git
cd memmy-agent
cp .env.example .env
npm install
npm run memory:buildnpm run memory:build biên dịch workspace @memmy/memory thành Memory/dist. Nó cũng build AgentSourceCore, trình xem memory và các asset tích hợp cần cho workspace đó. Kiểm tra xem native module đã được load chưa:
node -e "const Database = require('better-sqlite3'); const db = new Database(':memory:'); db.close(); console.log('better-sqlite3 loads')"Nếu dòng đó báo lỗi thay vì in kết quả, hãy đọc lỗi để xác định nguyên nhân load hoặc khởi tạo database thất bại. Nếu native module không tương thích, chạy npm rebuild better-sqlite3. Đây chính xác là lệnh mà start script của project chạy trước khi khởi động bất kỳ thành phần nào.
README mô tả bash scripts/dev-start.sh là lệnh khởi động một bước. Không chạy lệnh này trên VPS headless. Lệnh này khởi động Electron desktop shell và Vite dev server trên port 19000 cùng với memory service. Electron cần display, nên trên server không có graphical session, script có thể bị treo hoặc thoát.
Các bản release gần đây cũng cung cấp memmy-agent-linux-cli.tar.gz và install.sh cho Linux x64 và arm64. Installer cần Node.js 22.23.4+ trong nhánh 22.x, 24.22.1+ trong nhánh 24.x hoặc 26.12.1+ trong nhánh 26.x, cùng với systemd user session; các major version khác sẽ bị từ chối. Nó đặt các launcher memmy và memmy-memory vào ~/.local/bin, rồi chạy memory service dưới dạng user unit tại 127.0.0.1:18960. Hướng dẫn này vẫn dùng cách build từ source vì đây là cách cho phép bạn đọc từng script trước khi chạy.
Khởi động memory service và kiểm tra phản hồi
npm run memory:serve:devĐây là cách được tài liệu hướng dẫn để chạy memory service từ source. Service bind vào 127.0.0.1:18960, lưu database tại ~/.memmy/memory-service/memory.sqlite và đọc cấu hình từ ~/.memmy/config.yaml. Server nhận các giá trị tương tự dưới dạng flag khi bạn muốn chỉ định rõ:
npm run memory:serve:dev -- \
--host 127.0.0.1 --port 18960 \
--db ~/.memmy/memory-service/memory.sqlite \
--config ~/.memmy/config.yamlTừ một shell thứ hai, yêu cầu service xác nhận nó đang hoạt động:
curl -sS http://127.0.0.1:18960/api/v1/healthHealth không yêu cầu token, nên đây là probe phù hợp. Nếu curl thoát với mã 7 và thông báo Failed to connect to 127.0.0.1 port 18960, kết nối đã thất bại; riêng điều đó không đủ để xác định có listener hay không. Kiểm tra address, port và firewall cục bộ, đồng thời đọc terminal đang chạy service để tìm lỗi khởi động. ss -lntp | grep 18960 xác nhận socket sau khi service đã hoạt động.
Phần còn lại của HTTP API (application programming interface) nằm dưới /api/v1.
POST /api/v1/memory/addghi một memory vàPOST /api/v1/memory/searchtruy vấn.GET /api/v1/memory/:idvàDELETE /api/v1/memory/:idđọc và xóa một entry.POST /api/v1/sessions/openvàPOST /api/v1/sessions/:sessionId/closeđánh dấu đầu và cuối một agent session.POST /api/v1/turns/startvàPOST /api/v1/turns/:turnId/completeghi lại một lượt trao đổi.GET /api/v1/panel/overview,/api/v1/panel/analysisvà/api/v1/panel/itemscung cấp dữ liệu cho dashboard.
Memmy dành riêng một dải port. Khi chạy headless, bạn chỉ dùng các port đầu tiên: 18960 cho memory, 18970 cho gateway health, 18980 cho web UI và admin HTTP, 18990 cho API tương thích với OpenAI do memmy serve khởi động, sau đó là 19000 cho Vite dev server của desktop frontend và 19001 cho socket hot reload. Trang ports của project vẫn liệt kê 19010 cho hot reload, nhưng cấu hình Vite đặt là 19001. Nếu trên máy đã có tiến trình sử dụng một trong các port đó, hãy kiểm tra tại danh sách này.
Nguồn gốc thực sự của lệnh memmy-memory
Đây là bước mà quá trình cài đặt lần đầu thường gặp lỗi, vì vậy hãy đọc từ package thay vì đoán mò. Tên lệnh không liên quan gì đến tên repository. Nó đến từ trường bin của workspace định nghĩa nó:
node -p "JSON.stringify(require('./Memory/package.json').bin)"Lệnh đó in ra {"memmy-memory":"./dist/src/cli/index.js"}. Do đó, entry point đã build là Memory/dist/src/cli/index.js, và nó chỉ tồn tại sau khi chạy npm run memory:build, vì quá trình build là thứ tạo ra dist và đánh dấu file đó là thực thi được. Hãy chạy trực tiếp nó:
node Memory/dist/src/cli/index.js healthNếu bạn muốn dùng tên ngắn trên PATH của mình, hãy tạo link đến cùng file đó:
sudo ln -s "$PWD/Memory/dist/src/cli/index.js" /usr/local/bin/memmy-memory
memmy-memory healthCLI mặc định sử dụng http://127.0.0.1:18960 và chấp nhận các flag --url, --token, --config, --source và --user-id. Các subcommand của nó bao gồm init, health, search, add, get và delete, cộng với các lệnh gọi session và turn mà các agent sử dụng thay vì con người, cùng với install, upgrade, service và stop để quản lý chính service đó. memmy-memory search "deploy steps" và memmy-memory add "staging migrates on deploy" là hai lệnh mà một agent chạy nhiều nhất.
Kết nối Claude Code với Memmy như thế nào?
Memmy không tự đăng ký thành một server bên trong Claude Code. Nó kết nối thông qua các file mà Claude Code đã đọc sẵn, và mức độ tích hợp phụ thuộc vào memmy-memory bạn chạy. Từ source checkout, memmy-memory init --agent claude ghi một Skill memmy-memory vào ~/.claude/skills/ và một memory block có marker vào ~/.claude/CLAUDE.md. Sau đó, Claude Code chạy memmy-memory như một shell command thông thường khi các instruction yêu cầu. Launcher mà Linux installer đặt vào ~/.local/bin đi xa hơn: cùng command đó cũng đăng ký các hook trong ~/.claude/settings.json cho SessionStart, UserPromptSubmit, Stop, PostCompact và SessionEnd. Các hook này inject memory liên quan và lưu mỗi turn đã hoàn tất mà không cần model tự quyết định chạy lệnh.
Hãy tự viết instruction một lần. Như vậy, bạn biết chính xác agent đã được yêu cầu làm gì. Claude Code đọc CLAUDE.md từ project root khi bắt đầu mỗi session. Vì vậy, một section như sau là toàn bộ phần tích hợp trên source path:
## 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.Hãy hiểu rõ lợi ích thực tế. Không có hook, đây chỉ là tích hợp ở cấp instruction. Nó hoạt động khi model quyết định chạy command, và không hoạt động trong các trường hợp khác. Không có gì bắt buộc model phải gọi lệnh. Nếu session kết thúc mà không có add, instruction đó không tự lưu gì cả. Một lần quét history sau đó vẫn có thể import turn đã hoàn tất. Đây cũng là đánh đổi giống các memory file riêng của Claude Code, nhưng có một điểm khác: store được dùng chung, nên note cũng đến được Codex và Cursor trên cùng máy. Hook khắc phục khoảng trống này thay vì chỉ yêu cầu model thực hiện, và đó cũng là lý do durable memory nằm cùng nhóm với budget cap và permission rule trong số các plugin DeepSeek Harness đáng cài.
Chiều ngược lại không cần thiết lập gì. Scanner của Memmy đã đọc ~/.claude/projects/**/*.jsonl, là nơi Claude Code ghi các session transcript. Chạy Memmy trên cùng server với Claude Code bên trong một tmux session, và công việc của ngày hôm qua sẽ trở thành memory mà bạn không cần cấu hình gì thêm.
Memmy có hoạt động như một MCP server cho Claude Code không?
Không, và việc biết rõ hướng hoạt động này sẽ giúp bạn tiết kiệm được cả buổi chiều. MCP (model context protocol) có các client và server. Memmy là một client. Nó kết nối ra các MCP server và cung cấp các công cụ của chúng cho runtime agent của chính nó. Nó không xuất bản một MCP endpoint mà claude mcp add có thể trỏ tới. Cầu nối MCP duy nhất trong repository thuộc về tích hợp Composio bên trong local API của desktop, và API đó bind một cổng ngẫu nhiên trên 127.0.0.1 phía sau header x-memmy-mcp-token của riêng nó.
Phía client được cấu hình trong ~/.memmy/config.yaml, file mà MEMMY_CONFIG trỏ tới, nằm dưới tools.mcpServers:
tools:
mcpServers:
example:
type: stdio
command: npx
args:
- "-y"
- "your-mcp-server"
toolTimeout: 30
enabledTools:
- "*"type chấp nhận stdio, sse và streamableHttp. Một server stdio chạy như một tiến trình con của Memmy, nghĩa là lệnh của nó phải tồn tại trên cùng một máy và chạy dưới cùng một user. Nếu bạn đã duy trì các MCP server đang chạy trên một VPS, đó chính là những server cần liệt kê tại đây.
Giữ memory store ở chế độ riêng tư
Mọi dữ liệu Memmy quản lý đều nằm dưới ~/.memmy: config.yaml, workspace, memory-service/memory.sqlite và các file runtime. Quá trình quét và ingestion diễn ra cục bộ, còn memory được ghi vào file SQLite cục bộ đó, nên mặc định hệ thống thực sự hoạt động cục bộ.
Kết nối cloud là một đường truyền cần theo dõi. MEMMY_CLOUD_SERVICE chỉ origin của cloud. Code không đặt giá trị mặc định cho biến này, nhưng .env.example, được các bước cài đặt copy vào .env, đặt nó thành https://api.memmy.cn. Giá trị này bật account mode với các trial token của dịch vụ. Khi được đặt, code analytics của Memmy cũng gửi event sử dụng đến đó, kể cả trong API key mode: tên event và command, version và installation ID. CLI chỉ báo cáo các từ command cố định, không bao giờ gửi search query hoặc nội dung memory. Code analytics cũng không gửi gì khi giá trị này bị bỏ trống. Vì vậy, trên server chỉ dùng API key, hãy xóa giá trị ở dòng đó trong .env trước khi khởi động bất kỳ thứ gì. Chương trình cải thiện memory là một toggle riêng trong privacy settings.
Model call là một đường truyền khác. Nếu cấu hình hosted embedding provider, nội dung memory được embed sẽ gửi đến provider đó để chuyển thành vector. Lưu trữ cục bộ không ngăn được việc này. Hãy dùng embedding provider cục bộ tích hợp sẵn hoặc một embedding endpoint do bạn tự host để đóng đường truyền này. Các model hosted dùng cho summary, evolution và relevance filter cũng nhận nội dung memory khi các job đó chạy, nên hãy kiểm tra cả các model setting này.
Giữ port 18960 trên địa chỉ loopback. Không cần firewall rule cho port này, vì service bind vào 127.0.0.1 hoàn toàn không thể truy cập từ bên ngoài máy. Thay vào đó, hãy truy cập nó từ laptop qua SSH:
ssh -N -L 18960:127.0.0.1:18960 you@your-vpsMemory service hiện tại từ chối các địa chỉ bind không phải loopback. Đặt storage.token trong config, hoặc biến môi trường MEMMY_MEMORY_TOKEN hay MEMORY_SERVICE_TOKEN, sẽ bảo vệ các memory API thông thường bằng bearer token. Health endpoint vẫn không yêu cầu xác thực, còn browser viewer dùng các kiểm tra riêng cho request cục bộ. Giá trị trong config hỗ trợ tham chiếu ${ENV_NAME}, nên token và model API key của bạn không cần ghi trực tiếp vào file. Đây cũng là cách giữ secret bên ngoài AI agent ở mọi nơi khác, còn chính sách ufw mặc định deny là lớp bảo vệ dự phòng nếu version sau thay đổi địa chỉ bind mặc định.
Sao lưu ~/.memmy trước khi tin dùng
memory.sqlite là toàn bộ kho dữ liệu. Các vector nằm trong chính file đó thông qua phần mở rộng sqlite-vec, nên chỉ cần sao lưu một file. Dùng cp để sao chép trong lúc service đang ghi có thể tạo ra database không nhất quán. Hãy dùng lệnh backup riêng của SQLite:
mkdir -p ~/memmy-backup
sqlite3 ~/.memmy/memory-service/memory.sqlite ".backup '$HOME/memmy-backup/memory.sqlite'"Lệnh này tạo một bản sao nhất quán trong khi service vẫn chạy. Hãy định kỳ đẩy bản sao đó ra khỏi máy; restic đến storage bên ngoài dùng cho việc này. Mất config.yaml chỉ khiến bạn mất các thiết lập provider có thể nhập lại. Mất memory.sqlite khiến bạn mất những memory được ghi từ sau lần backup còn dùng được gần nhất; service cũng tạo một bản backup cục bộ trước khi migration schema, nhưng đó không phải là bản sao hiện tại ở bên ngoài máy.
Chạy memory service bằng systemd
npm run memory:serve:dev trong shell sẽ dừng khi shell dừng. Unit file giúp service tiếp tục chạy sau khi reboot. Service chạy dưới user memmy, từ source checkout trong /opt/memmy, với file cấu hình trong home của user đó. Dừng bản đang chạy trong shell, sau đó di chuyển source checkout và file cấu hình sang vị trí mới rồi trỏ lại link memmy-memory:
sudo useradd -m -s /bin/bash memmy
sudo mkdir -p /opt/memmy
sudo mv ~/memmy-agent /opt/memmy/memmy-agent
sudo chown -R memmy:memmy /opt/memmy
sudo ln -sfn /opt/memmy/memmy-agent/Memory/dist/src/cli/index.js /usr/local/bin/memmy-memory
sudo install -d -o memmy -g memmy -m 700 /home/memmy/.memmy
sudo install -o memmy -g memmy -m 600 ~/.memmy/config.yaml /home/memmy/.memmy/config.yaml
sudo install -d -m 755 /etc/memmyService lưu database trong /home/memmy/.memmy, nên sẽ khởi động với store trống.
[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.targetKhông đặt token trong unit. Đặt token trong /etc/memmy/memory.env, để root sở hữu và đặt mode 600:
MEMMY_CONFIG=/home/memmy/.memmy/config.yaml
MEMMY_MEMORY_TOKEN=replace-this-with-a-long-random-stringsudo 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/healthstatus=203/EXEC trong output của status nghĩa là systemd không thể chạy ExecStart, nên hãy kiểm tra which npm: với bản cài bằng NodeSource, đó là /usr/bin/npm; còn với nvm, đó là một đường dẫn dưới home của user mà systemd sẽ không tự tìm thấy. Unit khởi động rồi thoát ngay cần được kiểm tra exit status và journal: code 0 là thoát bình thường, các kết quả khác có thể là exit khác 0, bị signal hoặc timeout. Chạy journalctl -u memmy-memory -n 50 để xem output của service. Cách vận hành cũng giống bất kỳ systemd service nào khác trên VPS.
Project hiện cung cấp 2 lựa chọn ở cấp user. Cách dành cho source build trong README là memmy-memory install --service-only; cách này tải Memory runtime đã pin version và đăng ký user service. Linux installer thiết lập memmy-memory.service thành một systemd --user unit. Cả hai đều không bật linger, nên hãy chạy sudo loginctl enable-linger <user> để service manager của user đó tiếp tục chạy sau khi logout và khởi động service khi boot.
Memmy hiện chưa làm được gì
- Chưa có bản Linux desktop. Các script đóng gói hiện chỉ hỗ trợ macOS và Windows, nên workbench và onboarding wizard không có sẵn ngay trên server. Memory service hiện đã có trình xem trên browser tại
http://127.0.0.1:18960/viewer/, có thể truy cập qua SSH tunnel ở trên. Trên Linux, thay vào đó, bạn dùng CLI tarball vàinstall.sh. memory:serve:devchạy entry point TypeScript thông quatsx, đây là đường chạy dành cho development. Repository cũng cung cấpmemory:servecho output đã compile. Chạynpm runkhông có tham số để xem checkout của bạn thực sự có những script nào.- Retrieval tạo search window từ 2,000 vector row mới nhất, rồi áp dụng lựa chọn Top-K trong window đó. Với store rất lớn, một memory cũ có thể nằm ngoài window này.
- Embedding được thực hiện sau khi capture. Nếu lỗi, tác vụ sẽ được đưa vào retry queue thay vì chặn lượt chạy của agent. Một memory vừa được thêm có thể chưa tìm kiếm được bằng vector search.
- Một server thứ hai có SQLite database riêng sẽ có memory riêng.
Ở phiên bản 1.2.401 vào ngày 1 tháng 11 năm 2026, đây vẫn là một project còn mới và thay đổi nhanh. Flag, path và tên script có thể thay đổi giữa các release. Hãy đọc field bin và output của npm run trong checkout của chính bạn, thay vì tin vào một command được sao chép từ bất kỳ đâu, kể cả nội dung ở đây.
FAQ
Vì sao health check trả về lỗi connection refused?
Mã thoát 7 của curl kèm Failed to connect to 127.0.0.1 port 18960 xác nhận kết nối thất bại, nhưng không cho biết Memmy đã dừng, bị crash, đang listen trên địa chỉ khác hay không thể truy cập. Kiểm tra địa chỉ và port, chạy ss -lntp | grep 18960, rồi đọc output trên terminal hoặc journal nơi service được khởi động. Nếu log báo module SQLite native không tương thích, chạy npm rebuild better-sqlite3. Đồng thời kiểm tra phiên bản Node: tài liệu source yêu cầu Node 22 trở lên, còn Linux installer chỉ chấp nhận Node.js 22.23.4+ trong nhánh 22.x, 24.22.1+ trong nhánh 24.x hoặc 26.12.1+ trong nhánh 26.x.
Lệnh memmy-memory xuất hiện từ đâu sau khi build từ source?
Lệnh này lấy từ trường bin của package workspace @memmy/memory, không phải từ tên repository. Chạy node -p "JSON.stringify(require('./Memory/package.json').bin)" bên trong thư mục checkout để in ra {"memmy-memory":"./dist/src/cli/index.js"}. File đó chỉ tồn tại sau npm run memory:build, vì quá trình build tạo dist và đánh dấu file có quyền executable. Chạy file bằng node Memory/dist/src/cli/index.js health, hoặc tạo symlink đến /usr/local/bin để dùng tên ngắn.
Tôi có thể thêm Memmy vào Claude Code bằng claude mcp add không?
Không. Memmy là MCP client, không phải MCP server. Memmy kết nối đến các server được liệt kê dưới tools.mcpServers trong ~/.memmy/config.yaml và cung cấp tool của chúng cho runtime của chính nó. Claude Code kết nối đến Memmy theo hướng ngược lại, bằng cách chạy CLI memmy-memory dưới dạng shell command. memmy-memory init --agent claude tạo một Skill và một block CLAUDE.md để cho Claude Code biết khi nào cần dùng chúng; launcher từ Linux installer cũng thêm các hook của Claude Code để tự động lưu các turn.
Chạy Memmy có gửi memory của tôi đến cloud service không?
Quá trình scan và ingestion chạy local, còn memory được ghi vào ~/.memmy/memory-service/memory.sqlite trên chính disk của bạn. MEMMY_CLOUD_SERVICE, khi được đặt thành https://api.memmy.cn trong .env.example, sẽ cung cấp account mode và trial token, đồng thời nhận usage analytics nhưng không nhận nội dung memory trong thời gian tùy chọn này được bật; vì vậy hãy xóa giá trị đó nếu bạn chỉ dùng API key. Chương trình cải thiện memory có một privacy toggle riêng. Hosted embedding model nhận nội dung memory để chuyển thành vector; hãy dùng local provider tích hợp sẵn hoặc endpoint do bạn tự chạy nếu muốn giữ quá trình này ở local. Hosted model dùng cho summary, evolution và relevance filter cũng nhận nội dung memory khi các job tương ứng chạy.