अपडेट पर वापस जाएँ
New releaseJul 14, 2026

halo-record v0.2.7

AI एजेंटों के लिए छेड़छाड़-प्रमाणित रनटाइम रिकॉर्ड। हैश-चेन्ड, निर्भरता-मुक्त, किसी के द्वारा सत्यापन योग्य।

साझा करें

halo-record

छेड़छाड़-स्पष्ट AI एजेंट्स के लिए ऑडिट ट्रेल्स — हैश-चेन्ड Runtime Records, जिन्हें एक Runtime Report के रूप में प्रस्तुत किया जाता है जिसे आपके ग्राहक स्वयं जाँच सकते हैं।

आपके instrumentation द्वारा कैप्चर की गई प्रत्येक क्रिया (टूल कॉल्स, मॉडल कॉल्स, डेटा एक्सेस, अनुमोदन) एक Runtime Record बन जाती है, जो एक append-only, हैश-चेन्ड लॉग में दर्ज होती है; Runtime Report उस चेन को एक HTML पेज के रूप में प्रस्तुत करता है जो पाठक के ब्राउज़र में हैश चेन की पुनर्गणना करता है और जो प्रदर्शित करता है उसे उन रिकॉर्ड्स से रेंडर करता है जिन्हें उसने सत्यापित किया है (ऐसी जाँच के लिए जो पेज के स्वयं के कोड पर निर्भर न हो, JSONL पर halo verify चलाएँ)। चेन का चेकपॉइंट रखने वाला कोई भी पक्ष यह सत्यापित कर सकता है कि उस चेकपॉइंट तक के रिकॉर्ड्स उसके लिए गए होने के बाद से बदले नहीं गए हैं, बिना उनके निर्माता पर भरोसा किए — वह चेकपॉइंट ही भार वहन करने वाला हिस्सा है: चेन अकेले ही रिकॉर्डर चलाने वाले पक्ष को छोड़कर सभी के विरुद्ध छेड़छाड़-स्पष्ट है (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 को भेजता है), और halo serve --verify-email (एक वन-टाइम कोड और रिपोर्ट का subject name, $HALO_SMTP_HOST में आपके द्वारा कॉन्फ़िगर किए गए सर्वर के माध्यम से SMTP द्वारा, उस पते पर भेजता है जो रिपोर्ट दर्शक दर्ज करता है)। जब तक आप उन्हें आमंत्रित नहीं करते, ये सभी बंद रहते हैं; कोई अन्य रिकॉर्ड सामग्री आपके इंफ्रास्ट्रक्चर से बाहर नहीं जाती।
  • कच्चे टूल आर्गुमेंट्स हैश किए जाते हैं, साथ में एक रिडैक्टेड सारांश होता है। आर्गुमेंट्स एक कैनोनिकल हैश और एक सारांश के रूप में संग्रहीत होते हैं: आर्गुमेंट टेक्स्ट जिसमें ज्ञात सीक्रेट और PII पैटर्न मास्क किए गए हों, 200 अक्षरों तक सीमित। कोई भी पैटर्न से मेल न खाने वाला छोटा इनपुट सारांश में पूर्ण रूप से दिखाई देता है; hash-only मोड (summaries=False) कोई सारांश नहीं रखता। रिडैक्शन सर्वोत्तम-प्रयास है (सामान्य सीक्रेट और PII प्रारूपों पर regex के साथ-साथ एक एन्ट्रॉपी कैच-ऑल): इसे defense-in-depth मानें, गारंटी नहीं। summary से परे आपके द्वारा दिए गए outcome फ़ील्ड्स को उन्हीं पैटर्नों से स्कैन और मास्क किया जाता है, लेकिन 200 अक्षरों तक नहीं काटा जाता (LIMITS §13)।
  • ऑडिट करने लायक छोटा। ~8,700 पंक्तियाँ Python, जिसमें रिपोर्ट पेज की एम्बेडेड JavaScript और CSS भी शामिल है (कोड पंक्तियाँ, रिक्त पंक्तियों, टिप्पणियों, और docstrings को छोड़कर)। इसे एक दिन में पूरा पढ़ें।
  • 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

या तो दो ग्राहकों वाले एक काल्पनिक सपोर्ट-एजेंट विक्रेता को स्कैफ़ोल्ड करता है, श्रृंखलाओं को साक्षी बनाता है (ऑपरेटर के बाहर वाले के लिए एक स्थानीय साक्षी फ़ाइल को प्रतिस्थापित करता है — देखें LIMITS.md §1), उनकी गेटेड Runtime Reports प्रस्तुत करता है, और आपके ब्राउज़र में ऑपरेटर कंसोल खोलता है। फिर टैम्पर परीक्षण आज़माएँ: .jsonl फ़ाइलों में से एक से एक पंक्ति हटाएँ और पुनः लोड करें। रिपोर्ट इसे पकड़ लेती है।

अपने स्वयं के एजेंट को रिकॉर्ड करें

सीमा पर एक पंक्ति:

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 नाम एक असंबंधित terminal-spinner पैकेज का है, और यदि वह पैकेज इंस्टॉल है तो इम्पोर्ट में वही जीतता है। halo_record स्पष्ट है, इसलिए उदाहरण इसे उपयोग करते हैं।

log= के बिना, रिकॉर्ड ~/.halo/my-agent.jsonl में जाते हैं (प्रति एजेंट एक चेन)। रैपर रन सीमा को सील करता है; साक्ष्य प्रति-कॉल रिकॉर्ड में रहता है। उन्हें एक फ्रेमवर्क एडाप्टर (नीचे मैट्रिक्स) से कैप्चर करें — या स्पष्ट रूप से, जो यह भी दिखाता है कि प्रतिनिधिमंडल कैसे लिंक होता है:

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 -> HTML that re-verifies in the browser
halo serve ./records --port 8721          # all tenants, gated per customer

श्रेणियाँ