SSD Nodes Learn RAM 8GB — $66/mwaka
Mwongozo Matt ConnorNa Matt Connor · Imeboreshwa 2026-08-01

Memmy: Hifadhi ya Kumbukumbu ya Mawakala kwenye VPS

Jenga Memmy 1.0.4 kutoka chanzo kwenye Ubuntu, iendeshe kwenye port 18960, na wape Claude Code, Codex na Cursor hifadhi moja ya ndani ya SQLite.

Memmy ni nini na inahifadhi nini

Memmy ni kitovu cha kumbukumbu cha ndani kwa mawakala wa AI kinachoendeshwa kwenye VPS yako (virtual private server). Huhifadhi hifadhidata moja ya SQLite yenye yale ambayo mawakala wako wamejifunza, na kila wakala kwenye seva hiyo husoma na kuandika kwenye hifadhi hiyo hiyo. Mradi umetolewa na memmy-agent kutoka MemTensor, umepewa leseni ya MIT, na uko kwenye toleo la 1.0.4 kufikia Julai 2026.

Ni sehemu tu ya Memmy inayohitajika kwenye seva. Memmy inatoa huduma ya kumbukumbu inayosikiliza kwenye http://127.0.0.1:18960, kiolesura cha mstari wa amri (CLI) cha memmy-memory kinachowasiliana na huduma hiyo, na workbench ya kompyuta ya mezani. Workbench imefungashwa kwa macOS na Windows pekee, kwa hiyo kwenye VPS ya Linux unaendesha huduma na CLI. Hilo linatosha kuwapa Claude Code, Codex na Cursor kumbukumbu ya pamoja.

Memmy hupanga inachohifadhi katika tabaka nne. L1 Trace ni zamu ghafi: ombi, jibu na miito ya zana. L2 Policy ni utaratibu uliotokana na traces zilizothibitisha kuwa na manufaa. L3 World Model ni maarifa thabiti kuhusu mradi au mazingira. Skill ni utaratibu unaoweza kuitwa ulioundwa kutoka kwa policy. Huduma huweka tabaka wakati inaingiza zamu, kwa hiyo huzitengenezi wewe mwenyewe.

Kituo cha kumbukumbu cha pamoja hubadilisha nini ikilinganishwa na kumbukumbu za kila zana

Kila agent leo huja na kumbukumbu yake. Claude Code huhifadhi faili za maagizo kwenye repository. Cursor huhifadhi kanuni kwenye hifadhidata ya workspace yake. Codex huhifadhi kumbukumbu za vipindi chini ya ~/.codex. Kila hifadhi ni ya zana moja, kwa hiyo jambo ulilofundisha Jumatatu kwenye zana moja halijulikani Jumanne kwenye zana nyingine. Unalipia hilo mara mbili: kwanza kwa tokeni zinazotumika kueleza tena mradi uleule, na pili kwa kazi isiyo sahihi wakati agenti anatenda kwa kutegemea dhana ambayo tayari uliisahihisha mahali pengine.

Kituo huhamisha hifadhi kutoka ndani ya zana. Memmy pia husoma hifadhi zilizopo, kwa hiyo huanzi na hifadhidata tupu. Kichanganuzi chake kinajua vyanzo sita: Claude Code kwenye ~/.claude/projects/**/*.jsonl, Codex kwenye ~/.codex/sessions/<YYYY>/<MM>/<DD>/rollout-*.jsonl, OpenCode kwenye ~/.local/share/opencode/opencode.db, faili za Cursor za state.vscdb, hifadhidata za SQLite za OpenClaw chini ya ~/.openclaw, na Hermes chini ya ~/.hermes. Unaweza kuongeza chanzo mwenyewe kwa kutumia jina na njia ya ndani.

Kaunta za uletaji hazitalingana, na hilo linatarajiwa. Kichanganuzi hupanga ujumbe kulingana na chanzo na mazungumzo, kisha huandika kumbukumbu moja ya L1 kwa kila zamu kamili. Zamu huhesabiwa kuwa kamili ikiwa ina maudhui yasiyo tupu kutoka kwa mtumiaji na inaishia kwa ujumbe usio tupu kutoka kwa agenti, kwa hiyo kipindi kilichokatizwa hakichangii chochote. Ujumbe huondolewa marudio kwa kutumia vituo vya ukaguzi vya mazungumzo na vitambulisho thabiti vya zamu. Idadi iliyochanganuliwa, idadi ya ujumbe uliyoletwa na idadi ya kumbukumbu mpya zote hutofautiana katika uendeshaji huo huo.

