Compartment agent memory: பாதுகாப்பு மற்றும் செயல்முறை
Compartment மூலம் உங்கள் கணினியில் agent memory-ஐ எவ்வாறு பாதுகாப்பாக குறியாக்கம் செய்வது என்பதை அறிக. இதன் threat model வரம்புகள் மற்றும் மறக்கப்பட்ட key-ஐ மீட்டெடுக்கும் சவால்களை
Compartment எவ்விதம் மாறுபடுகிறது
Compartment என்பது ஒரு agent memory store ஆகும். இது ஒவ்வொரு பதிவையும் உருவாக்கிய கணினியிலேயே குறியாக்க (encrypted) நிலையில் வைத்திருக்கும்; மேலும் இது எந்தவொரு network service-உடனும் தொடர்புகொள்ளாது. agent memory துறையில் உள்ள மற்றவற்றிலிருந்து இதனை இரண்டு அம்சங்கள் பிரிக்கின்றன. இதன் vault என்பது உங்கள் passphrase-ஆல் மட்டுமே திறக்கக்கூடிய ஒரு sealed file ஆகும். embedding படிநிலை உள்ளூர் கணினியிலேயே (locally) நடைபெறுவதால், ஒரு memory-ன் உரை (text) vector-ஆக மாற்றப்படுவதற்கு எங்கும் அனுப்பப்படுவதில்லை. பதிப்பு 4.6.0, 10 August 2026 அன்று வெளியிடப்பட்டது. இதன் உரிமம் Apache-2.0 ஆகும், மேலும் இது PyPI மூலம் நிறுவப்படுகிறது.
இது ஒரு threat model கூற்று என்பதால், இந்த வழிகாட்டி இதனை அவ்வாறே கையாள்கிறது. தரவு சேமிப்பில் உள்ள குறியாக்கம் (encryption at rest) மற்றும் offline வடிவமைப்பு ஆகியவை ஒரு குறிப்பிட்ட வகை அச்சுறுத்தல்களிலிருந்து பாதுகாப்பு அளிக்கின்றன. அதே சமயம் இவை பிற அம்சங்களை பாதுகாப்பற்றதாக விட்டுவிடுகின்றன; அந்த இடைவெளியில்தான் day two சிக்கல்கள் உருவாகின்றன.
இந்த வழிகாட்டி, 11 August 2026 அன்று வாசிக்கப்பட்ட திட்டத்தின் சொந்த ஆவணங்கள் மற்றும் release notes-ஐப் பின்பற்றுகிறது. Compartment ஒரு desktop application-ஐ வழங்குகிறது; இது macOS-ல் menu bar item-ஆகவும், Windows-ல் notification area icon-ஆகவும், அதன் command line tool-உடன் இணைந்து செயல்படுகிறது. ஒரு automated container மூலம் passphrase prompt-ஐ இயக்க முடியாது. கீழே கொடுக்கப்பட்டுள்ளவற்றை அளவிடப்பட்ட செயல்பாடாகக் கருதாமல், ஆவணப்படுத்தப்பட்ட செயல்பாடாகக் கருதுங்கள். முக்கியமான தரவுகளை இதில் சேமிக்கும் முன், ஒரு உபரி கணினியில் (spare machine) இதனை இயக்கிச் சோதிக்கவும்.
Encryption at rest எதைக் பாதுகாக்கிறது
இந்த vault, XChaCha20-Poly1305 எனும் AEAD (authenticated encryption with associated data) cipher மூலம் சீல் செய்யப்பட்டுள்ளது. மாஸ்டர் கீயைச் சேமிக்கும் keyslots, Argon2id மூலம் பாதுகாக்கப்படுகின்றன; இது மெதுவாகவும் அதிக நினைவகத்தைப் பயன்படுத்தும் வகையிலும் வடிவமைக்கப்பட்ட ஒரு password hashing function ஆகும். இதிலிருந்து இரண்டு விஷயங்கள் தெளிவாகின்றன. திருடப்பட்ட வட்டில் உள்ள கோப்பின் நகல், பழைய பேக்கப் அல்லது சப்போர்ட் டிக்கெட்டில் இணைக்கப்பட்ட கோப்பு ஆகியவை வெறும் பைட்டுகளாக மட்டுமே இருக்கும். மேலும், கோப்பைத் திறக்கும்போது ஒரு பிட் (bit) மாறினாலும் authentication தோல்வியடையும், எனவே தரவு சிதைவு ஏற்பட்டால் அது தவறான விடையைத் தராமல், ஒரு பிழையாக வெளிப்படையாகத் தெரியும்.
Embedding vectors-களும் என்க்ரிப்ட் செய்யப்படுகின்றன, இது கேட்பதை விட மிக முக்கியமான விஷயம். Embedding என்பது ஒரு hash அல்ல. Embedding inversion குறித்த ஆராய்ச்சிகள், வெக்டாரை மட்டும் வைத்துக்கொண்டு அசல் உரையின் பகுதிகளை மீட்டெடுக்க முடியும் என்று காட்டுகின்றன. எனவே, என்க்ரிப்ட் செய்யப்பட்ட தரவுத்தளத்திற்கு அருகில் ஒரு plaintext vector index இருப்பது, தரவுத்தளத்தைத் திறந்து வைப்பதற்குச் சமம். Compartment வட்டில் எந்தவொரு plaintext index-ஐயும் எழுதுவதில்லை.
நீக்குதல் (Deletion) என்பது உண்மையான நீக்குதலாகும். ஒவ்வொரு பதிவும் தனக்கென ஒரு தனி கீயைக் கொண்டுள்ளது. compartment forget --shred அந்த கீயை அழித்துவிடுகிறது, எனவே எஞ்சியிருக்கும் ciphertext-ஐ உங்களால் உட்பட யாராலும் டிகிரிப்ட் செய்ய முடியாது. தரவுத்தளக் கோப்பிலிருந்து ஒரு வரிசையை நீக்குவதை இதனுடன் ஒப்பிட்டுப் பாருங்கள்; பொதுவாக அந்த வரிசை, வேறொரு தரவு அதன் மேல் எழுதப்படும் வரை free pages-ல் படிக்கக்கூடிய நிலையிலேயே இருக்கும்.
Offline என்பது இதன் மற்றொரு பாதி. எந்தத் தரவும் upload செய்யப்படுவதில்லை, எனவே உங்கள் நினைவுகளைச் சேமித்து வைக்கும் vendor கணக்கோ அல்லது அவற்றை கசியவிடக்கூடிய API key-யோ கிடையாது.
Compartment எவற்றைப் பாதுகாக்காது
இந்த பாதுகாப்பு கோரிக்கை vault எல்லையுடன் முடிவடைகிறது, அந்த எல்லை நீங்கள் நினைப்பதை விட மிக அருகில் உள்ளது.
Agent plaintext-ஐ வாசிக்கிறது. Recall ஒரு நினைவகத்தை decrypt செய்து, அந்த உரையை agent-க்கு வழங்குகிறது. அந்த agent ஒரு hosted model ஆக இருந்தால், context window-வில் உள்ள மற்ற அனைத்தையும் போலவே, அந்த நினைவகமும் அடுத்த prompt-க்குள் model வழங்குநருக்குச் செல்கிறது. சேமிப்பில் உள்ள தரவை (encryption at rest) குறியாக்கம் செய்வது கோப்பைப் பாதுகாக்கும். ஆனால், அது retrieval-ஐப் பாதுகாக்காது. எனவே, AI agent-களில் ரகசியங்களை வைக்காமல் இருப்பது குறித்த விதிகள், store குறியாக்கம் செய்யப்பட்டுள்ளது என்பதற்காகத் தளர்வடையாது: நினைவகமாகச் சேமிக்கப்பட்ட ஒரு கடவுச்சொல் என்பது, தானாகவே ஒரு prompt-க்குள் ஒட்டப்படும்படி நீங்கள் ஏற்பாடு செய்த கடவுச்சொல் ஆகும்.
இயங்கும் கணினியில் திறக்கப்பட்ட vault என்பது திறந்தே இருக்கும். திட்டத்தின் பாதுகாப்பு குறிப்புகள் இதைத் தெளிவாகக் கூறுகின்றன. vault திறக்கப்பட்டிருக்கும்போது, master key மற்றும் working set ஆகியவை RAM-ல் இருக்கும். ஒரு buffer அழிக்கப்படுவதை Python-ஆல் உறுதி செய்ய முடியாது. மேலும், swap அல்லது hibernation image அந்த நினைவகத்தை வட்டில் (disk) எழுதக்கூடும். உங்கள் user-ஆக இயங்கும் malware, cipher-ஐ உடைக்க வேண்டிய அவசியமில்லை; ஏனெனில் அது ஏற்கனவே திறக்கப்பட்ட vault-ஐயே அணுக முடியும்.
Caller அடையாளம் என்பது அறிவிப்பு சார்ந்தது. Namespaces-களை ஒவ்வொரு caller-க்கும் கட்டுப்படுத்தலாம், ஆனால் caller-ன் பெயர் host process-லிருந்து வருகிறது. எனவே, தனது பெயரைப் பற்றிப் பொய் சொல்லும் ஒரு host, தான் கோரும் அனுமதிகளைப் பெற்றுவிடும். Namespace அனுமதிகள் என்பவை ஒரு நிறுவனக் கட்டமைப்பு மட்டுமே; அவை hostile local program-களுக்கு எதிரான பாதுகாப்பு எல்லை அல்ல.
Shredding நகல்களை அழிக்காது. forget --shred தற்போதைய கோப்பிற்குள் இருக்கும் key-ஐ அழிக்கிறது. shred செய்வதற்கு முன்பு எடுக்கப்பட்ட backup-ல் அந்தப் பதிவு அப்படியே இருக்கும், மேலும் அன்றைய passphrase-ஐக் கொண்டு அதைத் திறக்க முடியும்.
பலவீனமான passphrase பாதுகாப்பை முடிவுக்குக் கொண்டுவரும். Argon2id ஒவ்வொரு யூகத்தையும் கடினமாக்குகிறது. ஆனால், word list-ல் உள்ள ஒரு passphrase-ஐ அது பாதுகாக்காது.
Pinned release மூலம் Compartment-ஐ நிறுவுதல்
Compartment-க்கு Python 3.11 அல்லது அதற்குப் பிந்தைய பதிப்பு தேவை. இந்தத் திட்டம் மிக வேகமாக வளர்ந்து வருகிறது; 10 August 2026 நிலவரப்படி PyPI-ல் முப்பது பதிப்புகள் உள்ளன. எனவே, நீங்கள் நிறுவும் நாளில் கிடைக்கும் பதிப்பைத் தேர்வு செய்யாமல், ஒரு குறிப்பிட்ட பதிப்பைப் (pin) பயன்படுத்துவது சிறந்தது.
python3 --version
pip install "compartment==4.6.0"
compartment --version
compartment initcompartment --version நீங்கள் pin செய்த பதிப்பைக் காட்ட வேண்டும். shell compartment: command not found என்று பதிலளித்தால், நிறுவல் அடைவு (install directory) உங்கள் PATH-ல் இல்லை என்று பொருள். பெரும்பாலான கணினிகளில் அந்த அடைவு ~/.local/bin ஆக இருக்கும். pipx install compartment==4.6.0 மற்றும் uv tool install compartment==4.6.0 ஆகியவை அவற்றின் சொந்த பாதைகளை நிர்வகிப்பதன் மூலம் இந்தச் சிக்கலைத் தவிர்க்கின்றன.
compartment init இரண்டு முறை passphrase-ஐக் கேட்கும், அப்போது எதையும் திரையில் காட்டாது. அந்த passphrase மட்டுமே ஒரே key ஆகும். இந்தத் திட்டம் எந்த கடவுச்சொல்லையோ அல்லது மீட்புச் சொற்றொடரையோ (recovery phrase) உருவாக்குவதில்லை; இது திட்டமிட்டே செய்யப்பட்டுள்ளது. உங்களிடம் இல்லாத எந்தவொரு நற்சான்றிதழையும் (credential) இந்த மென்பொருள் சேமித்து வைப்பதில்லை.
எந்தவொரு இணைப்பையும் செய்வதற்கு முன் முடிவைச் சரிபார்க்கவும்.
compartment statusசரியாகச் செயல்படும் vault, அது unlocked நிலையில் இருப்பதாகத் தெரிவிக்கும். அது locked என்று காட்டினால், compartment unlock-ஐ இயக்கி passphrase-ஐ உள்ளிடவும். கணினியை restart செய்தால் அது மீண்டும் lock ஆகிவிடும், ஏனெனில் அதைத் திறந்து வைக்கும் நற்சான்றிதழ் ஒவ்வொரு boot-க்கும் உரிய ரகசியத்தைச் சார்ந்தது. macOS-ல், compartment unlock --keychain-ஐப் பயன்படுத்துவதன் மூலம் அந்த நற்சான்றிதழை system keychain-ல் சேமித்து, reboot-க்குப் பிறகும் அது நீடிக்கும்படி செய்யலாம்.
தரவு உண்மையில் எங்கு சேமிக்கப்படுகிறது
இயல்புநிலை vault ~/.compartment/memory.vault ஆகும். எந்தவொரு கட்டளையிலும் --vault PATH-ஐப் பயன்படுத்தியோ அல்லது COMPARTMENT_VAULT environment variable-ஐப் பயன்படுத்தியோ வேறொரு இடத்தைச் சுட்டிக்காட்டலாம்.
அந்த ஒரு கோப்புதான் முழுமையான சேமிப்பகம். இது format version மற்றும் Argon2id keyslots-ஐக் கொண்ட header-உடன் திறக்கும்; அதைத் தொடர்ந்து sealed payload இருக்கும்; புதிய நினைவுகள் சேரும்போது journal entries இறுதியில் சேர்க்கப்படும். ஒவ்வொரு journal entry-ம் அதன் நீளம் மற்றும் அந்த நீளத்திற்கான CRC (cyclic redundancy check) மூலம் கட்டமைக்கப்பட்டுள்ளது. எனவே, ஒரு crash காரணமாக எழுதும் பணி பாதியில் நின்றால், அது தரவாகப் படிக்கப்படாமல், முழுமையற்ற entry-ஆக அடையாளம் காணப்படும். Compaction செயல்பாட்டின் போது vault serialise செய்யப்பட்டு, ஒரு தற்காலிகக் கோப்பில் எழுதப்பட்டு, fsync செய்யப்பட்டு, பின்னர் பழைய கோப்பின் இடத்தில் பெயர் மாற்றப்படும். இதனால், ஒரு reader பாதியில் எழுதப்பட்ட vault-ஐ ஒருபோதும் பார்க்க முடியாது.
இதன் பயனுள்ள விளைவு: ஒரு backup script சரியாக ஒரே ஒரு path-ஐ மட்டுமே நகலெடுக்க வேண்டும். இதன் சிரமமான விளைவு: உங்களால் அதை grep செய்ய முடியாது, மேலும் text editor-ல் அதைச் சரிசெய்ய முடியாது. cat மூலம் படிக்கக்கூடிய மற்றும் git-ல் commit செய்யக்கூடிய நினைவுகள் உங்களுக்குத் தேவைப்பட்டால், Memmy-ன் எளிய local memory கோப்புகள் இதற்கு நேர்மாறான அணுகுமுறையைக் கொண்டுள்ளன. திருடப்பட்ட laptop-ஐப் பற்றி அஞ்சுகிறீர்களா அல்லது கருவி பழுதடைவதைப் பற்றி அஞ்சுகிறீர்களா என்பதைப் பொறுத்து, இவை இரண்டுமே சரியான தேர்வுகள் தான்.
compartment uninstall மென்பொருளை நீக்கும், ஆனால் vault-ஐ அப்படியே வைத்திருக்கும். நீங்கள் உறுதியாக இருக்கும்போது மட்டுமே --purge-ஐப் பயன்படுத்தவும்.
ஏஜென்ட்டுடன் இணைத்தல்
ஒரே ஒரு கட்டளை மூலம் ஆதரிக்கப்படும் client-ஐ இணைக்க முடியும்.
compartment integrate --list
compartment integrate claudeClaude Code-க்கு, இது ஒரு MCP (model context protocol) server entry-ஐ எழுதி, ~/.claude/settings.json-ல் ஒரு PostToolUse hook-ஐ உருவாக்குகிறது. முதலில் கோப்பைப் பாதுகாப்பாக நகலெடுத்து (backup), ~/.claude/skills/-ன் கீழ் ஒரு /compartmentalize skill-ஐ நிறுவுகிறது. மேலும், Compartment என்பது அதுவரை பயன்படுத்தி வந்த file-based memory-க்கு மாற்றானது என்பதை ஏஜென்ட்டிற்குத் தெரிவிக்கும் வகையில் ~/.claude/CLAUDE.md-ல் ஒரு managed block-ஐச் சேர்க்கிறது. இரண்டு பகுதிகளையும் உறுதிப்படுத்தவும்:
compartment hook status
compartment recentserver-ஐ நீங்களே கைமுறையாகப் பதிவு செய்ய:
claude mcp add --scope user compartment -- \
compartment --vault ~/.compartment/memory.vault --caller claude-code serveMCP-ஐ ஆதரிக்கும் பிற host-களும் அதே server-ஐப் பயன்படுத்தலாம், ஆனால் அவற்றுக்கெனத் தனி caller name-ஐக் கொண்டிருக்க வேண்டும்.
{ "mcpServers": { "compartment": {
"command": "compartment",
"args": ["--vault", "/path/to/memory.vault",
"--caller", "your-agent-name", "serve"] } } }ஒவ்வொரு host-க்கும் தனித்துவமான --caller மதிப்பைக் கொடுக்கவும். audit log-ல் பதிவாகும் லேபிளும், namespace அனுமதிகள் எதன் அடிப்படையில் வழங்கப்படுகின்றனவோ அந்தத் திறவுகோலும் இதுவே என்பதால், ஒரே பெயரைப் பயன்படுத்துவது இரண்டையுமே பயனற்றதாக்கிவிடும்.
Claude Code ஏற்கனவே அதன் சொந்த memory கோப்புகளில் தகவல்களைப் பதிவு செய்திருந்தால், எதையும் நகர்த்துவதற்கு முன்பாக என்ன மாற்றங்கள் நிகழும் என்பதை compartment import-claude --dry-run காட்டும். Claude Code அதன் memory கோப்புகளில் எதைச் சேமிக்கிறது என்பதை முதலில் படிக்கவும். ஏனெனில், ஒரு வருட காலக் குறிப்புகளைப் புதிய vault-க்கு இறக்குமதி செய்வது, தேவையற்ற தகவல்களால் memory store-ஐ நிரப்பிவிடும்.
Local vault எவ்வளவு வேகமானது
தனிநபர் பயன்பாட்டிற்கான vault-க்கு இந்தத் திட்டத்தின் ஆவணங்களில் வெளியிடப்பட்டுள்ள புள்ளிவிவரங்கள் இவை. இவை அந்தத் திட்டத்தின் ஆவணங்களிலிருந்து பெறப்பட்டவை, இங்கே நடத்தப்பட்ட சோதனையிலிருந்து அல்ல.
The data behind this chart
[
{
"label": "Store one memory, end to end",
"latency_ms": 40
},
{
"label": "Embed one memory, bundled model",
"latency_ms": 25
},
{
"label": "Hybrid search, median",
"latency_ms": 11.6
},
{
"label": "Vector search at 20k records, p95",
"latency_ms": 0.68
}
]ஒரு memory-ஐச் சேமிப்பதற்கான கால அளவு 40 ms எனக் குறிப்பிடப்பட்டுள்ளது. இருபதாயிரம் பதிவுகளில் மேற்கொள்ளப்படும் vector search, 95-வது percentile-க்கு 0.68 ms நேரத்தை எடுத்துக்கொள்கிறது. memory-ஐ local-ஆக வைத்திருப்பதற்கான காரணத்தை இந்தத் திட்டம் கணித ரீதியாக விளக்குகிறது: hosted memory API-க்கு ஒருமுறை network round trip செல்வதற்கு ஆகும் நேரமானது, இங்கே முழுமையான hybrid search-க்கு ஆகும் 11.6 ms median நேரத்தை விட அதிகமாக இருக்கலாம்.
இந்தத் தேடல் வேகத்திற்கான காரணத்தை இரண்டு வடிவமைப்பு விவரங்கள் விளக்குகின்றன. இருபதாயிரம் பதிவுகளுக்குக் குறைவாக இருக்கும்போது, Compartment ஒவ்வொரு vector-உடனும் query-ஐ ஒப்பிடுகிறது. எனவே, இது தோராயமான தேடல் அல்ல, துல்லியமான recall-ஐ வழங்குகிறது. இருபதாயிரம் பதிவுகளுக்கு மேல் செல்லும்போது, இது HNSW (hierarchical navigable small world) முறைக்கு மாறுகிறது. இது வேகத்திற்காகச் சிறிதளவு recall-ஐ விட்டுக்கொடுக்கும் ஒரு தோராயமான index முறை ஆகும். மேலும், இந்த vault embedding model-ன் SHA-256 hash-ஐப் பதிவு செய்து கொள்கிறது. வேறு ஒரு model-ஐப் பயன்படுத்தினால் இது திறக்க மறுத்துவிடும். ஏனெனில், இரண்டு வெவ்வேறு model-களிலிருந்து வரும் vector-களை ஒப்பிடும்போது பிழைகள் ஏதுமின்றி முடிவுகள் வரலாம், ஆனால் அந்த மதிப்புகளுக்கு எந்த அர்த்தமும் இருக்காது.
Backups, மற்றும் அடுத்த ஆண்டு நீங்கள் திறக்கக்கூடிய நகல்
பூட்டப்பட்ட vault என்பது ஒரே ஒரு portable கோப்பு, எனவே அதை நகர்த்துவது என்பது ஒரு நகலை உருவாக்குவதாகும்.
compartment lock
scp ~/.compartment/memory.vault other-machine:
compartment --vault memory.vault unlockமுதலில் அதை lock செய்யவும். agent எழுதிக்கொண்டிருக்கும்போது நகலெடுப்பது, journal entry-ன் பாதியிலேயே சிக்கிக்கொள்ளலாம். CRC framing அந்த இறுதிப் பகுதியைத் தவிர்க்க அனுமதித்தாலும், அதற்குள் இருக்கும் memory அழிந்துவிடும். compartment lock --sign கோப்பை ஒரு Ed25519 manifest மூலம் முத்திரையிடுகிறது. எனவே, பெறும் இயந்திரம் passphrase-ஐ வைத்திருக்காமலேயே, நகல் சிதையாமல் வந்து சேர்ந்ததை சரிபார்க்க முடியும்.
கோப்பு ஏற்கனவே முத்திரையிடப்பட்டிருப்பதால், சாதாரண cloud storage-ல் அதைச் சேமிப்பது பாதுகாப்பானது. இதுவே encryption at rest உங்களுக்கு நேரடியாகப் பலன் தரும் இடமாகும்: backup சேமிக்கப்படும் இடம் ஒரு memory-ஐயும் பார்க்காது.
இரண்டு எச்சரிக்கைகள். Shredding செய்வது backup-களைச் சென்றடையாது. எனவே, இன்று நீங்கள் crypto shred செய்த ஒரு பதிவு, கடந்த வாரத்தின் நகலில், அந்த வாரத்தின் passphrase வைத்திருப்பவர் எவருக்கும் படிக்கக்கூடியதாகவே இருக்கும். மேலும், compartment export --plaintext முழு vault-ஐயும் encryption இல்லாமல் எழுதுகிறது. இது வேறொன்றிற்கு migrate செய்வதற்குச் சரியான கருவி, ஆனால் ~/Downloads-ல் விட்டுச் செல்லக்கூடாத தவறான கோப்பு இது.
குறைவான நகல்களை வைத்துக்கொண்டு, அவற்றுக்குத் தேதியிடவும். யாரும் அதைச் சுத்தம் செய்யாதபோது, ஒரு memory store பொறுப்பாக மாறிவிடுகிறது. இதுவே பழைய agent memories ஏன் அமைதியாக retrieval-ஐப் பாதிக்கின்றன என்பதற்கான வாதமாகும்.
Key handling, rotation, மற்றும் second factor
compartment rekey
compartment 2fa enable
compartment 2fa statusrekey தற்போதைய கோப்பின் keyslot-ல் உள்ள master key-ஐ மீண்டும் rewrap செய்வதன் மூலம் passphrase-ஐ மாற்றுகிறது. பழைய பிரதிகள் பழைய passphrase-ஐயே கொண்டிருக்கும், ஏனெனில் அந்த bytes மாற்றத்திற்கு முன்பே sealed செய்யப்பட்டவை மற்றும் அவற்றை மாற்ற எந்த வழியும் இல்லை. எனவே பிரதிகளையும் rotate செய்யவும், அல்லது பழைய passphrase இன்னும் சில கோப்புகளைத் திறக்கும் என்பதை ஏற்றுக்கொள்ளவும்.
2fa enable ஒரு keyfile-ஐ second factor-ஆகச் சேர்க்கிறது. இது key derivation-ன் போது passphrase-உடன் இணைக்கப்படுகிறது, எனவே vault-ஐத் திறக்க இவை இரண்டும் தேவைப்படும். இது நீங்கள் இழக்கக்கூடிய பொருட்களின் எண்ணிக்கையை இரட்டிப்பாக்குகிறது. Vault இருக்கும் கணினியில் keyfile-ஐ வைக்க வேண்டாம்.
Scripts மற்றும் CI (continuous integration)-க்கு, passphrase-ஐ COMPARTMENT_PASSPHRASE environment variable மூலம் அனுப்பலாம், மேலும் unlock --passphrase-stdin அதை ஒரு pipe மூலம் வாசிக்கும். Pipe-ஐப் பயன்படுத்த முன்னுரிமை அளிக்கவும். Environment variable-ஐ அதே பயனர் வைத்திருக்கும் பிற process-கள் வாசிக்க முடியும், மேலும் அது பெரும்பாலும் job logs-ல் பதிவாகிவிடும்.
Audit history ஒரு hash chain முறையில் உள்ளது, compartment audit verify அதைச் சரிபார்த்து உடைந்த முதல் இணைப்பைத் தெரிவிக்கும். ஏதேனும் restore செய்த பிறகு இதை இயக்கவும், ஏனெனில் அப்போதுதான் அமைதியாக truncated செய்யப்பட்ட கோப்புகள் கண்டறியப்படும்.
passphrase-ஐ மறந்துவிட்டால் என்ன நடக்கும்
எதுவும் நடக்காது, இதுவே இதன் வடிவமைப்பு. இதில் reset வசதியோ, recovery phrase-ஓ அல்லது தொடர்புகொள்ள முகவரியோ கிடையாது. ஏனெனில், உங்கள் நினைவிலும் விருப்பத்தேர்வாக நீங்கள் வைத்திருக்கும் keyfile-லும் தவிர, வேறு எங்கும் அந்த key-ன் நகல் இருக்காது. அந்த vault வெறும் சீரற்ற தரவுகளைக் கொண்ட ஒரு கோப்பாகவே (file) இருக்கும்.
எனவே, மீட்புத் திட்டம் என்பது vault-க்கானது அல்ல. அது passphrase-க்கானது. compartment init-ஐ இயக்கும் நாளிலேயே அதை ஒரு password manager-ல் குறித்துக்கொள்ளுங்கள். பின் அதைச் சோதியுங்கள்: vault-ஐ lock செய்யுங்கள், நீங்கள் குறித்து வைத்ததை மட்டும் பயன்படுத்தி அதை unlock செய்யுங்கள். அது சரியாக வேலை செய்த பிறகு, ஒரு agent-ஐப் பயன்படுத்தி அதில் தரவுகளை நிரப்பத் தொடங்குங்கள்.
Compartment அல்லது ஒரு memory server
Compartment என்பது வடிவமைப்பிலேயே ஒரு தனி இயந்திரத்திற்காக உருவாக்கப்பட்டது. கோப்புகளைப் பகிர்வது என்பது பூட்டப்பட்ட கோப்பை நகலெடுப்பது அல்லது ஏற்றுமதி மற்றும் இறக்குமதி செய்வது மட்டுமே. இதில் ஒரே நேரத்தில் எழுதும் வசதி (concurrent writer) இல்லை. எனவே, ஒரு laptop மற்றும் ஒரு workstation ஒரே கோப்பை அணுகினால், அவை ஒன்றையொன்று மேலெழுதி (overwrite) தரவுகளை அழித்துவிடும்.
பல இயந்திரங்களுக்கு ஒரே நேரத்தில் ஒரே memory தேவைப்படும்போது, அது ஒரு server சார்ந்த சிக்கலாகிறது. VPS-ல் இயங்கும் ஒரு self-hosted Mem0 memory server இதற்குத் தீர்வாகிறது: ஒரே endpoint, பல clients, மற்றும் laptop-ஐ விட நீண்ட காலம் நீடிக்கும் memory. இதன் செலவை வெளிப்படையாகக் குறிப்பிடுவது அவசியம். அந்த server ஒரு process-ஐ இயக்குகிறது; அது தான் சேமிக்கும் தரவுகளை வாசிக்க முடியும். எனவே, உங்கள் threat model-ல் இப்போது அந்த VPS மற்றும் அதன் API-ஐ அணுகக்கூடிய அனைவரும் உள்ளடங்குவர்.
உங்களுக்கு எந்த இழப்பைப் பற்றிய அச்சம் அதிகம் என்பதைப் பொறுத்துத் தேர்வு செய்யுங்கள். அது திருடப்பட்ட laptop அல்லது உங்கள் குறிப்புகளை வாசிக்கும் ஒரு vendor என்றால், encrypted local vault சிறந்த தீர்வாகும். மாறாக, நீங்கள் இயந்திரங்களை மாற்றும்போது அனைத்தையும் மறந்துவிடும் ஒரு முகவர் (agent) தான் சிக்கல் என்றால், server முறையே சிறந்தது.
FAQ
Compartment-ன் encryption உண்மையில் எதைப் பாதுகாக்கிறது?
இது கோப்பைப் பாதுகாக்கிறது. Vault ஆனது XChaCha20-Poly1305 மூலம் சீல் வைக்கப்பட்டுள்ளது, அதன் keyslots-கள் Argon2id மூலம் wrapped செய்யப்பட்டுள்ளன, மேலும் embedding vectors-களும் encrypt செய்யப்பட்டுள்ளன. எனவே, திருடப்பட்ட வட்டு அல்லது பழைய backup-ல் இருந்து எதையும் படிக்க முடியாது. இயங்கும் கணினியில் திறக்கப்பட்டிருக்கும் vault-ஐ இது பாதுகாக்காது, ஏனெனில் vault திறந்திருக்கும்போது master key RAM-ல் இருக்கும். மேலும், recall செய்த பிறகு plaintext-ஆகத் திரும்பப் பெறப்படும் தகவலை ஓர் agent எவ்வாறு கையாள்கிறது என்பதை இது கட்டுப்படுத்தாது.
Compartment offline-ல் இருக்கும்போது, எனது நினைவுகள் எனது model provider-க்குத் தெரியாமல் இருக்குமா?
அவை recall செய்யப்படும் வரை மட்டுமே பாதுகாப்பாக இருக்கும். சேமிப்பதும் தேடுவதும் network இல்லாமலேயே நடைபெறுகிறது, மேலும் embedding model உள்ளூர் கணினியிலேயே இயங்குகிறது, எனவே எழுதும் நேரத்தில் எந்தத் தகவலும் கணினியை விட்டு வெளியேறாது. வாசிக்கும் நேரத்தில் agent plaintext-ஐப் பெறுகிறது. அந்த agent ஒரு hosted model ஆக இருந்தால், அந்த நினைவகம் prompt-க்குள் நுழைந்து, context window-ன் மற்ற பகுதிகளைப் போலவே provider-க்குச் சென்றுவிடும். ஒரு credential-ஐ நினைவகமாக ஒருபோதும் சேமிக்க வேண்டாம்.
எனது Compartment passphrase-ஐ இழந்துவிட்டால் என்னவாகும்?
Vault-ஐ மீண்டும் பெற முடியாது, இது வேண்டுமென்றே வடிவமைக்கப்பட்டது. Compartment எந்த seed-ஐயோ அல்லது recovery phrase-ஐயோ உருவாக்குவதில்லை, உங்களிடம் இல்லாத எந்த credential-ஐயும் அது வைத்திருப்பதில்லை, எனவே reset செய்ய எதுவும் இல்லை. Passphrase-ஐ ஒரு password manager-ல் சேமிக்கவும், vault இருக்கும் கணினியில் 2FA keyfile-ஐ வைக்க வேண்டாம், மேலும் முக்கியமான தகவல்களைச் சேமிக்கும் முன், ஒரு நகலை உங்களால் unlock செய்ய முடிகிறதா என்பதை உறுதிப்படுத்திக் கொள்ளவும்.
இரண்டு கணினிகள் ஒரே Compartment vault-ஐப் பகிர முடியுமா?
ஒரே நேரத்தில் முடியாது. பூட்டப்பட்ட vault என்பது ஒரு தனிப்பட்ட portable கோப்பு. ஆவணப்படுத்தப்பட்ட முறை என்னவென்றால், அதை lock செய்து, நகலெடுத்து, பின் மற்றொரு கணினியில் --vault மூலம் unlock செய்வதுதான். இதில் ஒரே நேரத்தில் அணுகுவதற்கு (concurrent access) வசதி இல்லை, எனவே இரண்டு கணினிகள் ஒரே கோப்பில் எழுதினால் நினைவுகள் அழிந்துவிடும். உங்களுக்குத் தேவைப்பட்டால் ஒரு memory server-ஐ இயக்கவும்.