Claude Code کے لیے Recall کا استعمال کیسے کریں
Recall پلگ ان کے ذریعے Claude Code کو VPS پر میموری فراہم کریں۔ یہ ٹول سیشنز کا خلاصہ بنا کر ٹوکنز کی بچت کرتا ہے۔ ورژن 0.4.0 کے ساتھ مقامی طور پر لاگ فائلز سیٹ اپ کرنے کا طریقہ جانیں۔
Claude Code memory کے لیے Recall کیا کرتا ہے
Recall ایک Claude Code پلگ ان ہے جو ہر پروجیکٹ کو سیشنز کے درمیان ایک میموری فراہم کرتا ہے۔ یہ آپ کے پروجیکٹ کے اندر .recall/ فولڈر میں دو مارک ڈاؤن فائلیں لکھتا ہے: ایک جو اب تک ہونے والے واقعات کا append-only لاگ ہے، اور دوسری ایک مختصر خلاصہ کہ آپ نے کام کہاں چھوڑا تھا۔ یہ دونوں فائلیں اسی مشین پر ایک مقامی Python سمرائزر کے ذریعے تیار کی جاتی ہیں جس پر آپ کام کر رہے ہیں، لہذا اس میموری کے لیے کوئی API ٹوکن خرچ نہیں ہوتا۔
یہ جس خلا کو پُر کرتا ہے وہ چھوٹا اور مستقل ہے۔ آپ منگل کو اپنے VPS پر ایک سیشن بند کرتے ہیں۔ بدھ کو، Claude Code کو منگل کے بارے میں کچھ معلوم نہیں ہوتا۔ آپ یا تو پروجیکٹ کو دوبارہ ہاتھ سے سمجھاتے ہیں، یا ماڈل کو اسے سمجھنے کے لیے دوبارہ آدھی ریپوزٹری پڑھنے دیتے ہیں۔ دونوں صورتوں میں ٹوکن خرچ ہوتے ہیں، اور دوسری صورت میں بہت زیادہ ٹوکن خرچ ہوتے ہیں۔
Recall ورژن 0.4.0 جولائی 2026 تک کا تازہ ترین ورژن ہے، اور یہ پروجیکٹ MIT لائسنس یافتہ ہے۔ یہ ایک پلگ ان ہے۔ اس میں کوئی بھی چیز نیٹ ورک کال نہیں کرتی۔
VPS پر آپ کو کن چیزوں کی ضرورت ہے
Recall کے capture hooks وہ Python اسکرپٹس ہیں جو پلگ ان کے ساتھ آتی ہیں۔ اس میں کوئی third-party dependencies نہیں ہیں، لہذا واحد حقیقی ضرورت ایک interpreter ہے۔
python3 -VUbuntu 24.04، Python 3.12.3 کا جواب دیتا ہے۔ Recall، Python 3.9 اور اس سے نئے ورژنز کو سپورٹ کرتا ہے۔ Minimal container images میں بعض اوقات کوئی interpreter موجود نہیں ہوتا، اور ایسی صورت میں شیل python3: command not found کا جواب دیتا ہے۔ مزید آگے بڑھنے سے پہلے ایک انسٹال کریں۔
sudo apt update && sudo apt install -y python3NumPy، summarizer کے ایک مرحلے کے لیے ایک اختیاری ایکسلریٹر ہے۔ آپ کو اس کی ضرورت نہیں ہے۔
python3 -c "import numpy"ModuleNotFoundError: No module named 'numpy' یہاں ایک قابل قبول جواب ہے۔ Summarizer کے پاس ایک pure-Python راستہ موجود ہے، اور پروجیکٹ کی test suite اس بات کی تصدیق کرتی ہے کہ دونوں راستے ایک جیسے جملوں کا انتخاب کرتے ہیں۔
سرور پر session memory لیپ ٹاپ کی نسبت زیادہ اہمیت رکھتی ہے، کیونکہ سرور کا کام دنوں پر پھیلے ہوئے مختصر دورانیوں میں آتا ہے۔ اگر آپ کے پاس پہلے سے Claude Code چل رہا ہے tmux میں ایک VPS پر، تو Recall وہ جزو ہے جو کل کے سیشن کو آج تک منتقل کرتا ہے۔
پلگ ان مارکیٹ پلیس سے Recall انسٹال کریں
Claude Code سیشن کے اندر درج ذیل دو کمانڈز ٹائپ کریں:
/plugin marketplace add raiyanyahya/recall
/plugin install recall@recallدوسری کمانڈ plugin@marketplace پڑھتی ہے۔ یہاں دونوں نام recall ہیں، جو بظاہر کاپی پیسٹ کی غلطی لگتی ہے لیکن ایسا نہیں ہے۔
پلگ ان کی اپنی کمانڈز میں سے ایک چلا کر انسٹالیشن کی تصدیق کریں:
/recall:show/recall:show موجودہ خلاصہ پرنٹ کرتا ہے۔ بالکل نئے پروجیکٹ پر ابھی پرنٹ کرنے کے لیے کچھ نہیں ہے، لہذا آپ دراصل یہ چیک کر رہے ہیں کہ آیا یہ کمانڈ موجود بھی ہے یا نہیں۔ اگر Claude Code /recall:show کو نہیں پہچانتا، تو اس کا مطلب ہے کہ پلگ ان لوڈ نہیں ہوا ہے اور کوئی ہک (hook) کام نہیں کرے گا۔
اگر اس کے بجائے چیک آؤٹ (checkout) سے چلانا ہو، تو ریپوزٹری کو کلون کریں اور پہلے اس کی توثیق کریں:
git clone https://github.com/raiyanyahya/recall ~/recall
cd ~/recall && claude plugin validate .claude plugin validate .، .claude-plugin/ میں موجود مینی فیسٹ (manifest) کو پڑھتا ہے اور رپورٹ کرتا ہے کہ آیا پلگ ان درست طریقے سے تشکیل دیا گیا ہے۔ اس کے بعد اپنے پروجیکٹ ڈائریکٹری سے claude --plugin-dir ~/recall کے ساتھ Claude Code شروع کریں۔
ہکس کیا لکھتے ہیں اور کب
Recall تین Claude Code ہکس رجسٹر کرتا ہے۔ ہر ایک پلگ ان ڈائریکٹری سے ایک Python اسکرپٹ چلاتا ہے۔
SessionStartاسٹارٹ اپ، ریزیوم (resume) اور کلیئر (clear) پر متحرک ہوتا ہے۔ یہcontext.mdکو سامنے لاتا ہے تاکہ سیشن آپ کے خلاصے کے ساتھ کھلے۔Stopہر بار متحرک ہوتا ہے جب Claude جواب مکمل کرتا ہے۔ یہ اس ٹرن (turn) کو لاگ میں شامل کر دیتا ہے۔SessionEndسیشن بند ہونے پر متحرک ہوتا ہے، اور خلاصے کو دوبارہ تخلیق کر سکتا ہے۔
اس سے دو فائلیں بنتی ہیں، دونوں .recall/ کے اندر۔
history.mdصرف شامل کی جانے والی (append-only) ریکارڈ ہے: پرامپٹس، جوابات، چھوئی گئی فائلیں، اور چلائی گئی کمانڈز۔context.mdتیار کردہ خلاصہ (digest) ہے: مقصد، ایک خلاصہ، اگلے اقدامات، چھوئی گئی فائلیں، چلائی گئی کمانڈز، اور git کا سیاق و سباق۔
ایک حقیقی سیشن کے بعد، ڈائریکٹری کو دیکھیں۔
ls -la .recall/آپ کو history.md نظر آنا چاہیے جس میں مواد موجود ہو۔ ہو سکتا ہے آپ کو کوئی context.md نظر نہ آئے، اور یہ خرابی کے بجائے ڈیفالٹ رویہ ہے۔ auto_save_context دراصل off ہے جب تک کہ آپ اسے سیٹ نہ کریں، لہذا خلاصہ صرف تب لکھا جاتا ہے جب آپ اس کی درخواست کرتے ہیں:
/recall:saveیہ کمانڈ history.md پر لوکل سمرائزر (summarizer) چلاتی ہے اور context.md کو دوبارہ لکھتی ہے۔ الگورتھم TF-IDF (ٹرم فریکوئنسی، انورس ڈاکومنٹ فریکوئنسی) اسکورنگ ہے جو TextRank جملوں کی درجہ بندی کو فیڈ کرتا ہے۔ یہ تعیناتی (deterministic) اور استخراجی (extractive) ہے، جس کا مطلب ہے کہ یہ ان جملوں کا انتخاب کرتا ہے جو پہلے سے آپ کے لاگ میں موجود ہیں۔ کوئی ماڈل کال نہیں کیا جاتا، لہذا یہ مرحلہ مفت ہے اور مشین کے آف لائن ہونے پر بھی کام کرتا ہے۔
ایک پروجیکٹ کے لیے Recall کو کنفیگر کرنا
کنفیگریشن پروجیکٹ کی روٹ ڈائریکٹری میں موجود recall.config.json فائل میں ہوتی ہے۔ یہ اس کی ڈیفالٹ ترتیبات ہیں:
{
"output_dir": ".recall",
"capture_history": true,
"summary_sentences": 8,
"redact": true,
"include_git": true,
"max_input_chars": 200000
}output_dirیہ طے کرتا ہے کہ دونوں فائلیں کہاں محفوظ ہوں گی۔ اسے پروجیکٹ کے اندر ہی رکھیں۔capture_historyیہhistory.mdلاگ کو آن یا آف کرتا ہے۔auto_save_contextیہoffیاon_endکو قبول کرتا ہے، اور اس کی ڈیفالٹ ویلیوoffہے۔summary_sentencesیہ طے کرتا ہے کہ کتنے جملےcontext.mdمیں محفوظ رہیں گے۔ اسے بڑھانے سے خلاصہ طویل ہو جاتا ہے اور سیشن شروع ہوتے وقت لوڈ میں معمولی اضافہ ہوتا ہے۔redactیہ ڈسک پر کچھ بھی لکھنے سے پہلے عام خفیہ پیٹرنز (secrets) کو ہٹا دیتا ہے۔include_gitیہ موجودہ diff اور حالیہ commits کو خلاصے میں شامل کرتا ہے۔max_input_charsیہ حد مقرر کرتا ہے کہ سمرائز کرنے والا ایک بار میںhistory.mdکا کتنا حصہ پڑھے گا۔
VPS پر موجود پروجیکٹ کے لیے خودکار سیونگ (automatic saving) ایک مفید تبدیلی ہے، کیونکہ سرور پر سیشن اکثر ٹرمینل بند ہونے پر ختم ہو جاتا ہے، نہ کہ تب جب آپ اسے روکنے کا فیصلہ کرتے ہیں۔
{
"auto_save_context": "on_end",
"summary_sentences": 12
}کنفیگریشن کو چھیڑے بغیر کچھ دیر کے لیے کیپچر روکنے کے لیے، ایک پاز مارکر (pause marker) بنائیں۔ دوبارہ کیپچر شروع کرنے کے لیے اسے ڈیلیٹ کر دیں۔
touch .recall/.capture-pausedایسے سیشن سے پہلے یہ عمل کریں جس میں آپ پروڈکشن کریڈینشلز (production credentials) استعمال کر رہے ہوں، کیونکہ ریڈیکشن (redaction) صرف ایک فلٹر ہے، مکمل ضمانت نہیں۔ یہی منطق عام طور پر AI ایجنٹس سے خفیہ معلومات کو دور رکھنے کے پیچھے کارفرما ہے: سب سے محفوظ خفیہ معلومات وہی ہے جسے ایجنٹ کبھی دیکھ نہ سکے۔
Recall tokens کی کتنی بچت کرتا ہے؟
اس کا انحصار اس بات پر ہے کہ متبادل طریقہ کیا تھا۔ سیشن کے آغاز میں خلاصہ (summary) لوڈ کرنا سستا ہے۔ یہ جس چیز کی جگہ لیتا ہے وہ مہنگی ہو سکتی ہے، کیونکہ آپ کے پروجیکٹ کی یادداشت کے بغیر ماڈل فائلیں پڑھ کر اسے دوبارہ دریافت کرتا ہے۔
The data behind this chart
[
{
"label": "Recall context.md",
"char_count": "4,800",
"est_tokens": "1,200"
},
{
"label": "Hand-written CLAUDE.md",
"char_count": "3,200",
"est_tokens": "800"
},
{
"label": "Re-reading the repo",
"char_count": "120,000",
"est_tokens": "30,000"
},
{
"label": "Full transcript replay",
"char_count": "340,000",
"est_tokens": "85,000"
}
]یہ ایک درمیانے درجے کے پروجیکٹ کے لیے عام اعداد و شمار ہیں، نہ کہ آپ کے پروجیکٹ کی پیمائش۔ ایک Recall خلاصہ تقریباً 1,200 tokens پر لوڈ ہوتا ہے، جو کہ resume کے لیے پروجیکٹ کے شائع شدہ دعوے یعنی ایک سے دو ہزار tokens کے مطابق ہے۔ پچھلی مکمل گفتگو کو دوبارہ چلانا (replay) پوری گفتگو کو دوبارہ لوڈ کرتا ہے، جو کہ 85,000 tokens کے لگ بھگ ہے۔ ماڈل کو فائلیں پڑھ کر پروجیکٹ دوبارہ دریافت کرنے دینا ان دونوں کے درمیان ہے، جو کہ 30,000 tokens کے قریب ہے، اور یہ تعداد ریپوزٹری کے ساتھ بڑھتی جاتی ہے۔ CLAUDE.md قطار پیمانے کے لیے موجود ہے: یہ سستا ہے کیونکہ یہ مختصر اور ساکن ہے، اور یہ ماڈل کو آپ کے مستقل اصول بتاتا ہے نہ کہ یہ کہ کل رات کیا ہوا تھا۔
اپنے اعداد و شمار خود ناپیں۔ ایک token تقریباً انگریزی نثر کے چار حروف کے برابر ہے، اور کوڈ کے لیے اس سے کچھ کم۔ اگر آپ خلاصہ اسی VPS پر کسی مقامی ماڈل کو بھی فراہم کرتے ہیں، تو resume پر بھروسہ کرنے سے پہلے اس ونڈو کو چیک کریں جس میں یہ لوڈ ہو رہا ہے، کیونکہ Ollama طویل پرامپٹس کو ایک چھوٹی ڈیفالٹ کانٹیکسٹ لمبائی پر کاٹ دیتا ہے بجائے اس کے کہ آپ کو بتائے کہ اس نے آخر کا حصہ حذف کر دیا ہے۔
wc -c .recall/context.md .recall/history.md
echo $(( $(wc -c < .recall/context.md) / 4 ))سیشن کے اندر، /context دکھاتا ہے کہ اس وقت کانٹیکسٹ ونڈو میں کیا لوڈ ہے، اور /cost سیشن کے کل ٹوٹل کی رپورٹ دیتا ہے۔ ایک سیشن کو بالکل نئے سرے سے شروع کریں، دوسرے کو خلاصے کے ساتھ شروع کریں، اور موازنہ کریں۔ اس بات کی مکمل تصویر کے لیے کہ سیشن کے tokens اصل میں کہاں خرچ ہوتے ہیں، Claude Code tokens کیسے خرچ کرتا ہے میں تفصیل موجود ہے۔
ایک انتباہ اس دعوے کو درست رکھتا ہے۔ خلاصہ ہر سیشن کے آغاز میں لوڈ ہوتا ہے، لہذا ایسا خلاصہ جس پر آپ کبھی عمل نہیں کرتے، بچت کے بجائے ایک چھوٹا سا اضافی بوجھ ہے۔ summary_sentences کو ڈیفالٹ کے قریب رکھیں جب تک کہ آپ کے سیشنز بہت طویل نہ ہوں۔ ایک پرسکون سیشن کھاتے کے دوسری طرف مدد کرتا ہے، کیونکہ ایک ایجنٹ جو سب سے چھوٹی ممکنہ تبدیلی کی طرف مائل ہو خلاصہ نگار (summarizer) کے لیے درجہ بندی کرنے کے لیے ایک مختصر لاگ چھوڑتا ہے۔
سیشن کے بغیر خلاصہ دوبارہ تیار کرنا
اگر آپ نے repository کو clone کیا ہے، تو summarizer کا اپنا کمانڈ لائن انٹری پوائنٹ موجود ہے۔ یہ VPS پر اس وقت مفید ہوتا ہے جب terminal کے ساتھ سیشن ختم ہو جائے اور آپ کو پھر بھی digest درکار ہو۔
python3 ~/recall/scripts/make_context.py --helpمدد کے لیے دی گئی آؤٹ پٹ ان flags کی فہرست دکھاتی ہے جنہیں یہ قبول کرتا ہے: پروجیکٹ روٹ کے لیے --cwd، واضح transcript فائل کے لیے --transcript، آؤٹ پٹ کو روکنے کے لیے --quiet، اور claude اور opencode کے درمیان انتخاب کے لیے --harness۔ اسے کسی پروجیکٹ پر پوائنٹ کریں:
python3 ~/recall/scripts/make_context.py --cwd /srv/projects/apiیہ سیشن transcript اور history.md کو پڑھتا ہے، اور پھر آپ کی فراہم کردہ ڈائریکٹری کے تحت context.md لکھتا ہے۔ اگر آپ نے marketplace کے ذریعے انسٹال کیا ہے، تو پلگ ان اس ڈائریکٹری میں موجود ہوتا ہے جسے Claude Code منظم کرتا ہے، اور /recall:save اسی کام کو انجام دینے کا معاون طریقہ ہے۔
کچھ بھی تحریر کیوں نہیں ہو رہا
مکمل سیشن کے بعد .recall/ ڈائریکٹری موجود نہیں ہے۔ ہکس (hooks) کبھی نہیں چلے۔ پلگ ان لوڈ ہونے کی تصدیق کے لیے /recall:show ٹائپ کریں، پھر python3 -V چلائیں۔ ہک کمانڈ پہلے python3 اور پھر python آزمانے کی کوشش کرتی ہے، لہذا جس باکس میں ان میں سے کوئی بھی نہ ہو، وہاں کچھ نہیں لکھا جاتا اور اس بارے میں کوئی اطلاع بھی نہیں دی جاتی۔
history.md بڑھ رہا ہے لیکن context.md کبھی تبدیل نہیں ہوتا۔ auto_save_context بائی ڈیفالٹ off ہوتا ہے۔ /recall:save چلائیں، یا اس کی (key) کو on_end پر سیٹ کریں اور SessionEnd ہک کو یہ کام کرنے دیں۔
فائلیں غلط پروجیکٹ کے تحت ظاہر ہو رہی ہیں۔ Recall اس ڈائریکٹری کے لحاظ سے لکھتا ہے جہاں سے Claude Code شروع کیا گیا تھا، لہذا اپنی ہوم ڈائریکٹری سے سیشن شروع کرنے پر میموری وہیں محفوظ ہو جاتی ہے۔ پروجیکٹ روٹ سے شروع کریں، اور یہ معلوم کرنے کے لیے کہ فائلیں درحقیقت کہاں موجود ہیں، ls -la .recall/ کا استعمال کریں۔
کیپچر رک گیا اور آپ کو کوئی انتباہ نہیں ملا۔ ls -a .recall/ کے ساتھ پاز مارکر (pause marker) چیک کریں۔ آپ کی گزشتہ ہفتے بنائی گئی .capture-paused فائل اب بھی اپنا کام کر رہی ہے۔
طویل سیشن کے بعد خلاصہ بہت مختصر ہے۔ max_input_chars سمرائز کرنے والے ان پٹ کو 200000 کریکٹرز پر محدود کر دیتا ہے، اس لیے بہت طویل لاگ کٹ جاتا ہے۔ اسے روٹیٹ (rotate) کریں۔
mv .recall/history.md .recall/history-2026-07-30.mdاس کے بعد ایک مختصر سیشن چلائیں اور یہ تصدیق کرنے کے لیے کہ ایک نئی history.md فائل نمودار ہوئی ہے، دوبارہ ls -la .recall/ چیک کریں۔
جہاں Recall رک جاتا ہے
Recall ایک لاگ اور ایک خلاصہ نگار (summarizer) ہے، اور یہ واضح ہونا ضروری ہے کہ یہ کن چیزوں کو شامل نہیں کرتا۔
خلاصہ نگار کا طریقہ کار استخراجی (extractive) ہے۔ TextRank ان جملوں کا انتخاب کرتا ہے جو پہلے سے history.md میں موجود ہوتے ہیں، لہذا یہ کبھی فیصلہ نہیں کرتا کہ کوئی فیصلہ درست تھا یا نہیں۔ منگل کو ریکارڈ کی گئی غلط سمت بدھ کو کیے گئے درست فیصلے کی طرح ہی دکھائی دیتی ہے۔ جب معاملات اہم ہوں تو context.md کو پڑھیں اور اسے ہاتھ سے درست کریں۔ یہ ایک markdown فائل ہے اور آپ کو اسے ایڈٹ کرنے سے کوئی چیز نہیں روکتی۔
اس میں کوئی سرچ (search) کی سہولت نہیں ہے۔ آپ کو ہر پروجیکٹ کے لیے ایک موجودہ خلاصہ اور ایک بڑھتا ہوا لاگ ملتا ہے، نہ کہ تمام پروجیکٹس میں تلاش کے قابل میموری۔ اگر سوال یہ ہو کہ آپ نے تین ہفتے پہلے ڈیٹا بیس کے بارے میں کیا فیصلہ کیا تھا، تو آپ history.md کو grep کر رہے ہوں گے۔ یہ معلومات کو آپس میں شیئر بھی نہیں کرتا: ایک ہی VPS پر بیک وقت کھلے دو سیشنز ایک دوسرے کے لاگز نہیں دیکھ سکتے، لہذا جب ایک سیشن کو یہ جاننے کی ضرورت ہو کہ دوسرا کیا کر رہا ہے، تو سیشنز چلتے ہوئے براہ راست آپس میں ٹیکسٹ کا تبادلہ کر سکتے ہیں۔
یہ سیشن کے دوران مدد نہیں کرتا۔ سیشن کے وسط میں context window کا بھر جانا ایک الگ مسئلہ ہے جس کے حل بھی مختلف ہیں، اور ایک سیشن کے اندر context window کو manage کرنا اس گائیڈ کا تکمیلی حصہ ہے۔
خلاصے کو ڈیزائن کے لحاظ سے غیر معتبر ان پٹ سمجھا جاتا ہے۔ context.md کو fenced اور لیبل لگا کر انجیکٹ کیا جاتا ہے، اور Claude اس پر انحصار کرنے سے پہلے پوچھتا ہے۔ یہ ڈیزائن اس لیے ہے کیونکہ ایک کمٹ شدہ .recall/ ڈائریکٹری ایسی جگہ ہے جہاں کمٹ تک رسائی رکھنے والا کوئی بھی شخص ایسا ٹیکسٹ لکھ سکتا ہے جسے آپ کا ایجنٹ پڑھے گا۔ ایجنٹ جو کچھ پڑھتا ہے اس کے بارے میں کتنا پوچھتا ہے، اس کا انحصار اس پرمیشن موڈ پر ہے جس میں سیشن شروع ہوتا ہے، اور 14 اگست 2026 سے auto mode، Claude Code کا ڈیفالٹ بن جائے گا۔ ایک بار فیصلہ کر لیں کہ آیا .recall/ ذاتی ہے یا مشترکہ: ذاتی میموری کے لیے اسے .gitignore میں شامل کریں، یا اسے کمٹ کریں اور کسی بھی دوسری کنٹریبیوشن کی طرح اس کا جائزہ لیں۔ اگر ایجنٹ بغیر نگرانی کے چلتا ہے، تو VPS پر Claude Code کو محفوظ طریقے سے چلانا وسیع تر حدود کا احاطہ کرتا ہے۔
Redaction بہترین کوشش ہے۔ یہ عام پیٹرنز جیسے کہ API keys، tokens، PEM blocks اور .env اسائنمنٹس کو ہدف بناتا ہے۔ اسے کمٹ کرنے سے پہلے .recall/ کو پڑھیں۔
ورژن نمبر اس کی پختگی کے بارے میں ایماندار ہے۔ جولائی 2026 میں 0.4.0 ورژن پر، کنفیگریشن کیز اور فائل لے آؤٹ اب بھی ریلیز کے درمیان تبدیل ہو سکتے ہیں، لہذا جس سیٹ اپ پر آپ انحصار کرتے ہیں اسے اپ گریڈ کرنے سے پہلے changelog ضرور پڑھیں۔
FAQ
Does Recall send my code or transcripts anywhere?
No. The capture hooks and the summarizer are Python scripts that run on your own machine, the plugin holds no API key, and it makes no network call. Summarising uses TF-IDF and TextRank rather than a model, so the step costs nothing and works with the machine offline. The trade-off is that the summary is extractive: it selects sentences from your log instead of writing new ones.
Why is my .recall/context.md missing or out of date?
auto_save_context defaults to off, so the summary is regenerated only when you run /recall:save. Set "auto_save_context": "on_end" in recall.config.json to have it rewritten when each session ends. If history.md is missing as well, the hooks are not running at all: confirm the plugin is loaded with /recall:show, then confirm python3 -V answers on that box, because the hooks are Python scripts.
How much does Recall save per session?
Loading a summary costs around 1,200 tokens against a typical 30,000 tokens for a model that has to read your repository again to work out where it is. Those are typical figures. Measure your own with wc -c .recall/context.md and the /context command inside a session, comparing a cold start against one that resumes from a summary.
Do I still need a CLAUDE.md file?
Yes, and the two do different jobs. CLAUDE.md is what you write on purpose: the standing rules and the build commands. context.md is generated from what actually happened last session, so it holds the half-finished migration you would never think to write down. Keep both.
Can one VPS hold memory for several projects?
Yes. Recall keeps memory in .recall/ inside each project directory, so two projects on the same server keep separate logs and separate summaries. Start Claude Code from the project root every time, because the files follow the working directory and not the user account.