Hiki ndicho kipande kinachoambatana na jinsi Claude Code inavyodhibiti muktadha ndani ya kipindi kimoja. Udhibiti wa muktadha huamua kinachotoshea kwenye dirisha moja. Kituo cha kumbukumbu huamua kinachobaki baada ya dirisha hilo kufungwa.

Mahitaji ya VPS

  • Node.js 22 au mpya zaidi. Hati za Memmy zinahitaji toleo hili, na Ubuntu 24.04 husambaza Node 18.
  • git na zana za uundaji, kwa sababu better-sqlite3 ni moduli asilia inayoweza kukusanywa wakati wa usakinishaji.
  • Takriban GB 2 za RAM. Usakinishaji wa root hupakua workspace kubwa na mnyororo wa uundaji wa frontend.
  • GB chache za nafasi ya diski iliyo wazi kwa node_modules na hifadhidata.
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 inapaswa kuchapisha v22 au toleo la juu zaidi. v18 hapa inamaanisha hatua ya NodeSource haikufanikiwa, na usakinishaji utashindwa baadaye kwenye ukaguzi wa engine wa mradi.

Sakinisha Memmy kutoka kwenye msimbo chanzi kwenye Ubuntu 24.04

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 hukusanya workspace ya @memmy/memory kuwa Memory/dist. Hakuna kitu kingine kwenye mti kinachohitaji kujengwa kwa seva isiyo na kiolesura cha picha. Thibitisha kuwa moduli asilia imepakiwa:

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

Ikiwa mstari huo unatoa hitilafu badala ya kuchapisha, moduli asilia haiendani na toleo lako la Node. Tekeleza npm rebuild better-sqlite3, ambalo ndilo hasa hati ya kuanzisha ya mradi hutekeleza kabla ya kuanzisha chochote.

README inaeleza bash scripts/dev-start.sh kuwa amri moja ya kuanzisha. Usiitekeleze kwenye VPS isiyo na kiolesura cha picha. Huanzisha ganda la eneo-kazi la Electron na seva ya usanidi ya Vite kwenye port 19000 pamoja na huduma ya kumbukumbu. Electron inahitaji onyesho, hivyo kwenye seva isiyo na kipindi cha picha hati hiyo husimama au hutoka.

Anzisha huduma ya memory na uhakikishe kwamba inajibu

npm run memory:serve:dev

Hiyo ndiyo njia iliyoandikwa ya kuendesha huduma ya memory kutoka kwenye source. Inafunga 127.0.0.1:18960, inaweka database kwenye ~/.memmy/memory-service/memory.sqlite, na inasoma usanidi kutoka ~/.memmy/config.yaml. README inaonyesha thamani hizo hizo kwa uwazi unapozihitaji:

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

Kutoka kwenye shell ya pili, iulize huduma ikiwa inafanya kazi:

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

Health ndiyo endpoint pekee ambayo haiombi tokeni. Ndiyo sababu ndiyo probe inayofaa. Ikiwa curl inatoka kwa code 7 na ujumbe wa Failed to connect to 127.0.0.1 port 18960, hakuna kinachosikiliza. Soma terminal inayoendesha huduma, kwa sababu kuanguka wakati wa kuanza huandikwa hapo. Sababu ya kawaida ni native SQLite module kushindwa kupakiwa. ss -lntp | grep 18960 inathibitisha socket baada ya huduma kuanza.

API ya HTTP iliyosalia (application programming interface) iko chini ya /api/v1.

  • POST /api/v1/memory/add huandika memory na POST /api/v1/memory/search huuliza.
  • GET /api/v1/memory/:id na DELETE /api/v1/memory/:id husoma na kuondoa ingizo moja.
  • POST /api/v1/sessions/open na POST /api/v1/sessions/:sessionId/close huweka mipaka ya session ya agent.
  • POST /api/v1/turns/start na POST /api/v1/turns/:turnId/complete hurekodi zamu moja.
  • GET /api/v1/panel/overview, /api/v1/panel/analysis na /api/v1/panel/items hulisha dashboard.

Memmy huhifadhi block ya ports. Katika hali ya headless, unatumia ya kwanza tu: 18960 kwa memory, 18970 kwa gateway health, 18980 kwa web UI na admin HTTP, 18990 kwa API inayooana na OpenAI ambayo memmy serve huanzisha, kisha 19000 na 19010 kwa dev server ya desktop frontend. Ikiwa kitu kwenye kompyuta yako tayari kinatumia mojawapo ya hizo, orodha hiyo ndiyo mahali pa kuangalia.

Amri ya memmy-memory hutoka wapi hasa

