המוצר
מה נשמר, ומה יוצא מהמחשב שלכם
התקנה בסיסית מאזינה רק על המחשב שלך ואין בה טלמטריה. היא ממסכת פרטי הזדהות מזוהים לפני שמירת הטקסט שנלכד, אבל הסינון עלול לפספס מידע רגיש. שרתים מרוחקים וספקי ענן אופציונליים משנים לאן הנתונים מגיעים.
ברירת המחדל היא מקומית.
מתקינים, מריצים, והדבר היחיד שיכול לדבר איתו הוא המחשב שלכם.
loopback בלבד
השרת מאזין על 127.0.0.1:49374. שום תהליך מחוץ למחשב לא יכול להגיע אליו. התקנה חדשה עדיין יוצרת bearer token בקובץ שרק הבעלים יכול לקרוא, וה-hooks וה-CLI קוראים אותו משם, כך ששום דבר לא פתוח גם על loopback.
בלי טלמטריה
לקובץ הבינארי של ai-memory אין אנליטיקה, דיווחי קריסה או מעקב שימוש. לכידה וחיפוש מקומיים בהגדרות ברירת המחדל לא שולחים תוכן פרויקט לספקי מודלים חיצוניים.
תיקייה אחת, שלכם
דפי הוויקי וקובץ ה-SQLite נמצאים תחת תיקיית נתונים אחת. ב-Unix תיקיות חדשות נוצרות עם 0700 וקבצים חדשים עם 0600.
אין הצפנה במנוחה
הנתונים השמורים מסתמכים על הרשאות מערכת הקבצים. הרשאות של התקנות קיימות לא משתנות אוטומטית ב-chmod. להגנה כשהמחשב כבוי, יש להשתמש בהצפנת דיסק.
טקסט שנלכד מסונן לפני השמירה.
תוכן שמגיע מ-hooks הוא טקסט לא מהימן. הוא עובר דרך sanitizer שממסך פרטי הזדהות מזוהים ומגביל את הגודל. הוא עלול לפספס מידע רגיש.
תוכן ה-hook
sanitize()
סודות הוסרו
נשמר
גודל מוגבל
כניסה אחת
את הטיפוס שנשמר אפשר לבנות רק דרך sanitize(). קוד שמדלג על הסרת המידע הפרטי לא מתקמפל.
סודות מוחלפים
התאמות הופכות לסמנים מטופסים, כמו [REDACTED:github_token] או [REDACTED:jwt]. זה מכסה גם סודות בתוך JSON ונתיבי credentials של Windows, ורצפי escape של הטרמינל מוסרים. ההסרה היא best effort.
הגדלים מוגבלים
קטעים מפלט של כלים נעצרים ב-2 KB ופרומפטים ב-16 KiB. תקרת גיבוי של 16 KiB חלה על כל גוף שנשמר, אחרי המיסוך.
קלט של כלים לא נשמר
אירועי PreToolUse אף פעם לא שומרים פקודות, ארגומנטים, נתיבים או גוף של קלט. התצפיות הן audit trail, ואף פעם לא תמלול מלא. האפשרות
[ingest] index_file_paths, שמופעלת ביוזמתכם, מוסיפה שדה אחד: הנתיב היחסי לצ'קאאוט של הקובץ היחיד שקריאת כלי שנשמרה ציינה, לעולם לא התוכן שלו, ונתיב שמוחרג עדיין לא שולח דבר.
להשאיר נתיב או repository בחוץ
- בלוק
[capture]בתוך.ai-memory.tomlמפרט נתיבים שמתעלמים מהם. אירועים תואמים נזרקים אצלכם במחשב, לפני ה-spool, הרשת והלוגים. - מצב allowlist הופך את הכיוון: repository בלי הקובץ לא שולח אירועים בכלל.
- סט כללים לא תקין נופל חזרה למטא-דאטה בלבד. הוא אף פעם לא מחיל חצי מדיניות.
- נתיבי קבצים וארגומנטים מוכרים של shell נבדקים לקסיקלית. קישורים סימבוליים, משתני shell וסקריפטים שנקראים מקבצים עלולים לחמוק מההתאמה; פרומפטים אינם מסוננים לפי נתיב. לסינון הלכידה יש מגבלות והוא אינו DLP מלא.
- פלט של ה-assistant לא נשמר כברירת מחדל. בשביל זה צריך דגל בשרת ודגל בלקוח, שניהם יחד.
- Backfill וייבוא של workstreams מנוהלים מחילים את אותם כללי לכידה על קריאות לכלים ותוצאותיהן. קריאות מוחרגות אינן מיובאות; כשאי אפשר לוודא שהקריאה בטוחה לפי המדיניות, נשמרים רק מטא-נתונים של משפחת הכלי.
# .ai-memory.toml בתוך ה-repository
[capture]
ignore_paths = ["private/**", "~/personal-notes/**"]
# או ללכוד רק repositories שבחרו להצטרף
ai-memory install-hooks --apply --capture-mode allowlist
התאם את ההגנה לפריסה
גישה מרחוק דורשת גם אימות וגם TLS, כולל ברשת מקומית. החל את כל הדרישות המתאימות לפני חיבור לקוחות.
אדם אחד, מחשב אחד
loopback, טוקן בקובץ
ai-memory initיוצר את הטוקן ב-<data_dir>/auth-tokens/default, וה-hooks, ה-CLI וגשר ה-MCP קוראים אותו משם. התקנה מלפני 3.0 ממשיכה לרוץ בלי אימות עד שמריציםai-memory auth enable, שיוצר את הטוקן ורושם מחדש כל לקוח.מכונת homelab או מחשב שני
bearer token ל-LAN
יוצרים טוקן עם
ai-memory generate-auth-tokenומגדירים אתAI_MEMORY_AUTH_TOKEN. ההשוואה שלו נעשית בזמן קבוע, והוא מגן על/mcp,/hook,/handoffועל נתיבי ה-admin וה-API. מגדירים גם אתAI_MEMORY_ALLOWED_HOSTS; הוא חוסם DNS rebinding ולא מחליף את הטוקן.כל דבר שמעבר ל-loopback
TLS דרך reverse proxy
ai-memory לא מסיים TLS, וזו החלטת תכנון. bearer tokens לא מוצפנים בדרך, אז שמים לפניו Caddy, nginx או Cloudflare Tunnel. ה-repository כולל תבניות compose ל-Caddy ול-cloudflared. כשאנשים מתחברים ממחשבים אחרים, מגדירים
AI_MEMORY_AUTH__SECURE_COOKIE=true.יותר מאדם אחד כותב
חשבונות ומפתחות API
סיסמאות נשמרות כ-hash של Argon2id. כל מחשב מקבל מפתח
aim_שמודפס פעם אחת ולא מוצג שוב. אחריai-memory api-key rotate <id>המפתח הישן מחזיר 401 מיד. מרגע שנוצר החשבון הראשון, כל נתיב/admin/*פתוח ל-root בלבד.לצוות כבר יש Keycloak, Okta או Entra ID
אימות OIDC device ל-hooks
hooks נייטיב וה-CLI יכולים לשאת טוקן מ-
ai-memory auth login oidc-device. השרת לא מאמת טוקנים של OIDC בעצמו, ולכן צריך לפניו gateway שמבין OIDC. מדובר באימות של hooks ושל ה-CLI דרך gateway, ולשרת אין התחברות SSO מובנית.
מה יוצא מהמחשב, ומתי.
ההגדרות האלה יכולות לשלוח תוכן זיכרון לספק מודלים; הן כבויות כברירת מחדל. הוקים לשרת מרוחק, webhooks של קבלה שהוגדרו ויעדי הגיבוי שלך הם מסלולי נתונים נפרדים שיש לבדוק.
| נתיב | מה נשלח | איך מדליקים | ברירת מחדל |
|---|---|---|---|
| embeddings מרוחקים | הטקסט המלא של כל דף שנשמר. מעבר מאוחר יותר ממלא לאחור גם את הקורפוס הקיים. הנתיב הזה לא עובר ניקוי כמו האחרים. | embedding_provider = openai | voyage | google | openai-compat | כבוי |
| לכידת פלט ה-assistant | הטקסט של התור האחרון של ה-assistant, ורק אם הגדרתם גם LLM בענן. גלובלי לכל ההתקנה, ורק ב-Claude Code וב-Codex. | capture_assistant בשרת ו-install-hooks --capture-assistant בלקוח | כבוי |
| LLM rerank | כל שאילתה חיה, ועוד עד 30 כותרות דפים וקטעים מוגבלים בגודל. השאילתה לא עוברת מיסוך, כי מיסוך עלול לשנות את המשמעות שלה. | AI_MEMORY_RERANKER=llm | כבוי |
| איחוד ו-lint עם LLM | פרומפטים שנבנים מתצפיות ומדפים שנשמרו נשלחים לספק שבחרתם. מכוונים אותו למודל מקומי, ושום דבר לא יוצא. | AI_MEMORY_LLM_PROVIDER | כבוי |
המחשב שלך
Hooks
ויקי ואינדקס
הטמעה מקומית
צד שלישי
ויקי ואינדקס
הטמעות בענן
מודל שפה בענן
דירוג מחדש במודל
בהסכמה בלבד, כבוי כברירת מחדל
לכידה וחיפוש מקומיים כברירת מחדל אינם שולחים תוכן פרויקט לספק מודלים. אם בחרת ספק ענן, בדוק את תנאיו ואת הטיפול שלו בנתונים. ראה את הערות הפרויקט על טיפול בנתונים.
מי כתב את זה, ואיך מסירים את זה.
ייחוס וביקורת
- כשחשבונות מופעלים, כל כתיבה נושאת את שם הכותב. הדפים רושמים
author_idובלוקlast_modified_byב-frontmatter. - כל שינוי נרשם בטבלת
audit_log, עם זהות המשתמש בשורות שיש להן ייחוס. - הוויקי הוא repository של git, כך שכל שינוי בדף הוא גם commit שאפשר לעשות לו diff ולשחזר.
- admission webhooks מקבלים את ה-actor ויכולים לדחות פעולה.
- עדיין אין מסך ליומן הביקורת. השורות נמצאות ב-SQLite.
מה purge מסיר
purge מוחק נתונים לוגית מהפרויקט שנבחר. עותקים יכולים להישאר בהיסטוריה ובגיבויים קודמים. בנפרד, כללי שימור יכולים להסיר דפי סשן שלא בשימוש, ותאריכי תפוגה מפורשים יכולים להסיר דפים אחרים. בלי --confirm, ה-purge רק מציג מה היה מוסר.
# הסרת סשן אחד
ai-memory purge-session --workspace default --project my-app --session-id <uuid> --confirm
# הסרת פרויקט שלם
ai-memory purge-project --project experimental --confirm
| אחרי purge | ברירת מחדל | עם --compact |
|---|---|---|
| נגיש דרך ה-API או כלי ה-MCP | לא | לא |
| חוזר בתוצאות חיפוש | לא | לא |
| קובץ markdown חי בוויקי | לא, best effort | לא, best effort |
| בייטים שנשארו בתוך memory.sqlite | כן, ב-free pages | לא |
| טקסט שנשאר בהיסטוריית ה-git של הוויקי | כן | כן |
| קיים בגיבויים שנלקחו קודם | כן | כן |
--compact הוא לא מחיקה פורנזית. כדי להסיר טקסט מההיסטוריה צריך לשכתב בעצמכם את היסטוריית ה-git של הוויקי ולהחליף את הגיבויים. הנוהל המלא נמצא בדף על פעולות מחזור החיים.
איפה זה נעצר.
דיווח על פגיעות
- לא פותחים issue ציבורי. פותחים security advisory פרטי ב-GitHub.
- תשובה מגיעה בתוך 7 ימים. היעד לתיקון הוא 30 יום, עם קרדיט ביומן השינויים, אלא אם תוותרו עליו.
- רק הגרסה האחרונה מקבלת תיקוני אבטחה.
- קובצי הגרסה מגיעים עם קובצי SHA-256, ופעולות ה-CI מקובעות ל-commits שנסקרו.
שאלות ותשובות
האם ai-memory שולח את הקוד או את הפרומפטים שלי לאנשהו?
כברירת מחדל, ai-memory שומר את תוכן הפרויקט שנלכד על המחשב שלך. אם מתחברים לשרת משותף, הוא שולח את התוכן לשם. embeddings בענן או יכולות מודל שפה אופציונליות שולחים נתונים לספקים שהוגדרו. לסוכן הקוד יש הגדרות נתונים וחיבורים לספקים משלו.
האם ה-embedder המקומי צריך רשת?
בהפעלה הראשונה, ה-embedder המקומי מוריד כ-87 MB של קובצי מודל מ-Hugging Face ומאמת את ה-checksums שלהם. ההורדה לא שולחת תוכן פרויקט. כדי להימנע ממנה, מגדירים embedding_provider = "none" או מספקים את קובצי המודל בעצמכם.
האם סודות נשמרים?
כל payload של hook עובר sanitizer לפני השמירה. פרטי גישה שזוהו מוחלפים בסמנים מהצורה [REDACTED:kind], וגודל הגוף מוגבל. ה-sanitizer מסיר פרטי גישה על בסיס best effort, ואין בו שום הבטחה.
אפשר למחוק סשן לתמיד?
purge הוא מחיקה לוגית. התוכן מפסיק להיות נגיש ולהופיע בחיפוש, אבל הטקסט נשאר בהיסטוריית ה-git של הוויקי ובגיבויים קודמים. הדגל --compact מנקה את ה-free pages של SQLite, והוא לא מחיקה פורנזית.
האם ai-memory הוא multi-tenant?
לא. הרשאות ברמת פרויקט יכולות להגביל חשבונות משתמשים במסד הנתונים, אבל זה עדיין שירות single-tenant. ל-root יש גישה לכל פרויקט, ובפריסה עם trusted-proxy הגישה נאכפת ב-proxy. לצוותים שדורשים בידוד עצמאי יש להשתמש בשרתים נפרדים.
קודם מנסים על loopback.
מתחילים בפרויקט מקומי ללא מידע רגיש. בודקים מה נלכד לפני שמחברים שרת משותף או ספק ענן.
