boei 0.1.0__tar.gz

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.
Files changed (148) hide show
  1. boei-0.1.0/.gitignore +246 -0
  2. boei-0.1.0/LICENSE +21 -0
  3. boei-0.1.0/PKG-INFO +104 -0
  4. boei-0.1.0/README.md +70 -0
  5. boei-0.1.0/__init__.py +465 -0
  6. boei-0.1.0/client/__init__.py +5 -0
  7. boei-0.1.0/client/api/__init__.py +81 -0
  8. boei-0.1.0/client/api/base.py +161 -0
  9. boei-0.1.0/client/api/types.py +21 -0
  10. boei-0.1.0/client/api/versions/__init__.py +11 -0
  11. boei-0.1.0/client/api/versions/v3.py +75 -0
  12. boei-0.1.0/client/api/versions/v4.py +305 -0
  13. boei-0.1.0/client/client.py +484 -0
  14. boei-0.1.0/client/http/README.md +24 -0
  15. boei-0.1.0/client/http/__init__.py +0 -0
  16. boei-0.1.0/client/http/http_adapter.py +116 -0
  17. boei-0.1.0/client/http/http_client.py +170 -0
  18. boei-0.1.0/config.py +274 -0
  19. boei-0.1.0/enums.py +36 -0
  20. boei-0.1.0/exceptions.py +38 -0
  21. boei-0.1.0/helpers/__init__.py +44 -0
  22. boei-0.1.0/helpers/dashboard.py +54 -0
  23. boei-0.1.0/helpers/deprecation.py +50 -0
  24. boei-0.1.0/helpers/env.py +52 -0
  25. boei-0.1.0/helpers/serialization.py +134 -0
  26. boei-0.1.0/helpers/system.py +189 -0
  27. boei-0.1.0/helpers/time.py +11 -0
  28. boei-0.1.0/helpers/version.py +36 -0
  29. boei-0.1.0/instrumentation/OpenTelemetry.md +133 -0
  30. boei-0.1.0/instrumentation/README.md +167 -0
  31. boei-0.1.0/instrumentation/__init__.py +593 -0
  32. boei-0.1.0/instrumentation/agentic/ag2/__init__.py +18 -0
  33. boei-0.1.0/instrumentation/agentic/ag2/instrumentor.py +922 -0
  34. boei-0.1.0/instrumentation/agentic/crewai/LICENSE +201 -0
  35. boei-0.1.0/instrumentation/agentic/crewai/NOTICE.md +10 -0
  36. boei-0.1.0/instrumentation/agentic/crewai/__init__.py +6 -0
  37. boei-0.1.0/instrumentation/agentic/crewai/crewai_span_attributes.py +335 -0
  38. boei-0.1.0/instrumentation/agentic/crewai/instrumentation.py +535 -0
  39. boei-0.1.0/instrumentation/agentic/crewai/version.py +1 -0
  40. boei-0.1.0/instrumentation/agentic/google_adk/__init__.py +19 -0
  41. boei-0.1.0/instrumentation/agentic/google_adk/instrumentor.py +68 -0
  42. boei-0.1.0/instrumentation/agentic/google_adk/patch.py +767 -0
  43. boei-0.1.0/instrumentation/agentic/langgraph/__init__.py +3 -0
  44. boei-0.1.0/instrumentation/agentic/langgraph/attributes.py +54 -0
  45. boei-0.1.0/instrumentation/agentic/langgraph/instrumentation.py +598 -0
  46. boei-0.1.0/instrumentation/agentic/langgraph/version.py +1 -0
  47. boei-0.1.0/instrumentation/agentic/openai_agents/README.md +156 -0
  48. boei-0.1.0/instrumentation/agentic/openai_agents/SPANS.md +145 -0
  49. boei-0.1.0/instrumentation/agentic/openai_agents/TRACING_API.md +144 -0
  50. boei-0.1.0/instrumentation/agentic/openai_agents/__init__.py +30 -0
  51. boei-0.1.0/instrumentation/agentic/openai_agents/attributes/__init__.py +0 -0
  52. boei-0.1.0/instrumentation/agentic/openai_agents/attributes/common.py +549 -0
  53. boei-0.1.0/instrumentation/agentic/openai_agents/attributes/completion.py +172 -0
  54. boei-0.1.0/instrumentation/agentic/openai_agents/attributes/model.py +58 -0
  55. boei-0.1.0/instrumentation/agentic/openai_agents/attributes/tokens.py +275 -0
  56. boei-0.1.0/instrumentation/agentic/openai_agents/exporter.py +469 -0
  57. boei-0.1.0/instrumentation/agentic/openai_agents/instrumentor.py +107 -0
  58. boei-0.1.0/instrumentation/agentic/openai_agents/processor.py +58 -0
  59. boei-0.1.0/instrumentation/common/README.md +65 -0
  60. boei-0.1.0/instrumentation/common/__init__.py +82 -0
  61. boei-0.1.0/instrumentation/common/attributes.py +278 -0
  62. boei-0.1.0/instrumentation/common/instrumentor.py +147 -0
  63. boei-0.1.0/instrumentation/common/metrics.py +100 -0
  64. boei-0.1.0/instrumentation/common/objects.py +26 -0
  65. boei-0.1.0/instrumentation/common/span_management.py +176 -0
  66. boei-0.1.0/instrumentation/common/streaming.py +218 -0
  67. boei-0.1.0/instrumentation/common/token_counting.py +225 -0
  68. boei-0.1.0/instrumentation/common/version.py +71 -0
  69. boei-0.1.0/instrumentation/common/wrappers.py +363 -0
  70. boei-0.1.0/instrumentation/providers/_common/headers.py +152 -0
  71. boei-0.1.0/instrumentation/providers/anthropic/__init__.py +24 -0
  72. boei-0.1.0/instrumentation/providers/anthropic/attributes/__init__.py +23 -0
  73. boei-0.1.0/instrumentation/providers/anthropic/attributes/common.py +65 -0
  74. boei-0.1.0/instrumentation/providers/anthropic/attributes/message.py +551 -0
  75. boei-0.1.0/instrumentation/providers/anthropic/attributes/tools.py +231 -0
  76. boei-0.1.0/instrumentation/providers/anthropic/event_handler_wrapper.py +90 -0
  77. boei-0.1.0/instrumentation/providers/anthropic/instrumentor.py +146 -0
  78. boei-0.1.0/instrumentation/providers/anthropic/stream_wrapper.py +551 -0
  79. boei-0.1.0/instrumentation/providers/google_genai/README.md +33 -0
  80. boei-0.1.0/instrumentation/providers/google_genai/__init__.py +24 -0
  81. boei-0.1.0/instrumentation/providers/google_genai/attributes/__init__.py +25 -0
  82. boei-0.1.0/instrumentation/providers/google_genai/attributes/chat.py +125 -0
  83. boei-0.1.0/instrumentation/providers/google_genai/attributes/common.py +88 -0
  84. boei-0.1.0/instrumentation/providers/google_genai/attributes/model.py +284 -0
  85. boei-0.1.0/instrumentation/providers/google_genai/instrumentor.py +170 -0
  86. boei-0.1.0/instrumentation/providers/google_genai/stream_wrapper.py +372 -0
  87. boei-0.1.0/instrumentation/providers/openai/__init__.py +21 -0
  88. boei-0.1.0/instrumentation/providers/openai/attributes/__init__.py +7 -0
  89. boei-0.1.0/instrumentation/providers/openai/attributes/common.py +55 -0
  90. boei-0.1.0/instrumentation/providers/openai/attributes/response.py +607 -0
  91. boei-0.1.0/instrumentation/providers/openai/attributes/tools.py +0 -0
  92. boei-0.1.0/instrumentation/providers/openai/config.py +36 -0
  93. boei-0.1.0/instrumentation/providers/openai/instrumentor.py +475 -0
  94. boei-0.1.0/instrumentation/providers/openai/stream_wrapper.py +1317 -0
  95. boei-0.1.0/instrumentation/providers/openai/utils.py +44 -0
  96. boei-0.1.0/instrumentation/providers/openai/wrappers/__init__.py +76 -0
  97. boei-0.1.0/instrumentation/providers/openai/wrappers/assistant.py +277 -0
  98. boei-0.1.0/instrumentation/providers/openai/wrappers/audio.py +194 -0
  99. boei-0.1.0/instrumentation/providers/openai/wrappers/batches.py +224 -0
  100. boei-0.1.0/instrumentation/providers/openai/wrappers/chat.py +263 -0
  101. boei-0.1.0/instrumentation/providers/openai/wrappers/completion.py +113 -0
  102. boei-0.1.0/instrumentation/providers/openai/wrappers/embeddings.py +98 -0
  103. boei-0.1.0/instrumentation/providers/openai/wrappers/files.py +272 -0
  104. boei-0.1.0/instrumentation/providers/openai/wrappers/fine_tuning.py +263 -0
  105. boei-0.1.0/instrumentation/providers/openai/wrappers/image_gen.py +77 -0
  106. boei-0.1.0/instrumentation/providers/openai/wrappers/responses.py +195 -0
  107. boei-0.1.0/instrumentation/providers/openai/wrappers/shared.py +78 -0
  108. boei-0.1.0/integration/callbacks/dspy/__init__.py +11 -0
  109. boei-0.1.0/integration/callbacks/dspy/callback.py +470 -0
  110. boei-0.1.0/integration/callbacks/langchain/README.md +59 -0
  111. boei-0.1.0/integration/callbacks/langchain/__init__.py +15 -0
  112. boei-0.1.0/integration/callbacks/langchain/callback.py +791 -0
  113. boei-0.1.0/integration/callbacks/langchain/utils.py +54 -0
  114. boei-0.1.0/logging/__init__.py +4 -0
  115. boei-0.1.0/logging/config.py +86 -0
  116. boei-0.1.0/logging/formatters.py +34 -0
  117. boei-0.1.0/logging/instrument_logging.py +118 -0
  118. boei-0.1.0/pyproject.toml +176 -0
  119. boei-0.1.0/sdk/__init__.py +27 -0
  120. boei-0.1.0/sdk/attributes.py +240 -0
  121. boei-0.1.0/sdk/core.py +827 -0
  122. boei-0.1.0/sdk/decorators/__init__.py +34 -0
  123. boei-0.1.0/sdk/decorators/factory.py +627 -0
  124. boei-0.1.0/sdk/decorators/utility.py +247 -0
  125. boei-0.1.0/sdk/descriptors/classproperty.py +28 -0
  126. boei-0.1.0/sdk/exporters.py +206 -0
  127. boei-0.1.0/sdk/identity.py +92 -0
  128. boei-0.1.0/sdk/processors.py +209 -0
  129. boei-0.1.0/sdk/proxy_detection.py +236 -0
  130. boei-0.1.0/sdk/system_key.py +2 -0
  131. boei-0.1.0/sdk/trace_utils.py +144 -0
  132. boei-0.1.0/sdk/types.py +23 -0
  133. boei-0.1.0/semconv/README.md +125 -0
  134. boei-0.1.0/semconv/__init__.py +36 -0
  135. boei-0.1.0/semconv/agent.py +29 -0
  136. boei-0.1.0/semconv/core.py +19 -0
  137. boei-0.1.0/semconv/enum.py +11 -0
  138. boei-0.1.0/semconv/instrumentation.py +13 -0
  139. boei-0.1.0/semconv/message.py +61 -0
  140. boei-0.1.0/semconv/meters.py +24 -0
  141. boei-0.1.0/semconv/resource.py +55 -0
  142. boei-0.1.0/semconv/span_attributes.py +141 -0
  143. boei-0.1.0/semconv/span_kinds.py +48 -0
  144. boei-0.1.0/semconv/status.py +11 -0
  145. boei-0.1.0/semconv/tool.py +15 -0
  146. boei-0.1.0/semconv/workflow.py +69 -0
  147. boei-0.1.0/uv.lock +2742 -0
  148. boei-0.1.0/validation.py +396 -0