Hapa ndipo usakinishaji wa kwanza kwa kawaida hukosewa, kwa hiyo isome kutoka kwenye kifurushi badala ya kukisia. Jina la amri halihusiani na jina la hifadhi. Linatokana na sehemu ya bin ya workspace inayoifafanua:

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

Hii huchapisha {"memmy-memory":"./dist/src/cli/index.js"}. Kwa hiyo sehemu ya kuingilia iliyojengwa ni Memory/dist/src/cli/index.js, na huwa inapatikana tu baada ya npm run memory:build, kwa sababu ujenzi ndio huunda dist na kuweka faili hiyo iweze kutekelezwa. Iendeshe moja kwa moja:

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

Ukitaka jina fupi liwe kwenye PATH yako, tengeneza kiungo cha faili hiyo hiyo:

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

CLI hutumia http://127.0.0.1:18960 kwa chaguo-msingi na hukubali --url, --token, --config, --source na --user-id. Amri zake ndogo ni init, health, search, add, get na delete, pamoja na miito ya session na turn ambayo mawakala hutumia badala ya watu. memmy-memory search "deploy steps" na memmy-memory add "staging migrates on deploy" ndizo mbili ambazo wakala huendesha mara nyingi zaidi.

Unaunganisha vipi Claude Code na Memmy?

Claude Code haina kiolesura cha programu-jalizi za kumbukumbu, kwa hiyo Memmy haiunganishwi nayo kupitia kiolesura hicho. Muunganisho huu ni rahisi zaidi. Claude Code huendesha memmy-memory kama amri ya kawaida ya shell, na faili ya maagizo huiambia wakati wa kuiendesha. Kisakinishi kilichoandikwa katika nyaraka za Memmy huunda faili hiyo kwa niaba yako: memmy-memory init --agent huweka faili ya maagizo ya kumbukumbu katika saraka ya kanuni za wakala lengwa.

Andika maagizo hayo wewe mwenyewe mara moja, kwa sababu hapo utajua hasa wakala aliambiwa nini. Claude Code husoma CLAUDE.md kutoka kwenye mzizi wa mradi mwanzoni mwa kila kipindi, kwa hiyo sehemu kama hii ndiyo muunganisho wote:

## 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.

Elewa wazi manufaa yake. Huu ni muunganisho wa kiwango cha maagizo, kwa hiyo hufanya kazi wakati modeli inapoamua kuendesha amri hiyo, na si vinginevyo. Hakuna kinacholazimisha mwito huo. Kipindi kikiisha bila add, hakuna kilichohifadhiwa, na ishara pekee ni matokeo matupu utakayopata wakati mwingine wa kutafuta. Huo ni ubadilishanaji wa manufaa na vikwazo sawa na faili za kumbukumbu za Claude Code zenyewe, lakini kuna tofauti moja: hifadhi inashirikiwa, kwa hiyo dokezo hilo pia huwafikia Codex na Cursor kwenye mashine hiyo hiyo.

Mwelekeo mwingine hauhitaji usanidi wowote. Kichanganuzi cha Memmy tayari husoma ~/.claude/projects/**/*.jsonl, ambako Claude Code huandika manukuu ya vipindi vyake. Endesha Memmy kwenye server hiyo hiyo unayotumia kuendeshea Claude Code ndani ya kipindi cha tmux, na kazi ya jana inakuwa kumbukumbu bila wewe kusanidi chochote.

Je, Memmy hufanya kazi kama seva ya MCP kwa Claude Code?

Hapana. Kujua mwelekeo huu kunaweza kuokoa muda wa mchana. MCP (model context protocol) ina wateja na seva. Memmy ni mteja. Huunganisha na seva za MCP na kutoa zana zake kwa mazingira yake ya kuendeshea wakala. Haitangazi endpoint ya MCP ambayo claude mcp add inaweza kuielekezea. Daraja pekee la MCP katika hazina liko kwenye muunganisho wa Composio ndani ya API ya eneo-kazi, na API hiyo hufungamana na port nasibu kwenye 127.0.0.1 ikiwa nyuma ya kichwa chake cha x-memmy-mcp-token.

Upande wa mteja husanidiwa katika ~/.memmy/config.yaml, faili ambayo MEMMY_CONFIG inaelekeza, chini ya tools.mcpServers:

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

type inakubali stdio, sse na streamableHttp. Seva ya stdio huendeshwa kama mchakato mtoto wa Memmy. Hii inamaanisha kuwa amri yake lazima iwepo kwenye kompyuta hiyo hiyo na iendeshwe na mtumiaji huyo huyo. Ikiwa tayari una seva za MCP zinazoendeshwa kwenye VPS, hizo ndizo unazopaswa kuorodhesha hapa.

