
halo-record v0.2.42
AI एजेंटों के लिए छेड़छाड़-रोधी ऑडिट ट्रेल: हैश-चेन्ड Runtime Records, डिपेंडेंसी-मुक्त, जिसे कोई भी सत्यापित कर सकता है।
halo-record
छेड़छाड़-स्पष्ट AI एजेंट्स के लिए ऑडिट ट्रेल्स — हैश-चेन्ड Runtime Records, जिन्हें एक Runtime Report के रूप में प्रस्तुत किया जाता है जिसे आपके ग्राहक स्वयं जाँच सकते हैं।
आपके एजेंट द्वारा की गई हर क्रिया (टूल कॉल्स, मॉडल कॉल्स, डेटा एक्सेस, अनुमोदन) एक Runtime Record बन जाती है, जो एक append-only, हैश-चेन्ड लॉग में दर्ज होती है; Runtime Report उस चेन को एक स्व-सत्यापनकारी HTML पेज के रूप में प्रस्तुत करता है। चेन का चेकपॉइंट रखने वाला कोई भी पक्ष यह सत्यापित कर सकता है कि उसके पीछे के रिकॉर्ड्स कभी बदले नहीं गए, बिना उस पर भरोसा किए जिसने उन्हें बनाया — वह चेकपॉइंट ही भार वहन करने वाला हिस्सा है: अकेली चेन रिकॉर्डर चलाने वाले पक्ष को छोड़कर सभी के विरुद्ध छेड़छाड़-स्पष्ट होती है (LIMITS.md §1)। जब किसी ग्राहक की सुरक्षा टीम पूछे "आपके एजेंट ने हमारे डेटा के साथ क्या किया?", तो आप उन्हें एक पैराग्राफ के बजाय एक लिंक थमा देते हैं। सुरक्षा समीक्षाएँ पहले से ही SOC 2 चेकलिस्ट के साथ-साथ AI से जुड़े प्रश्न पूछती हैं — और अब ये प्रश्न तेजी से ISO 42001, EU AI Act के रिकॉर्ड-कीपिंग अनुच्छेदों, और ग्राहकों की अपनी प्रश्नावलियों से आ रहे हैं। आज एक लिखित आश्वासन अभी भी पास हो जाता है। इस परियोजना के पीछे का दाँव यह है कि यह ज़्यादा समय तक नहीं चलेगा।
Help Net Security में प्रमुखता से शामिल (अगस्त 2026)।
रिकॉर्ड प्रारूप खुला है और इसे लागू करना निःशुल्क है। यह पैकेज संदर्भ कार्यान्वयन है: रिकॉर्डर, सत्यापनकर्ता, विटनेस क्लाइंट, और रिपोर्ट सर्वर।
halo-record का उपयोग कर रहे हैं, या इसके बारे में सोच रहे हैं? मुझे बताएं कि आप कौन हैं और किसलिए → halo-record का उपयोग कौन कर रहा है?
स्वयं जाँचें
आपसे कहा जा रहा है कि आप अपने एजेंट के अंदर एक रिकॉर्डर लगाएं। आपको इसे विश्वास पर नहीं लेना चाहिए:
- शून्य रनटाइम निर्भरताएँ। केवल स्टैंडर्ड लाइब्रेरी।
pip install halo-recordठीक एक पैकेज इंस्टॉल करता है। - कोई नेटवर्क कॉल नहीं, सिवाय तीन ऑप्ट-इन वालों के — किसी विटनेस पर एंकरिंग (subject id, एक रिकॉर्ड काउंट, और दो चेन फिंगरप्रिंट भेजता है — head और chain root), किसी विटनेस के चेकपॉइंट्स को वापस पढ़ना (subject id भेजता है), और RFC 3161 टाइमस्टैम्प (किसी चेकपॉइंट का state hash केवल एक Timestamp Authority को भेजता है)। जब तक आप उन्हें आमंत्रित नहीं करते, ये सभी बंद रहते हैं; रिकॉर्ड की सामग्री कभी आपके इंफ्रास्ट्रक्चर से बाहर नहीं जाती।
- कच्चे टूल आर्गुमेंट्स हैश किए जाते हैं, साथ में एक रिडैक्टेड सारांश। आर्गुमेंट्स एक कैनोनिकल हैश के रूप में संग्रहीत होते हैं, साथ में एक सारांश: आर्गुमेंट टेक्स्ट जिसमें ज्ञात सीक्रेट और PII पैटर्न मास्क किए गए हों, 200 अक्षरों तक सीमित। कोई भी पैटर्न से मेल न खाने वाला छोटा इनपुट सारांश में पूरा दिखाई देता है; hash-only मोड (
summaries=False) कोई सारांश नहीं रखता। रिडैक्शन best-effort है (सामान्य सीक्रेट और PII प्रारूपों पर regex के साथ-साथ एक entropy catch-all): इसे defense-in-depth मानें, गारंटी नहीं।summaryसे परे आपके द्वारा दिए गए outcome फ़ील्ड्स जैसे हैं वैसे सील हो जाते हैं (LIMITS §13)। - ऑडिट करने लायक छोटा। ~5,300 पंक्तियाँ Python (कोड पंक्तियाँ, खाली पंक्तियाँ और टिप्पणियाँ गिने बिना)। इसे एक दोपहर में पूरा पढ़ें।
- Apache-2.0।
- कागज़ी कार्रवाई प्रथम श्रेणी की है। LIMITS.md (चेन क्या साबित नहीं कर सकती), PRIVACY.md (रिकॉर्ड्स में क्या होता है और आपकी मशीन से क्या बाहर जाता है), RETENTION.md (एक retention नीति के अंतर्गत संचालन), और REVIEWERS.md — चार-कमांड स्वतंत्र जाँच के साथ-साथ समीक्षा निष्कर्षों के लिए एक उद्धरण प्रारूप।
प्रत्येक परत क्या साबित करती है — इस परियोजना में भार वहन करने वाला अंतर (LIMITS.md §1): आपके पास स्वयं रखी चेन साबित करती है कि रिकॉर्ड्स संपादित नहीं किए गए, उस head के सापेक्ष जो किसी के पास पहले से है; केवल ऑपरेटर के बाहर रखे गए चेकपॉइंट्स साबित करते हैं कि कोई भी हटाया नहीं गया; और कोई भी हैश यह साबित नहीं करता कि हर क्रिया कैप्चर की गई थी।
| दावा | स्वयं-रखी चेन | + बाहरी चेकपॉइंट्स | + विश्वसनीय कैप्चर |
|---|---|---|---|
| किसी स्थापित आर्टिफैक्ट में संपादन का पता लगाना | ✔ | ✔ | ✔ |
| कमिटेड इतिहास के पुनर्लेखन का पता लगाना | — | ✔ | ✔ |
| गुम/देर से आए चेकपॉइंट्स का पता लगाना | — | ✔ (सहमत कैडेंस) | ✔ |
| साबित करना कि हर क्रिया रिकॉर्ड की गई थी | — | — | कैप्चर सीमा पर निर्भर |
इंस्टॉल करने से पहले एक देखें: एक नमूना Runtime Report — काल्पनिक डेटा, असली चेन, और यह आपके ब्राउज़र में आपके देखते-देखते स्वयं को पुनः सत्यापित करता है।
60-सेकंड डेमो
किसी एजेंट की आवश्यकता नहीं। uv के साथ, कुछ भी इंस्टॉल करने की ज़रूरत नहीं:``` uvx --from halo-record halo demo --serve
या क्लासिक तरीका:```
pip install halo-record
halo demo --serve
या तो एक काल्पनिक सपोर्ट-एजेंट विक्रेता को दो ग्राहकों के साथ स्कैफोल्ड करता है, चेन को साक्षी बनाता है (ऑपरेटर के बाहर एक के लिए एक स्थानीय witness फ़ाइल को प्रतिस्थापित करता है — देखें LIMITS.md §1), उनकी gated Runtime Reports को सर्व करता है, और आपके ब्राउज़र में ऑपरेटर कंसोल खोलता है। फिर tamper टेस्ट आज़माएँ: किसी एक .jsonl फ़ाइल से एक पंक्ति हटाएँ और पुनः लोड करें। रिपोर्ट इसे पकड़ लेती है।
अपना खुद का एजेंट रिकॉर्ड करें
सीमा पर एक पंक्ति:```python from halo_record import trace
agent = trace(run_my_agent, profile="my-agent", log="audit.jsonl") # wraps your entrypoint; records the run boundary to ./audit.jsonl — add record_call() or a framework adapter at each tool boundary to capture individual calls
`from halo import ...` सुविधा शिम भी शिप होती है — लेकिन PyPI पर `halo` नाम एक असंबंधित टर्मिनल-स्पिनर पैकेज का है, और यदि वह पैकेज इंस्टॉल है तो इम्पोर्ट में वही जीतता है। `halo_record` स्पष्ट है, इसलिए उदाहरण इसे उपयोग करते हैं।
`log=` के बिना, रिकॉर्ड `~/.halo/my-agent.jsonl` में जाते हैं (प्रति एजेंट एक चेन)। रैपर रन सीमा को सील करता है; साक्ष्य प्रति-कॉल रिकॉर्ड में रहता है। उन्हें एक फ्रेमवर्क एडाप्टर (नीचे मैट्रिक्स) से कैप्चर करें — या स्पष्ट रूप से, जो यह भी दिखाता है कि प्रतिनिधिमंडल कैसे लिंक होता है:```python
from halo_record import Recorder, record_call
rec = Recorder("audit.jsonl")
with record_call(rec, "crm.lookup", {"account": "acct-9"}) as call: # one sealed record per tool call
call.result = crm.lookup("acct-9")
with record_call(rec, "payments.refund", {"amount": 120},
parent_id=rec.last_record_id()) as call: # child links to the action that spawned it
call.result = payments.refund(120)
फिर रिपोर्ट रेंडर करें:``` halo report audit.jsonl -o report.html # one chain -> self-verifying HTML halo serve ./records --port 8721 # all tenants, gated per customer
The quickstart तब समाप्त होता है जब आप ब्राउज़र में अपने स्वयं के agent की Runtime Report देख रहे होते हैं। यदि आपको एक JSONL फ़ाइल मिली और कोई report नहीं, तो कुछ गलत है: एक issue खोलें।
### The verification block
यदि किसी guardrail या policy layer ने action की जाँच की, तो उसका verdict record पर सवार हो सकता है — एक optional block जो रिकॉर्ड करता है कि gate ने क्या निर्णय लिया, हर अन्य field की तरह hash chain में sealed:```python
from halo_record import build
build("tool_call", "security", tool="payments.refund",
verification={"status": "allowed", "verifier": "gate/1.2",
"policy_ref": "sha256:1f3a...",
"checked_at": "2026-08-01T12:00:00Z"})
एक नामकरण नोट: पैकेज एक record फ़ंक्शन (डेकोरेटर) निर्यात करता है, जो पैकेज ऑब्जेक्ट पर halo_record.record मॉड्यूल को छाया देता है। जब आप इसके आंतरिक भाग चाहते हैं तो सीधे मॉड्यूल पथ से आयात करें — from halo_record.record import build — न कि import halo_record.record as record।