boei-0.1.0/.gitignore ADDED
@@ -0,0 +1,246 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # Eval corpus repos (cloned at pinned commits, not checked in)
7
+ tests/evals/repos/
8
+
9
+ # Environment files with secrets
10
+ app/api/.env.dev
11
+
12
+ # GitHub App private keys (PEM files) — never commit
13
+ *.pem
14
+ app/api/.github-app-private-key.pem
15
+
16
+ # C extensions
17
+ *.so
18
+
19
+ # Claude Code: keep skills/commands/agents/settings.json tracked; keep
20
+ # machine-specific/runtime artifacts out.
21
+ .claude/settings.local.json
22
+ .claude/settings.local.json.bak
23
+ .claude/launch.json
24
+ .claude/worktrees/
25
+ .claude/cache/
26
+ .codex/
27
+ .superpowers/
28
+
29
+ # Distribution / packaging
30
+ .Python
31
+ /build/
32
+ develop-eggs/
33
+ dist/
34
+ downloads/
35
+ eggs/
36
+ .eggs/
37
+ /lib/
38
+ /lib64/
39
+ parts/
40
+ sdist/
41
+ var/
42
+ wheels/
43
+ share/python-wheels/
44
+ *.egg-info/
45
+ .installed.cfg
46
+ *.egg
47
+ MANIFEST
48
+
49
+ # PyInstaller
50
+ # Usually these files are written by a python script from a template
51
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
52
+ *.manifest
53
+ *.spec
54
+
55
+ # Installer logs
56
+ pip-log.txt
57
+ pip-delete-this-directory.txt
58
+
59
+ # Unit test / coverage reports
60
+ htmlcov/
61
+ .tox/
62
+ .nox/
63
+ .coverage
64
+ .coverage.*
65
+ .cache
66
+ nosetests.xml
67
+ coverage.xml
68
+ *.cover
69
+ *.py,cover
70
+ .hypothesis/
71
+ .pytest_cache/
72
+ cover/
73
+
74
+ # Translations
75
+ *.mo
76
+ *.pot
77
+
78
+ # Django stuff:
79
+ *.log
80
+ local_settings.py
81
+ db.sqlite3
82
+ db.sqlite3-journal
83
+
84
+ # Flask stuff:
85
+ instance/
86
+ .webassets-cache
87
+
88
+ # Scrapy stuff:
89
+ .scrapy
90
+
91
+ # Sphinx documentation
92
+ docs/_build/
93
+
94
+ # PyBuilder
95
+ .pybuilder/
96
+ target/
97
+
98
+ # Jupyter Notebook
99
+ .ipynb_checkpoints
100
+
101
+ # IPython
102
+ profile_default/
103
+ ipython_config.py
104
+
105
+ # pyenv
106
+ # For a library or package, you might want to ignore these files since the code is
107
+ # intended to run in multiple environments; otherwise, check them in:
108
+ .python-version
109
+
110
+ # pipenv
111
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
112
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
113
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
114
+ # install all needed dependencies.
115
+ #Pipfile.lock
116
+
117
+ # poetry
118
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
119
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
120
+ # commonly ignored for libraries.
121
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
122
+ #poetry.lock
123
+
124
+ # pdm
125
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
126
+ #pdm.lock
127
+ # pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
128
+ # in version control.
129
+ # https://pdm.fming.dev/#use-with-ide
130
+ .pdm.toml
131
+
132
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
133
+ __pypackages__/
134
+
135
+ # Celery stuff
136
+ celerybeat-schedule
137
+ celerybeat.pid
138
+
139
+ # SageMath parsed files
140
+ *.sage.py
141
+
142
+ # Environments
143
+ .env
144
+ **/.env
145
+ .tmp-*
146
+ .venv
147
+ env/
148
+ venv/
149
+ ENV/
150
+ env.bak/
151
+ venv.bak/
152
+
153
+ # Spyder project settings
154
+ .spyderproject
155
+ .spyproject
156
+
157
+ # Rope project settings
158
+ .ropeproject
159
+
160
+ # mkdocs documentation
161
+ /site
162
+
163
+ # mypy
164
+ .mypy_cache/
165
+ .dmypy.json
166
+ dmypy.json
167
+
168
+ # Pyre type checker
169
+ .pyre/
170
+
171
+ # pytype static type analyzer
172
+ .pytype/
173
+
174
+ # Cython debug symbols
175
+ cython_debug/
176
+
177
+ # PyCharm
178
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
179
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
180
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
181
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
182
+ .idea/
183
+
184
+ # VSCode
185
+ .vscode/
186
+
187
+ # Cursor
188
+ .cursorrules
189
+
190
+ # Benchmarks
191
+ .benchmarks/
192
+
193
+ # MacOS
194
+ .DS_Store
195
+
196
+ # Database
197
+ .db
198
+
199
+ # Time travel
200
+ boei_time_travel.json
201
+ .boei_time_travel.yaml
202
+
203
+ # Node
204
+ node_modules
205
+
206
+ # Logs
207
+ logs
208
+ npm-debug.log*
209
+ yarn-debug.log*
210
+ yarn-error.log*
211
+ dev-debug.log
212
+ # Generated pricing snapshot
213
+ app/opentelemetry-collector/config/model_pricing_snapshot.json
214
+ app/opentelemetry-collector/config/model_pricing_snapshot.json.tmp
215
+ # Dependency directories
216
+ node_modules/
217
+ # Environment variables
218
+ # Editor directories and files
219
+ .idea
220
+ .vscode
221
+ *.suo
222
+ *.ntvs*
223
+ *.njsproj
224
+ *.sln
225
+ *.sw?
226
+ # OS specific
227
+
228
+ # Task files
229
+ # tasks.json
230
+ # tasks/
231
+
232
+ # Stray files
233
+ cache.db
234
+ git-diff.patch
235
+ prompt_engineering.txt
236
+ llms.txt
237
+
238
+ # Worktrees
239
+ .worktrees/
240
+
241
+ # Worktrees
242
+ .worktrees/
243
+ .vercel
244
+
245
+ # local agent CLI config (holds API keys)
246
+ .codex/
boei-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2023 AgentOps-AI
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
boei-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,104 @@
1
+ Metadata-Version: 2.4
2
+ Name: boei
3
+ Version: 0.1.0
4
+ Summary: Boei runtime SDK and OpenTelemetry instrumentation for AI systems
5
+ Project-URL: Homepage, https://github.com/Boei-AI/boei
6
+ Project-URL: Issues, https://github.com/Boei-AI/boei/issues
7
+ Author-email: Ishaan Dhillon <ishaan.lc.2017@gmail.com>
8
+ License: MIT
9
+ License-File: LICENSE
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Operating System :: OS Independent
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.10
14
+ Classifier: Programming Language :: Python :: 3.11
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Requires-Python: >=3.10
18
+ Requires-Dist: aiohttp<4.0.0,>=3.8.0
19
+ Requires-Dist: opentelemetry-api<2.0.0,>=1.29.0; python_version >= '3.10'
20
+ Requires-Dist: opentelemetry-api==1.29.0; python_version < '3.10'
21
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http<2.0.0,>=1.29.0; python_version >= '3.10'
22
+ Requires-Dist: opentelemetry-exporter-otlp-proto-http==1.29.0; python_version < '3.10'
23
+ Requires-Dist: opentelemetry-instrumentation<1.0.0,>=0.50b0; python_version >= '3.10'
24
+ Requires-Dist: opentelemetry-instrumentation==0.50b0; python_version < '3.10'
25
+ Requires-Dist: opentelemetry-sdk<2.0.0,>=1.29.0; python_version >= '3.10'
26
+ Requires-Dist: opentelemetry-sdk==1.29.0; python_version < '3.10'
27
+ Requires-Dist: opentelemetry-semantic-conventions<1.0.0,>=0.50b0; python_version >= '3.10'
28
+ Requires-Dist: opentelemetry-semantic-conventions==0.50b0; python_version < '3.10'
29
+ Requires-Dist: packaging<25.0,>=21.0
30
+ Requires-Dist: requests<3.0.0,>=2.0.0
31
+ Requires-Dist: termcolor<2.5.0,>=2.3.0
32
+ Requires-Dist: wrapt<2.0.0,>=1.0.0
33
+ Description-Content-Type: text/markdown
34
+
35
+ # Boei Runtime SDK
36
+
37
+ The Boei Python SDK captures runtime metadata for AI systems and sends it to
38
+ Boei's runtime ingest API. Install it:
39
+
40
+ ```bash
41
+ pip install boei
42
+ ```
43
+
44
+ Then import and initialize:
45
+
46
+ ```python
47
+ import boei
48
+
49
+ boei.init()
50
+ ```
51
+
52
+ ## Activation
53
+
54
+ Use a managed project key from Boei:
55
+
56
+ ```bash
57
+ export BOEI_API_KEY="boei_pk_..."
58
+ ```
59
+
60
+ The SDK exchanges the project key for a runtime token at `/v1/auth/token` and
61
+ sends telemetry to `/v1/runtime/ingest` or `/v1/traces`. There is no Boei CLI in this story; activation is SDK install plus project key configuration.
62
+
63
+ ## Privacy Default
64
+
65
+ Boei does not read prompt or response content by default.
66
+
67
+ ```bash
68
+ export BOEI_CAPTURE_CONTENT=false
69
+ ```
70
+
71
+ That is also the default when the variable is unset. The legacy
72
+ `TRACELOOP_TRACE_CONTENT` variable does not turn Boei content capture on.
73
+
74
+ If a tenant deliberately opts in:
75
+
76
+ ```bash
77
+ export BOEI_CAPTURE_CONTENT=true
78
+ ```
79
+
80
+ the SDK still runs redaction for common PII and secret patterns before export.
81
+ The ingest API also strips prompt/message attributes unless the runtime token
82
+ carries `capture_content=true`.
83
+
84
+ ## What Runtime Proves
85
+
86
+ Runtime evidence can corroborate:
87
+
88
+ - call volume
89
+ - token counts
90
+ - provider
91
+ - model choice
92
+ - SDK-estimated runtime cost under a project key
93
+
94
+ Runtime evidence cannot prove:
95
+
96
+ - provider bill-of-record spend
97
+ - system ownership
98
+ - a confirmed AI system
99
+ - control effectiveness
100
+ - prompt or response content when content capture is off
101
+
102
+ Runtime rollups become `source_evidence_atoms` as pending key observations.
103
+ They stay corroborator evidence until later scanner binding and reviewer
104
+ confirmation work.
boei-0.1.0/README.md ADDED
@@ -0,0 +1,70 @@
1
+ # Boei Runtime SDK
2
+
3
+ The Boei Python SDK captures runtime metadata for AI systems and sends it to
4
+ Boei's runtime ingest API. Install it:
5
+
6
+ ```bash
7
+ pip install boei
8
+ ```
9
+
10
+ Then import and initialize:
11
+
12
+ ```python
13
+ import boei
14
+
15
+ boei.init()
16
+ ```
17
+
18
+ ## Activation
19
+
20
+ Use a managed project key from Boei:
21
+
22
+ ```bash
23
+ export BOEI_API_KEY="boei_pk_..."
24
+ ```
25
+
26
+ The SDK exchanges the project key for a runtime token at `/v1/auth/token` and
27
+ sends telemetry to `/v1/runtime/ingest` or `/v1/traces`. There is no Boei CLI in this story; activation is SDK install plus project key configuration.
28
+
29
+ ## Privacy Default
30
+
31
+ Boei does not read prompt or response content by default.
32
+
33
+ ```bash
34
+ export BOEI_CAPTURE_CONTENT=false
35
+ ```
36
+
37
+ That is also the default when the variable is unset. The legacy
38
+ `TRACELOOP_TRACE_CONTENT` variable does not turn Boei content capture on.
39
+
40
+ If a tenant deliberately opts in:
41
+
42
+ ```bash
43
+ export BOEI_CAPTURE_CONTENT=true
44
+ ```
45
+
46
+ the SDK still runs redaction for common PII and secret patterns before export.
47
+ The ingest API also strips prompt/message attributes unless the runtime token
48
+ carries `capture_content=true`.
49
+
50
+ ## What Runtime Proves
51
+
52
+ Runtime evidence can corroborate:
53
+
54
+ - call volume
55
+ - token counts
56
+ - provider
57
+ - model choice
58
+ - SDK-estimated runtime cost under a project key
59
+
60
+ Runtime evidence cannot prove:
61
+
62
+ - provider bill-of-record spend
63
+ - system ownership
64
+ - a confirmed AI system
65
+ - control effectiveness
66
+ - prompt or response content when content capture is off
67
+
68
+ Runtime rollups become `source_evidence_atoms` as pending key observations.
69
+ They stay corroborator evidence until later scanner binding and reviewer
70
+ confirmation work.