Kuweka hifadhi ya kumbukumbu kuwa ya faragha

Kila kitu kinachomilikiwa na Memmy kiko chini ya ~/.memmy: config.yaml, nafasi ya kazi, memory-service/memory.sqlite na faili za wakati wa utekelezaji. Uchanganuzi na uingizaji hufanyika ndani ya mfumo, na kumbukumbu huandikwa kwenye faili hiyo ya ndani ya SQLite, kwa hiyo hali chaguomsingi ni ya ndani kwa kweli.

Njia mbili hufikia mtandao. MEMMY_CLOUD_SERVICE kwa chaguomsingi inaelekeza kwa https://memmy-api.memtensor.cn na huwezesha hali ya akaunti kwa kutumia tokeni zake za majaribio, kwa hiyo hali ya ufunguo wa API haiwasiliani nayo kamwe. Programu ya kuboresha kumbukumbu ni chaguo tofauti katika mipangilio ya faragha, na huwa imezimwa hadi uiwashe.

Njia ya tatu ni rahisi kupuuzwa. Ukisanidi mtoa huduma wa embedding anayepangishwa, maandishi ya kila kumbukumbu hutumwa kwa mtoa huduma huyo ili yageuzwe kuwa vekta. Hifadhi ya ndani haisaidii katika hali hiyo. Endpoint ya embedding unayojiendeshea mwenyewe ndiyo njia pekee ya kuzuia hilo.

Weka port 18960 kwenye anwani ya loopback. Haihitaji sheria ya firewall, kwa sababu huduma iliyofungwa kwenye 127.0.0.1 haiwezi kufikiwa kutoka nje ya mashine kabisa. Ifikie kutoka kwenye laptop yako kupitia SSH badala yake:

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

Ukiifunga kwenye anwani pana zaidi, weka tokeni kwanza. Kuweka storage.token katika usanidi, au kigezo cha mazingira MEMMY_MEMORY_TOKEN au MEMORY_SERVICE_TOKEN, hufanya kila endpoint isipokuwa health ihitaji bearer token. Thamani za usanidi zinaunga mkono marejeleo ya ${ENV_NAME}, kwa hiyo tokeni na funguo zako za API za modeli hubaki nje ya faili yenyewe. Hii ni desturi ileile ya kuweka siri nje ya mawakala wa AI kila mahali pengine, na sera ya ufw ya default deny ndiyo kinga yako ya mwisho ikiwa toleo la baadaye litabadilisha anwani yake chaguomsingi ya bind.

Hifadhi nakala ya ~/.memmy kabla ya kuiamini

memory.sqlite ni hifadhi yote. Vekta ziko katika faili hiyo hiyo kupitia kiendelezi cha sqlite-vec, kwa hiyo faili moja ndiyo nakala ya chelezo. Kuinakili kwa cp wakati huduma inaandika kunaweza kutoa hifadhidata iliyokatika. Tumia amri ya SQLite ya kuhifadhi nakala:

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

Hii hutengeneza nakala thabiti huku huduma ikiendelea kufanya kazi. Ipeleke nje ya seva kwa ratiba, ambayo ndiyo kazi ya restic kwenda hifadhi ya nje ya seva. Kupoteza config.yaml kunakugharimu mipangilio ya mtoa huduma ambayo unaweza kuiandika tena. Kupoteza memory.sqlite kunakugharimu kila kumbukumbu, na hakuna nakala ya pili kwenye mashine.

Endesha huduma ya memory chini ya systemd

npm run memory:serve:dev katika shell hufa pamoja na shell. Faili ya unit huifanya huduma iendelee kufanya kazi baada ya kuwasha upya mfumo.

