On-device ML inference monitoring for Python. Tracks latency, errors, and model metadata without any code modifications.
Pre-release: The API is unstable and may change between versions. Semantic versioning will apply from the first stable release.
uv add wildedge-sdkDrop wildedge run in front of your existing command. WildEdge instruments the runtime before your code starts. No SDK calls required in user code.
WILDEDGE_DSN="https://<secret>@ingest.wildedge.dev/<key>" \
wildedge run --integrations timm -- python app.pyValidate your environment before deploying. --send-test-event proves the
whole pipeline end to end by sending one span event and reporting the ingest
response (exit codes: 0 pass, 1 config failure, 2 connectivity failure):
wildedge doctor --integrations all --send-test-eventUseful flags:
| Flag | Description |
|---|---|
--integrations |
Comma-separated list of integrations to activate (or all) |
--hubs |
Hub trackers to activate: huggingface, torchhub |
--print-startup-report |
Print per-integration status at startup |
--strict-integrations |
Exit (code 121) if a requested integration can't be instrumented |
--strict |
Exit (120 config, 122 internal) instead of running untracked when bootstrap fails |
--attachments |
Enable opt-in raw input/output attachment upload |
--no-propagate |
Don't pass WildEdge env vars to child processes |
import wildedge
wildedge.init(integrations=["transformers"]) # optional under `wildedge run`
# models loaded after this point are tracked automatically; add traces,
# spans and LLM API calls anywhere, no client instance to pass around:
with wildedge.trace(run_id="run-1"):
with wildedge.span(kind="agent_step", name="plan"):
...
with wildedge.llm_api(model="openai/gpt-4o-mini", provider="openrouter") as call:
call.response(data) # LLM calls made with plain HTTP clientsOne client per process: wildedge run, init(), and the module-level calls
all share it, and init() without dsn reuses whatever already exists.
Without a DSN everything is a silent no-op, so dev and CI need no
configuration. See Deployment
for the full contract.
On-device
| Integration | Example |
|---|---|
transformers |
transformers_example.py |
mlx |
mlx_example.py |
timm |
timm_example.py |
gguf |
gguf_example.py |
onnx |
onnx_example.py |
ultralytics |
- |
tensorflow |
tensorflow_example.py |
torch |
pytorch_example.py |
keras |
keras_example.py |
Remote models
| Integration | Example |
|---|---|
anthropic |
anthropic_example.py |
openai |
openai_example.py |
Calling an LLM API with a plain HTTP client instead of these libraries? Use
wildedge.llm_api():
llm_api_example.py.
Hub tracking
Pass hubs= to track model download provenance. Hubs are framework-agnostic and can be combined with any integration.
| Hub | Tracks |
|---|---|
huggingface |
Downloads via huggingface_hub |
torchhub |
Downloads via torch.hub |
For unsupported frameworks, see Manual tracking.
| Parameter | Default | Description |
|---|---|---|
dsn |
- | https://<secret>@ingest.wildedge.dev/<key> (or WILDEDGE_DSN). If unset, the client is a no-op. |
app_version |
None |
Your app's version string |
app_identity |
<project_key> |
Namespace for offline persistence. Set per-app in multi-process workloads (or WILDEDGE_APP_IDENTITY) |
enable_offline_persistence |
true |
Persist unsent events to disk and replay on restart |
sampling_interval_s |
30.0 |
Seconds between background hardware snapshots. Set to 0 or None to disable (or WILDEDGE_SAMPLING_INTERVAL_S) |
attachments_enabled |
false |
Opt-in upload of raw inference inputs/outputs (or WILDEDGE_ATTACHMENTS_ENABLED). See Attachments |
For advanced options (batching, queue tuning, dead-letter storage, attachments), see Configuration.
| Name | Link |
|---|---|
| outfitstudio.app | https://outfitstudio.app/ |
| agntr | github.com/pmaciolek/agntr |
| demo-app | github.com/wild-edge/demo-app |
| (your project here) | - |
Using WildEdge in your project? Open a PR to add it to the list.
By default the SDK transmits only anonymized telemetry, never raw model inputs
or outputs. The one exception is opt-in attachments
(attachments_enabled), which upload raw bytes you explicitly pass in.
Report security and privacy issues to: support@wildedge.dev
Each GitHub release ships llms.txt and llms-full.txt: the full
documentation for that exact version in one file, built for AI assistants.