opensentinel 2.1.1 → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +354 -283
- package/dist/archiver-AVNBYCKQ.js +15340 -0
- package/dist/archiver-AVNBYCKQ.js.map +1 -0
- package/dist/audit-logger-OBPR7CRO.js +22 -0
- package/dist/auth-UOX5K2BE.js +18 -0
- package/dist/autonomy-ZXDBDQUJ.js +86 -0
- package/dist/autonomy-ZXDBDQUJ.js.map +1 -0
- package/dist/aws-s3-Q4LLZZPD.js +146 -0
- package/dist/aws-s3-Q4LLZZPD.js.map +1 -0
- package/dist/backup-restore-PZ7CYYB7.js +16 -0
- package/dist/blocks-R3PODY47.js +23 -0
- package/dist/bot-QRARP4UN.js +36 -0
- package/dist/brain-7XLLM3KC.js +56 -0
- package/dist/camera-monitor-M5CYKUU4.js +335 -0
- package/dist/camera-monitor-M5CYKUU4.js.map +1 -0
- package/dist/{charts-MMXM6BWW.js → charts-V7ARZNKF.js} +2 -2
- package/dist/chunk-22VGGA7S.js +330 -0
- package/dist/chunk-22VGGA7S.js.map +1 -0
- package/dist/chunk-35WYTA3C.js +382 -0
- package/dist/chunk-35WYTA3C.js.map +1 -0
- package/dist/chunk-3E2PSU2C.js +146 -0
- package/dist/chunk-3E2PSU2C.js.map +1 -0
- package/dist/{chunk-L3F43VPB.js → chunk-4GLYY4NN.js} +2 -2
- package/dist/{chunk-L3F43VPB.js.map → chunk-4GLYY4NN.js.map} +1 -1
- package/dist/{chunk-L3PDU3XN.js → chunk-4UOE5TUZ.js} +4 -4
- package/dist/{chunk-6SNHU3CY.js → chunk-66OJ3WB4.js} +2 -2
- package/dist/chunk-6KONMXQ6.js +297 -0
- package/dist/chunk-6KONMXQ6.js.map +1 -0
- package/dist/chunk-6PMVAAA7.js +196 -0
- package/dist/chunk-6PMVAAA7.js.map +1 -0
- package/dist/chunk-766ASQWE.js +32620 -0
- package/dist/chunk-766ASQWE.js.map +1 -0
- package/dist/chunk-7WQO5J2M.js +29 -0
- package/dist/chunk-7WQO5J2M.js.map +1 -0
- package/dist/chunk-APHSRMBS.js +148 -0
- package/dist/chunk-APHSRMBS.js.map +1 -0
- package/dist/{chunk-4LVWXUNC.js → chunk-AYUKPTSM.js} +57 -39
- package/dist/chunk-AYUKPTSM.js.map +1 -0
- package/dist/chunk-BIPYADGB.js +84 -0
- package/dist/chunk-BIPYADGB.js.map +1 -0
- package/dist/chunk-BRBWNV65.js +457 -0
- package/dist/chunk-BRBWNV65.js.map +1 -0
- package/dist/chunk-BXZ6EA52.js +382 -0
- package/dist/chunk-BXZ6EA52.js.map +1 -0
- package/dist/chunk-EVE7MIIY.js +290 -0
- package/dist/chunk-EVE7MIIY.js.map +1 -0
- package/dist/chunk-F3TTNID2.js +138 -0
- package/dist/chunk-F3TTNID2.js.map +1 -0
- package/dist/chunk-H5RQOFO2.js +190 -0
- package/dist/chunk-H5RQOFO2.js.map +1 -0
- package/dist/chunk-HN3F4WSW.js +145 -0
- package/dist/chunk-HN3F4WSW.js.map +1 -0
- package/dist/{chunk-6DRDKB45.js → chunk-I6BDYQIG.js} +20 -9
- package/dist/chunk-I6BDYQIG.js.map +1 -0
- package/dist/chunk-IZJMVV7O.js +347 -0
- package/dist/chunk-IZJMVV7O.js.map +1 -0
- package/dist/chunk-KM22GV7G.js +211 -0
- package/dist/chunk-KM22GV7G.js.map +1 -0
- package/dist/chunk-MGFBLVR7.js +103 -0
- package/dist/chunk-MGFBLVR7.js.map +1 -0
- package/dist/chunk-MQJ2ECQT.js +228 -0
- package/dist/chunk-MQJ2ECQT.js.map +1 -0
- package/dist/{chunk-F6QUZQGI.js → chunk-MXAPLSJ5.js} +2 -2
- package/dist/{chunk-GK3E2I7A.js → chunk-NHMBTUMW.js} +2 -2
- package/dist/chunk-NPRTSZIF.js +131 -0
- package/dist/chunk-NPRTSZIF.js.map +1 -0
- package/dist/chunk-O7IH7JTI.js +1898 -0
- package/dist/chunk-O7IH7JTI.js.map +1 -0
- package/dist/chunk-OCVQGBJK.js +293 -0
- package/dist/chunk-OCVQGBJK.js.map +1 -0
- package/dist/chunk-P6QINGFL.js +332 -0
- package/dist/chunk-P6QINGFL.js.map +1 -0
- package/dist/chunk-PHDZKPNE.js +91 -0
- package/dist/chunk-PHDZKPNE.js.map +1 -0
- package/dist/chunk-PLDDJCW6.js +49 -0
- package/dist/chunk-PTGTGXV2.js +164 -0
- package/dist/chunk-PTGTGXV2.js.map +1 -0
- package/dist/chunk-REMIY4U2.js +171 -0
- package/dist/chunk-REMIY4U2.js.map +1 -0
- package/dist/chunk-RZ4YESBG.js +141 -0
- package/dist/chunk-RZ4YESBG.js.map +1 -0
- package/dist/chunk-SAX5MHK4.js +111 -0
- package/dist/chunk-SAX5MHK4.js.map +1 -0
- package/dist/{chunk-GVJVEWHI.js → chunk-SJSUSJ47.js} +2 -2
- package/dist/chunk-SPPMCAKG.js +777 -0
- package/dist/chunk-SPPMCAKG.js.map +1 -0
- package/dist/chunk-SVAPX2XN.js +2441 -0
- package/dist/chunk-SVAPX2XN.js.map +1 -0
- package/dist/chunk-TVEWKIK3.js +452 -0
- package/dist/chunk-TVEWKIK3.js.map +1 -0
- package/dist/{chunk-HH2HBTQM.js → chunk-TYAGMJNV.js} +5 -5
- package/dist/{chunk-JXUP2X7V.js → chunk-VEHFVBLI.js} +2 -2
- package/dist/chunk-VNX5GMTN.js +128 -0
- package/dist/chunk-VNX5GMTN.js.map +1 -0
- package/dist/chunk-VRD5CYRL.js +1568 -0
- package/dist/chunk-VRD5CYRL.js.map +1 -0
- package/dist/chunk-WLUHNG6X.js +122 -0
- package/dist/chunk-WLUHNG6X.js.map +1 -0
- package/dist/chunk-WRAKK6K6.js +265 -0
- package/dist/chunk-WRAKK6K6.js.map +1 -0
- package/dist/chunk-XKYRH4FM.js +681 -0
- package/dist/chunk-XKYRH4FM.js.map +1 -0
- package/dist/{chunk-GUBEEYDW.js → chunk-XMCVRVTF.js} +2 -2
- package/dist/{chunk-GUBEEYDW.js.map → chunk-XMCVRVTF.js.map} +1 -1
- package/dist/chunk-ZLZKF2PM.js +310 -0
- package/dist/chunk-ZLZKF2PM.js.map +1 -0
- package/dist/cli.js +5 -1
- package/dist/cli.js.map +1 -1
- package/dist/client-ZQSFPMOB.js +21 -0
- package/dist/clipboard-manager-TEO2GEDN.js +24 -0
- package/dist/commands/setup.js +3 -3
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/start.js +3 -3
- package/dist/commands/status.js +2 -2
- package/dist/commands/stop.js +2 -2
- package/dist/commands/utils.js +2 -2
- package/dist/cron-explain-HHQKPD3M.js +16 -0
- package/dist/crypto-4AP47IKC.js +14 -0
- package/dist/crypto-4AP47IKC.js.map +1 -0
- package/dist/databases-37X4CI2Y.js +21 -0
- package/dist/databases-37X4CI2Y.js.map +1 -0
- package/dist/discord-B3HUPGQ6.js +70 -0
- package/dist/discord-B3HUPGQ6.js.map +1 -0
- package/dist/dist-UISMLMFN.js +21847 -0
- package/dist/dist-UISMLMFN.js.map +1 -0
- package/dist/email-K7LO2IPB.js +268 -0
- package/dist/email-K7LO2IPB.js.map +1 -0
- package/dist/enhanced-retrieval-DNLLEM4Z.js +753 -0
- package/dist/enhanced-retrieval-DNLLEM4Z.js.map +1 -0
- package/dist/enrichment-pipeline-MNHNW65K.js +13 -0
- package/dist/enrichment-pipeline-MNHNW65K.js.map +1 -0
- package/dist/entity-resolution-Y3IUWEAT.js +24 -0
- package/dist/entity-resolution-Y3IUWEAT.js.map +1 -0
- package/dist/env-IWXUVTCB.js +12 -0
- package/dist/env-IWXUVTCB.js.map +1 -0
- package/dist/google-workspace-DKWUVNGC.js +169 -0
- package/dist/google-workspace-DKWUVNGC.js.map +1 -0
- package/dist/hash-tool-ULQYD7B5.js +22 -0
- package/dist/hash-tool-ULQYD7B5.js.map +1 -0
- package/dist/heartbeat-monitor-GCISLXI3.js +22 -0
- package/dist/heartbeat-monitor-GCISLXI3.js.map +1 -0
- package/dist/image-generation-OSU7FP6F.js +486 -0
- package/dist/image-generation-OSU7FP6F.js.map +1 -0
- package/dist/imessage-NGA2XF2V.js +35 -0
- package/dist/imessage-NGA2XF2V.js.map +1 -0
- package/dist/inbox-summarizer-NRI4S7IF.js +47 -0
- package/dist/inbox-summarizer-NRI4S7IF.js.map +1 -0
- package/dist/incident-response-C5J7Q6DT.js +244 -0
- package/dist/incident-response-C5J7Q6DT.js.map +1 -0
- package/dist/inventory-manager-352OHXWD.js +24 -0
- package/dist/inventory-manager-352OHXWD.js.map +1 -0
- package/dist/jira-GSGDBMIG.js +199 -0
- package/dist/jira-GSGDBMIG.js.map +1 -0
- package/dist/json-tool-QE2SYHEG.js +26 -0
- package/dist/json-tool-QE2SYHEG.js.map +1 -0
- package/dist/key-rotation-DPHU4ZTB.js +18 -0
- package/dist/key-rotation-DPHU4ZTB.js.map +1 -0
- package/dist/lib.d.ts +603 -11
- package/dist/lib.js +161 -35
- package/dist/lib.js.map +1 -1
- package/dist/mailchimp-KKNF6QJ7.js +152 -0
- package/dist/mailchimp-KKNF6QJ7.js.map +1 -0
- package/dist/matrix-QVHG76I7.js +279 -0
- package/dist/matrix-QVHG76I7.js.map +1 -0
- package/dist/{mcp-LS7Q3Z5W.js → mcp-3JI6W7ZE.js} +3 -3
- package/dist/mcp-3JI6W7ZE.js.map +1 -0
- package/dist/microsoft365-UCBKJHNX.js +164 -0
- package/dist/microsoft365-UCBKJHNX.js.map +1 -0
- package/dist/ocr-AC7NPX33.js +22 -0
- package/dist/ocr-AC7NPX33.js.map +1 -0
- package/dist/ollama-BOAMSPLJ.js +8 -0
- package/dist/ollama-BOAMSPLJ.js.map +1 -0
- package/dist/pages-MI523RB7.js +26 -0
- package/dist/pages-MI523RB7.js.map +1 -0
- package/dist/pair-JDFTERIK.js +24 -0
- package/dist/pair-JDFTERIK.js.map +1 -0
- package/dist/pairing-IFQYCPNS.js +10 -0
- package/dist/pairing-IFQYCPNS.js.map +1 -0
- package/dist/pdf-ALQVOEJR.js +17 -0
- package/dist/pdf-ALQVOEJR.js.map +1 -0
- package/dist/presentations-DSV5IHG5.js +1002 -0
- package/dist/presentations-DSV5IHG5.js.map +1 -0
- package/dist/prometheus-JNT2BD4L.js +10 -0
- package/dist/prometheus-JNT2BD4L.js.map +1 -0
- package/dist/providers-J4LYPHDR.js +19 -0
- package/dist/providers-J4LYPHDR.js.map +1 -0
- package/dist/qr-code-WIX4PB4U.js +16 -0
- package/dist/qr-code-WIX4PB4U.js.map +1 -0
- package/dist/quickbooks-XB4NII2S.js +190 -0
- package/dist/quickbooks-XB4NII2S.js.map +1 -0
- package/dist/regex-tool-W4ABRKGK.js +24 -0
- package/dist/regex-tool-W4ABRKGK.js.map +1 -0
- package/dist/scheduler-VK4WFERV.js +63 -0
- package/dist/scheduler-VK4WFERV.js.map +1 -0
- package/dist/search-BCLBO5E3.js +25 -0
- package/dist/search-BCLBO5E3.js.map +1 -0
- package/dist/sendgrid-RNXCAFKM.js +152 -0
- package/dist/sendgrid-RNXCAFKM.js.map +1 -0
- package/dist/shopify-NCXYJB4R.js +171 -0
- package/dist/shopify-NCXYJB4R.js.map +1 -0
- package/dist/signal-6CGDFYL2.js +35 -0
- package/dist/signal-6CGDFYL2.js.map +1 -0
- package/dist/slack-IZQWIKOH.js +75 -0
- package/dist/slack-IZQWIKOH.js.map +1 -0
- package/dist/sms-M3JIOTCW.js +23 -0
- package/dist/sms-M3JIOTCW.js.map +1 -0
- package/dist/{src-K7GASHRH.js → src-VYUE6LRA.js} +138 -32
- package/dist/src-VYUE6LRA.js.map +1 -0
- package/dist/stocks-XXWBPOCU.js +14 -0
- package/dist/stocks-XXWBPOCU.js.map +1 -0
- package/dist/text-transform-6SGUA5Z4.js +22 -0
- package/dist/text-transform-6SGUA5Z4.js.map +1 -0
- package/dist/tools-2RLEI2N6.js +38 -0
- package/dist/tools-2RLEI2N6.js.map +1 -0
- package/dist/tunnel-IWMXUML4.js +301 -0
- package/dist/tunnel-IWMXUML4.js.map +1 -0
- package/dist/twilio-53GEW5JT.js +139 -0
- package/dist/twilio-53GEW5JT.js.map +1 -0
- package/dist/unit-converter-ZYXMEZOE.js +14 -0
- package/dist/unit-converter-ZYXMEZOE.js.map +1 -0
- package/dist/whatsapp-LFX6YKCM.js +35 -0
- package/dist/whatsapp-LFX6YKCM.js.map +1 -0
- package/dist/word-document-7B6SJMAY.js +902 -0
- package/dist/word-document-7B6SJMAY.js.map +1 -0
- package/dist/xero-QYO66D45.js +162 -0
- package/dist/xero-QYO66D45.js.map +1 -0
- package/dist/zapier-webhook-TBZ5YF2A.js +106 -0
- package/dist/zapier-webhook-TBZ5YF2A.js.map +1 -0
- package/drizzle/0002_mushy_master_mold.sql +140 -0
- package/drizzle/meta/0002_snapshot.json +3637 -0
- package/drizzle/meta/_journal.json +7 -0
- package/package.json +100 -98
- package/dist/bot-KJ26BG56.js +0 -15
- package/dist/chunk-4LVWXUNC.js.map +0 -1
- package/dist/chunk-4TG2IG5K.js +0 -5249
- package/dist/chunk-4TG2IG5K.js.map +0 -1
- package/dist/chunk-6DRDKB45.js.map +0 -1
- package/dist/chunk-CI6Q63MM.js +0 -1613
- package/dist/chunk-CI6Q63MM.js.map +0 -1
- package/dist/chunk-KHNYJY2Z.js +0 -178
- package/dist/chunk-KHNYJY2Z.js.map +0 -1
- package/dist/chunk-NSBPE2FW.js +0 -17
- package/dist/discord-ZOJFTVTB.js +0 -49
- package/dist/imessage-JFRB6EJ7.js +0 -14
- package/dist/scheduler-EZ7CZMCS.js +0 -42
- package/dist/signal-T3MCSULM.js +0 -14
- package/dist/slack-N2M4FHAJ.js +0 -54
- package/dist/src-K7GASHRH.js.map +0 -1
- package/dist/tools-24GZHYRF.js +0 -16
- package/dist/whatsapp-VCRUPAO5.js +0 -14
- /package/dist/{bot-KJ26BG56.js.map → audit-logger-OBPR7CRO.js.map} +0 -0
- /package/dist/{chunk-NSBPE2FW.js.map → auth-UOX5K2BE.js.map} +0 -0
- /package/dist/{discord-ZOJFTVTB.js.map → backup-restore-PZ7CYYB7.js.map} +0 -0
- /package/dist/{imessage-JFRB6EJ7.js.map → blocks-R3PODY47.js.map} +0 -0
- /package/dist/{mcp-LS7Q3Z5W.js.map → bot-QRARP4UN.js.map} +0 -0
- /package/dist/{scheduler-EZ7CZMCS.js.map → brain-7XLLM3KC.js.map} +0 -0
- /package/dist/{charts-MMXM6BWW.js.map → charts-V7ARZNKF.js.map} +0 -0
- /package/dist/{chunk-L3PDU3XN.js.map → chunk-4UOE5TUZ.js.map} +0 -0
- /package/dist/{chunk-6SNHU3CY.js.map → chunk-66OJ3WB4.js.map} +0 -0
- /package/dist/{chunk-F6QUZQGI.js.map → chunk-MXAPLSJ5.js.map} +0 -0
- /package/dist/{chunk-GK3E2I7A.js.map → chunk-NHMBTUMW.js.map} +0 -0
- /package/dist/{signal-T3MCSULM.js.map → chunk-PLDDJCW6.js.map} +0 -0
- /package/dist/{chunk-GVJVEWHI.js.map → chunk-SJSUSJ47.js.map} +0 -0
- /package/dist/{chunk-HH2HBTQM.js.map → chunk-TYAGMJNV.js.map} +0 -0
- /package/dist/{chunk-JXUP2X7V.js.map → chunk-VEHFVBLI.js.map} +0 -0
- /package/dist/{slack-N2M4FHAJ.js.map → client-ZQSFPMOB.js.map} +0 -0
- /package/dist/{tools-24GZHYRF.js.map → clipboard-manager-TEO2GEDN.js.map} +0 -0
- /package/dist/{whatsapp-VCRUPAO5.js.map → cron-explain-HHQKPD3M.js.map} +0 -0
package/README.md
CHANGED
|
@@ -1,283 +1,354 @@
|
|
|
1
|
-
# OpenSentinel
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
-
|
|
44
|
-
|
|
45
|
-
### Multi-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
|
|
52
|
-
###
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
-
|
|
56
|
-
-
|
|
57
|
-
-
|
|
58
|
-
|
|
59
|
-
###
|
|
60
|
-
-
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
|
|
73
|
-
###
|
|
74
|
-
-
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
-
|
|
78
|
-
-
|
|
79
|
-
-
|
|
80
|
-
|
|
81
|
-
###
|
|
82
|
-
-
|
|
83
|
-
-
|
|
84
|
-
-
|
|
85
|
-
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
-
|
|
90
|
-
-
|
|
91
|
-
-
|
|
92
|
-
-
|
|
93
|
-
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
-
|
|
97
|
-
-
|
|
98
|
-
-
|
|
99
|
-
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
-
|
|
103
|
-
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
-
|
|
113
|
-
-
|
|
114
|
-
-
|
|
115
|
-
|
|
116
|
-
###
|
|
117
|
-
- **
|
|
118
|
-
- **
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
-
|
|
124
|
-
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
2.
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
```
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
│
|
|
229
|
-
|
|
230
|
-
│
|
|
231
|
-
│
|
|
232
|
-
│
|
|
233
|
-
│
|
|
234
|
-
│
|
|
235
|
-
│
|
|
236
|
-
│
|
|
237
|
-
│
|
|
238
|
-
│
|
|
239
|
-
│
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
│
|
|
243
|
-
|
|
244
|
-
│
|
|
245
|
-
│
|
|
246
|
-
|
|
247
|
-
│
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
│
|
|
251
|
-
|
|
252
|
-
│
|
|
253
|
-
|
|
254
|
-
│
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
├──
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
├──
|
|
266
|
-
│
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
1
|
+
# OpenSentinel
|
|
2
|
+
|
|
3
|
+
[](https://github.com/dsiemon2/OpenSentinel/actions/workflows/ci.yml)
|
|
4
|
+
[](https://www.typescriptlang.org/)
|
|
5
|
+
[](https://bun.sh/)
|
|
6
|
+
[](https://www.docker.com/)
|
|
7
|
+
[](LICENSE)
|
|
8
|
+
|
|
9
|
+
A self-hosted personal AI assistant powered by Claude, with JARVIS-like capabilities.
|
|
10
|
+
|
|
11
|
+
**Website**: [opensentinel.ai](https://opensentinel.ai) | **Dashboard**: [app.opensentinel.ai](https://app.opensentinel.ai)
|
|
12
|
+
|
|
13
|
+
## What is OpenSentinel?
|
|
14
|
+
|
|
15
|
+
OpenSentinel is your own personal AI assistant that runs on your infrastructure. Think of it like having Jarvis from Iron Man -- you can talk to it, ask questions, and it can take actions on your behalf. It connects to Telegram, Discord, Slack, a web dashboard, and a REST API, all backed by Claude as the reasoning engine.
|
|
16
|
+
|
|
17
|
+
## Features
|
|
18
|
+
|
|
19
|
+
### Core Capabilities
|
|
20
|
+
- Answer questions and have conversations
|
|
21
|
+
- Run commands on your computer (sandboxed)
|
|
22
|
+
- Read and write files
|
|
23
|
+
- Browse the web with Playwright
|
|
24
|
+
- Search the internet
|
|
25
|
+
- Set reminders and scheduled tasks
|
|
26
|
+
- Remember things about you (advanced RAG: HyDE, re-ranking, multi-step, graph RAG, caching)
|
|
27
|
+
- Respond with voice (JARVIS voice via ElevenLabs)
|
|
28
|
+
|
|
29
|
+
### Advanced Voice
|
|
30
|
+
- Wake word detection ("Hey OpenSentinel")
|
|
31
|
+
- Continuous conversation mode
|
|
32
|
+
- Voice activity detection (VAD)
|
|
33
|
+
- Speaker diarization (multi-person)
|
|
34
|
+
- Noise cancellation
|
|
35
|
+
- Voice note summarization
|
|
36
|
+
|
|
37
|
+
### Communication Platforms
|
|
38
|
+
- Telegram bot with voice support
|
|
39
|
+
- Discord bot with slash commands and voice channels
|
|
40
|
+
- Slack bot with app mentions and threads
|
|
41
|
+
- Matrix bot with mentions and DMs
|
|
42
|
+
- Web dashboard
|
|
43
|
+
- REST API
|
|
44
|
+
|
|
45
|
+
### Multi-Provider LLM
|
|
46
|
+
- Anthropic Claude (default)
|
|
47
|
+
- OpenRouter, Groq, Mistral, OpenAI
|
|
48
|
+
- Ollama (local/offline models)
|
|
49
|
+
- Any OpenAI-compatible endpoint
|
|
50
|
+
- Automatic provider registration from env vars
|
|
51
|
+
|
|
52
|
+
### Device Triggers
|
|
53
|
+
- iOS/macOS Shortcuts integration
|
|
54
|
+
- Bluetooth proximity activation
|
|
55
|
+
- Geofencing (location-based)
|
|
56
|
+
- NFC tag scanning
|
|
57
|
+
- Calendar triggers (Google, Outlook, iCal)
|
|
58
|
+
|
|
59
|
+
### Multi-Modal Input
|
|
60
|
+
- Image understanding and analysis
|
|
61
|
+
- Document OCR
|
|
62
|
+
- Screenshot interpretation
|
|
63
|
+
- Video summarization
|
|
64
|
+
- Audio transcription
|
|
65
|
+
|
|
66
|
+
### Sub-Agent System
|
|
67
|
+
- Research agent (web search, synthesis)
|
|
68
|
+
- Coding agent (implementation, debugging)
|
|
69
|
+
- Writing agent (drafts, editing)
|
|
70
|
+
- Analysis agent (data processing)
|
|
71
|
+
- Agent collaboration and task coordination
|
|
72
|
+
|
|
73
|
+
### File Generation
|
|
74
|
+
- PDF documents
|
|
75
|
+
- Word documents (.docx)
|
|
76
|
+
- PowerPoint presentations (.pptx)
|
|
77
|
+
- Excel spreadsheets
|
|
78
|
+
- Charts and diagrams
|
|
79
|
+
- AI image generation (DALL-E)
|
|
80
|
+
|
|
81
|
+
### Personality System
|
|
82
|
+
- 15 domain expert modes (coding, legal, medical, finance, etc.)
|
|
83
|
+
- Mood detection and adaptation
|
|
84
|
+
- Configurable personas (formal, casual, snarky)
|
|
85
|
+
- Verbosity and humor controls
|
|
86
|
+
|
|
87
|
+
### Security
|
|
88
|
+
- **Gateway token auth** (optional, disabled by default for self-hosted)
|
|
89
|
+
- **AES-256-GCM field encryption** for data at rest
|
|
90
|
+
- **Tamper-proof audit logs** with HMAC-SHA256 chain integrity
|
|
91
|
+
- **Incident response system** with automated detection and escalation
|
|
92
|
+
- 2FA for sensitive operations (DB-persisted, encrypted secrets)
|
|
93
|
+
- Biometric verification
|
|
94
|
+
- Memory vault (encrypted storage)
|
|
95
|
+
- Audit logging
|
|
96
|
+
- GDPR compliance tools
|
|
97
|
+
- Rate limiting
|
|
98
|
+
- Autonomy levels (readonly/supervised/autonomous)
|
|
99
|
+
- Device pairing (6-digit code auth)
|
|
100
|
+
|
|
101
|
+
### Enterprise Features
|
|
102
|
+
- Multi-user support
|
|
103
|
+
- Team knowledge base
|
|
104
|
+
- Usage quotas
|
|
105
|
+
- SSO integration (SAML, OAuth, OIDC)
|
|
106
|
+
- Kubernetes deployment
|
|
107
|
+
|
|
108
|
+
### Observability
|
|
109
|
+
- Metrics dashboard
|
|
110
|
+
- Replay mode (re-run conversations)
|
|
111
|
+
- Tool dry-run (preview without executing)
|
|
112
|
+
- Prompt inspector
|
|
113
|
+
- Alerting (anomaly, cost, errors)
|
|
114
|
+
- Prometheus metrics export (GET /metrics)
|
|
115
|
+
|
|
116
|
+
### Integrations
|
|
117
|
+
- **Email**: IMAP/SMTP with AI inbox summarization + web email client (read, compose, attachments)
|
|
118
|
+
- **SMS/Phone**: Twilio for calls and texts
|
|
119
|
+
- **GitHub**: Repos, issues, PRs, AI code review
|
|
120
|
+
- **Notion**: Pages, databases, search, sync
|
|
121
|
+
- **Home Assistant**: Smart home device control
|
|
122
|
+
- **Spotify**: Playback, playlists, search
|
|
123
|
+
- **Cloud Storage**: Google Drive, Dropbox
|
|
124
|
+
- **Finance**: Crypto, stocks, currency, portfolio tracking, exchange trading (Coinbase/Binance), DeFi data, on-chain analytics, order books, backtesting
|
|
125
|
+
|
|
126
|
+
### OSINT & Public Records
|
|
127
|
+
- **Graph Explorer**: D3.js force-directed knowledge graph visualization
|
|
128
|
+
- **External API Search**: Auto-queries FEC, OpenCorporates when entities aren't in local DB
|
|
129
|
+
- **Entity Resolution**: Jaro-Winkler fuzzy matching, exact/identifier/fuzzy/new resolution pipeline
|
|
130
|
+
- **Public Records Clients**: FEC, SEC EDGAR, IRS 990, USASpending, OpenCorporates
|
|
131
|
+
- **Rate Limiting**: Per-service sliding-window rate limiter for API compliance
|
|
132
|
+
|
|
133
|
+
### Infrastructure
|
|
134
|
+
- Built-in tunnels (Cloudflare, ngrok, localtunnel)
|
|
135
|
+
|
|
136
|
+
### Vision & Documents
|
|
137
|
+
- Screen capture and webcam analysis
|
|
138
|
+
- Document ingestion (PDF, DOCX, TXT, etc.)
|
|
139
|
+
- Knowledge base with vector search
|
|
140
|
+
- Enhanced OCR with layout detection
|
|
141
|
+
|
|
142
|
+
### Workflow Automation
|
|
143
|
+
- IFTTT-like trigger -> action workflows
|
|
144
|
+
- Time, webhook, and event triggers
|
|
145
|
+
- Built-in workflow templates
|
|
146
|
+
|
|
147
|
+
### Desktop & Browser Apps
|
|
148
|
+
- **Electron Desktop App**: System tray, global hotkeys (Ctrl+Shift+M chat, Ctrl+Shift+O OpenSentinel)
|
|
149
|
+
- **Browser Extension**: Chrome/Firefox popup chat, context menu
|
|
150
|
+
|
|
151
|
+
## Quick Start
|
|
152
|
+
|
|
153
|
+
### Prerequisites
|
|
154
|
+
- [Bun](https://bun.sh) runtime
|
|
155
|
+
- [Docker](https://docker.com) for PostgreSQL and Redis
|
|
156
|
+
- API keys (Claude at minimum; see `.env.example` for all options)
|
|
157
|
+
|
|
158
|
+
### Installation
|
|
159
|
+
|
|
160
|
+
1. **Clone and install dependencies**
|
|
161
|
+
```bash
|
|
162
|
+
git clone https://github.com/dsiemon2/OpenSentinel.git
|
|
163
|
+
cd OpenSentinel
|
|
164
|
+
bun install
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
2. **Set up environment variables**
|
|
168
|
+
```bash
|
|
169
|
+
cp .env.example .env
|
|
170
|
+
# Edit .env with your API keys
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
3. **Start database services**
|
|
174
|
+
```bash
|
|
175
|
+
docker compose up -d
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
4. **Run database migrations**
|
|
179
|
+
```bash
|
|
180
|
+
bun run db:migrate
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
5. **Build the web dashboard**
|
|
184
|
+
```bash
|
|
185
|
+
cd src/web && bun install && bun run build && cd ../..
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
6. **Start OpenSentinel**
|
|
189
|
+
```bash
|
|
190
|
+
bun run start
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## How to Use
|
|
194
|
+
|
|
195
|
+
### Telegram (Primary)
|
|
196
|
+
1. Create a bot via [@BotFather](https://t.me/BotFather) on Telegram
|
|
197
|
+
2. Add the bot token to your `.env` file
|
|
198
|
+
3. Start OpenSentinel and send a message to your bot
|
|
199
|
+
|
|
200
|
+
### Web Dashboard
|
|
201
|
+
1. Open http://localhost:8030 in your browser
|
|
202
|
+
2. Type a message and click Send
|
|
203
|
+
|
|
204
|
+
> **Note**: By default, no authentication is required (open access for self-hosted use). To secure the web dashboard, set the `GATEWAY_TOKEN` environment variable. When set, the UI will prompt for the token on first visit.
|
|
205
|
+
|
|
206
|
+
### API
|
|
207
|
+
```bash
|
|
208
|
+
curl -X POST http://localhost:8030/api/ask \
|
|
209
|
+
-H "Content-Type: application/json" \
|
|
210
|
+
-d '{"message": "Hello, what can you do?"}'
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
## Commands (Telegram)
|
|
214
|
+
|
|
215
|
+
| Command | Description |
|
|
216
|
+
|---------|-------------|
|
|
217
|
+
| `/start` | Welcome message |
|
|
218
|
+
| `/help` | Show help |
|
|
219
|
+
| `/clear` | Clear conversation history |
|
|
220
|
+
| `/remind 5m Take a break` | Set a reminder |
|
|
221
|
+
| `/mode productivity` | Switch to productivity mode |
|
|
222
|
+
| `/expert coding` | Activate coding expert |
|
|
223
|
+
|
|
224
|
+
## Architecture
|
|
225
|
+
|
|
226
|
+
```
|
|
227
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
228
|
+
│ OPENSENTINEL │
|
|
229
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
230
|
+
│ Inputs │ Core │ Outputs │
|
|
231
|
+
│ ────── │ ──── │ ─────── │
|
|
232
|
+
│ Telegram │ Claude Brain │ Text │
|
|
233
|
+
│ Discord │ Memory/RAG │ Voice TTS │
|
|
234
|
+
│ Slack │ Tool Router │ Files (PDF, │
|
|
235
|
+
│ Matrix │ Scheduler │ Word, Excel, │
|
|
236
|
+
│ Web Dashboard │ Sub-Agents │ PPT, Images) │
|
|
237
|
+
│ REST API │ Plugins │ │
|
|
238
|
+
│ Voice (Wake Word) │ Multi-LLM │ │
|
|
239
|
+
│ Device Triggers │ │ │
|
|
240
|
+
│ Calendar │ │ │
|
|
241
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
242
|
+
│ Providers: Anthropic, OpenRouter, Groq, Mistral, Ollama │
|
|
243
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
244
|
+
│ Tools: Shell, Files, Browser, Search, OCR, Screenshots, │
|
|
245
|
+
│ Video, Image Analysis, File Generation │
|
|
246
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
247
|
+
│ Intelligence: Predictive, Relationship Graph, Temporal, │
|
|
248
|
+
│ Multi-lingual, Domain Experts │
|
|
249
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
250
|
+
│ Security: 2FA, Biometric, Vault, Audit, GDPR, Rate Limiting │
|
|
251
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
252
|
+
│ Enterprise: Multi-User, Team Memory, Quotas, SSO, Kubernetes │
|
|
253
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
254
|
+
│ Data: PostgreSQL + pgvector │ Redis (Cache/Queue) │
|
|
255
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
## Project Structure
|
|
259
|
+
|
|
260
|
+
```
|
|
261
|
+
src/
|
|
262
|
+
├── index.ts # Entry point
|
|
263
|
+
├── config/env.ts # Environment config
|
|
264
|
+
├── core/
|
|
265
|
+
│ ├── brain.ts # Claude API + tool execution
|
|
266
|
+
│ ├── memory.ts # Advanced RAG memory system
|
|
267
|
+
│ ├── memory/ # Retrieval pipeline (HyDE, re-ranking, caching)
|
|
268
|
+
│ ├── scheduler.ts # BullMQ task scheduler
|
|
269
|
+
│ ├── agents/ # Sub-agent system
|
|
270
|
+
│ ├── enterprise/ # Multi-user, SSO, quotas
|
|
271
|
+
│ ├── intelligence/ # Predictive, relationship, temporal
|
|
272
|
+
│ ├── evolution/ # Evolution, achievements, modes
|
|
273
|
+
│ ├── observability/ # Metrics, replay, alerting
|
|
274
|
+
│ ├── personality/ # Personas, mood, domain experts
|
|
275
|
+
│ ├── plugins/ # Plugin system
|
|
276
|
+
│ ├── providers/ # Multi-LLM provider abstraction
|
|
277
|
+
│ ├── security/ # 2FA, vault, GDPR, audit
|
|
278
|
+
│ ├── tunnel/ # Built-in tunnel support
|
|
279
|
+
│ └── workflows/ # Automation engine
|
|
280
|
+
├── inputs/
|
|
281
|
+
│ ├── telegram/ # Telegram bot
|
|
282
|
+
│ ├── discord/ # Discord bot
|
|
283
|
+
│ ├── slack/ # Slack bot
|
|
284
|
+
│ ├── matrix/ # Matrix messaging bot
|
|
285
|
+
│ ├── api/ # REST API
|
|
286
|
+
│ ├── calendar/ # Google, Outlook, iCal
|
|
287
|
+
│ ├── triggers/ # Shortcuts, Bluetooth, NFC, Geofence
|
|
288
|
+
│ └── voice/ # Wake word, VAD, diarization
|
|
289
|
+
├── integrations/
|
|
290
|
+
│ ├── email/ # IMAP/SMTP email
|
|
291
|
+
│ ├── twilio/ # SMS/Phone calls
|
|
292
|
+
│ ├── github/ # GitHub API
|
|
293
|
+
│ ├── notion/ # Notion API
|
|
294
|
+
│ ├── homeassistant/ # Home Assistant
|
|
295
|
+
│ ├── spotify/ # Spotify API
|
|
296
|
+
│ ├── cloud-storage/ # Google Drive, Dropbox
|
|
297
|
+
│ ├── finance/ # Crypto, stocks, currency
|
|
298
|
+
│ ├── public-records/ # FEC, SEC, IRS 990, USASpending, OpenCorporates
|
|
299
|
+
│ ├── documents/ # Document ingestion
|
|
300
|
+
│ └── vision/ # Screen/webcam capture
|
|
301
|
+
├── tools/
|
|
302
|
+
│ ├── file-generation/ # PDF, Word, Excel, PPT, images
|
|
303
|
+
│ └── rendering/ # Math, code, markdown
|
|
304
|
+
├── outputs/
|
|
305
|
+
│ ├── stt.ts # Speech-to-text
|
|
306
|
+
│ └── tts.ts # Text-to-speech
|
|
307
|
+
├── db/
|
|
308
|
+
│ └── schema.ts # Drizzle ORM schema
|
|
309
|
+
└── web/ # React dashboard
|
|
310
|
+
|
|
311
|
+
desktop/ # Electron desktop app
|
|
312
|
+
extension/ # Browser extension
|
|
313
|
+
tests/ # 155+ test files, 5,000+ tests
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
## Ports
|
|
317
|
+
|
|
318
|
+
| Service | Port |
|
|
319
|
+
|---------|------|
|
|
320
|
+
| OpenSentinel API + Dashboard | 8030 |
|
|
321
|
+
| PostgreSQL | 5445 |
|
|
322
|
+
| Redis | 6379 |
|
|
323
|
+
|
|
324
|
+
## Contributing
|
|
325
|
+
|
|
326
|
+
We welcome contributions from the community! Whether it is a bug fix, new feature, documentation improvement, or test -- every contribution helps.
|
|
327
|
+
|
|
328
|
+
1. **Fork** the repository
|
|
329
|
+
2. **Create** a feature branch: `git checkout -b feature/my-feature`
|
|
330
|
+
3. **Make** your changes and add tests
|
|
331
|
+
4. **Run** the test suite: `bun test`
|
|
332
|
+
5. **Commit** your changes: `git commit -m "Add my feature"`
|
|
333
|
+
6. **Push** to your fork: `git push origin feature/my-feature`
|
|
334
|
+
7. **Open** a Pull Request
|
|
335
|
+
|
|
336
|
+
Please see [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines on code style, testing requirements, and how to add new tools, integrations, and channels.
|
|
337
|
+
|
|
338
|
+
### Reporting Issues
|
|
339
|
+
|
|
340
|
+
Found a bug or have a feature request? [Open an issue](https://github.com/dsiemon2/OpenSentinel/issues) with:
|
|
341
|
+
- A clear description of the problem or feature
|
|
342
|
+
- Steps to reproduce (for bugs)
|
|
343
|
+
- Expected vs. actual behavior
|
|
344
|
+
- Your environment (OS, Bun version)
|
|
345
|
+
|
|
346
|
+
## Community
|
|
347
|
+
|
|
348
|
+
- **GitHub Issues**: [Report bugs and request features](https://github.com/dsiemon2/OpenSentinel/issues)
|
|
349
|
+
- **GitHub Discussions**: [Ask questions and share ideas](https://github.com/dsiemon2/OpenSentinel/discussions)
|
|
350
|
+
- **Website**: [opensentinel.ai](https://opensentinel.ai)
|
|
351
|
+
|
|
352
|
+
## License
|
|
353
|
+
|
|
354
|
+
This project is licensed under the [MIT License](LICENSE).
|