[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

Usiweke token kwenye unit. Iweke katika /etc/memmy/memory.env, iwe inamilikiwa na root, na iwe na mode 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 katika matokeo ya status inamaanisha systemd haikuweza kuendesha ExecStart kabisa. Kwa hiyo, kagua which npm: iko katika /usr/bin/npm kwenye usakinishaji wa NodeSource, na iko katika kitu chini ya home ya mtumiaji kwenye nvm, ambako systemd haiwezi kuipata. Unit inayoanza na kutoka mara moja ilipata hitilafu ndani ya npm. journalctl -u memmy-memory -n 50 huchapisha sababu. Hatua za uendeshaji ni zilezile kama za huduma nyingine yoyote ya systemd kwenye VPS.

Kile ambavyo Memmy bado haifanyi

  • Hakuna toleo la kompyuta za mezani za Linux. Skripti za ufungashaji zinahudumia macOS na Windows, kwa hiyo workbench, mchawi wake wa kuanza kutumia na dashibodi ya kumbukumbu havipatikani kwenye seva yenyewe.
  • memory:serve:dev huendesha sehemu ya kuanzia ya TypeScript kupitia tsx, ambayo ni njia ya uundaji. Hifadhi pia inasafirisha memory:serve kwa matokeo yaliyokusanywa. Endesha npm run bila hoja ili kuona ni skripti zipi ambazo checkout yako inazo.
  • Urejeshaji huunda dirisha la utafutaji kutokana na safu 2,000 za hivi karibuni za vekta, kisha hutumia uteuzi wa Top-K ndani ya dirisha hilo. Kwenye hifadhi kubwa sana, kumbukumbu ya zamani inaweza kuwa nje ya dirisha hilo.
  • Uundaji wa embedding hutokea baada ya kunasa, na hitilafu hupelekwa kwenye foleni ya majaribio tena badala ya kuzuia zamu ya agent. Kumbukumbu iliyoongezwa muda mfupi uliopita huenda bado isipatikane kwa utafutaji wa vekta.
  • Faili moja ya SQLite inamaanisha node moja. Hakuna clustering, kwa hiyo seva ya pili ni kumbukumbu ya pili iliyo tofauti.

Toleo 1.0.4 na takriban nyota 329 kufikia Julai 2026 zinaonyesha kuwa huu ni mradi mchanga. Flags, paths na majina ya skripti hubadilika kati ya matoleo. Soma sehemu ya bin na matokeo ya npm run katika checkout yako mwenyewe badala ya kutegemea amri iliyonakiliwa kutoka mahali popote, pamoja na hapa.

FAQ

Kwa nini ukaguzi wa afya unarudisha kukataliwa kwa muunganisho?

Hakuna mchakato unaosikiliza kwenye port 18960. Msimbo wa kutoka wa curl 7 wenye Failed to connect to 127.0.0.1 port 18960 unamaanisha kuwa huduma ya kumbukumbu haifanyi kazi au ilisitika wakati wa kuanzisha, hivyo soma terminal au journal ilipoanzishwa. Sababu mbili za kawaida ni moduli ya asili ya better-sqlite3 isiyolingana na toleo lako la Node, ambayo hurekebishwa kwa npm rebuild better-sqlite3, na toleo la Node lililo chini ya 22. Thibitisha socket kwa ss -lntp | grep 18960 baada ya huduma kuanza.

Amri ya memmy-memory hutoka wapi baada ya kujenga kutoka kwenye source?

Hutoka kwenye sehemu ya bin ya package ya workspace ya @memmy/memory, si kwenye jina la repository. Endesha node -p "JSON.stringify(require('./Memory/package.json').bin)" ndani ya checkout, nayo itaonyesha {"memmy-memory":"./dist/src/cli/index.js"}. Faili hiyo huwepo tu baada ya npm run memory:build, kwa sababu build huunda dist na kuweka faili hiyo iwe executable. Iendeshe kama node Memory/dist/src/cli/index.js health, au iunganishe kwa symlink ndani ya /usr/local/bin kwa jina fupi.

Je, ninaweza kuongeza Memmy kwenye Claude Code kwa claude mcp add?

Hapana. Memmy ni mteja wa MCP, si seva ya MCP. Huunganisha kwenda kwenye seva zilizoorodheshwa chini ya tools.mcpServers katika ~/.memmy/config.yaml na kutoa zana zake kwa runtime yake yenyewe. Claude Code huifikia Memmy kwa njia nyingine, kwa kuendesha CLI ya memmy-memory kama amri ya shell, ikiongozwa na faili ya maelekezo ambayo memmy-memory init --agent huandika kwenye saraka ya kanuni za agent.

Je, kuendesha Memmy hutuma kumbukumbu zangu kwenye huduma ya cloud?

Uchanganuzi na uingizaji hufanyika ndani ya mfumo, na kumbukumbu huandikwa kwenye ~/.memmy/memory-service/memory.sqlite kwenye diski yako mwenyewe. MEMMY_CLOUD_SERVICE huelekeza kwenye https://memmy-api.memtensor.cn kwa hali ya akaunti na tokeni za majaribio, na programu ya kuboresha kumbukumbu hubaki imezimwa hadi uiwashe. Sehemu ya kuichunguza ni mtoa huduma wa embedding: modeli ya embedding inayopangishwa hupokea maandishi ya kila kumbukumbu inayobadilisha kuwa vector, hivyo tumia endpoint unayoendesha mwenyewe ikiwa hilo ni muhimu.