kestrel-feature-observability
Per-agent lifecycle observability emitter for Kestrel Sovereign agents.
Attaches an ObservabilityHook to the agent's hook system; every lifecycle
event is POSTed to the fleet host's observability store
(POST {KESTREL_OBSERVABILITY_URL}/api/host/observability/events). Prometheus
metrics emit through the SDK's shared registry, so a single /metrics scrape
stays coherent across the framework + every feature package.
This package is producer-only. The event store, query routes, and Console UI (LLM-call table + fleet swimlane) are owned by the fleet host feature — the single tenant-aware owner of the observability data plane.
Installation
uv pip install kestrel-feature-observability
For real Prometheus output:
uv pip install 'kestrel-feature-observability[metrics]'
The feature is auto-discovered by Kestrel Sovereign via the kestrel_sovereign.features entry point — install it alongside kestrel-sovereign and ObservabilityFeature registers itself at startup.
Emitter transport
The hook reads two frozen env vars (the same keys talon's emitter uses):
KESTREL_OBSERVABILITY_URL— the fleet host root. The hook POSTs to this URL plus the path/api/host/observability/events. When unset, the emit path is a no-op (the agent still runs; Prometheus counters still fire).KESTREL_OBSERVABILITY_KEY— sent as theX-API-Keyrequest header when set.
Delivery is lightweight and best-effort: an httpx.AsyncClient POST,
fire-and-forget with a short (~2s) timeout, all failures swallowed, no
buffering, no retry, no entities dependency. Each event payload carries
orchestrator/session_id/tool_name/lineage and friends; orchestrator is
the agent itself when self-driven, else null (rendered "Direct" by the fleet
store).
Privacy
The hook is observational — it never blocks, denies, or modifies. User-message content is not sent (only length); tool errors are truncated to 200 chars; exceptions in the hook are swallowed so they cannot affect agent operation.
Dependencies
kestrel-sovereign-sdk>=0.14.1,<1— baseFeature,Hook, and sharedmetricsmodulehttpx>=0.27.0— lightweight HTTP client for the emitter POST- Optional
[metrics]extra →kestrel-sovereign-sdk[metrics]→prometheus-client
No runtime dependency on kestrel-sovereign (or any entities/fleet package);
the hook talks to the fleet host purely over HTTP.
Development
uv pip install -e '.[test]'
uv run pytest
License
Apache-2.0
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kestrel_feature_observability-0.6.0.tar.gz.
File metadata
- Download URL: kestrel_feature_observability-0.6.0.tar.gz
- Upload date:
- Size: 10.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
753e1e90adca0ba308712666b179217e590c973db9e580550c9d943d1bb9d70e
|
|
| MD5 |
6c86d15213b5d0fe72d80df5a95c8b6d
|
|
| BLAKE2b-256 |
193a21d0ea7c8b0a9706a9303576a482e2ad69d78463fbd5e9bdf01d36a3e530
|
Provenance
The following attestation bundles were made for kestrel_feature_observability-0.6.0.tar.gz:
Publisher:
publish.yml on KestrelSovereignAI/kestrel-feature-observability
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kestrel_feature_observability-0.6.0.tar.gz -
Subject digest:
753e1e90adca0ba308712666b179217e590c973db9e580550c9d943d1bb9d70e - Sigstore transparency entry: 2170803590
- Sigstore integration time:
-
Permalink:
KestrelSovereignAI/kestrel-feature-observability@7d2bdf36c5112779e9955d3849aeae8e08a51a6c -
Branch / Tag:
refs/tags/v0.6.0 - Owner: https://github.com/KestrelSovereignAI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7d2bdf36c5112779e9955d3849aeae8e08a51a6c -
Trigger Event:
push
-
Statement type:
File details
Details for the file kestrel_feature_observability-0.6.0-py3-none-any.whl.
File metadata
- Download URL: kestrel_feature_observability-0.6.0-py3-none-any.whl
- Upload date:
- Size: 12.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8c7fdf16a693bec08cc238c4cc0231754e059be91ee0cc8ff985bb34043cb947
|
|
| MD5 |
e37f40778dfea4be026cb47fe49f065f
|
|
| BLAKE2b-256 |
5231ba5f4ce5958504254fe29e9d41db247a2464e99dde6532b1a2f02f613067
|
Provenance
The following attestation bundles were made for kestrel_feature_observability-0.6.0-py3-none-any.whl:
Publisher:
publish.yml on KestrelSovereignAI/kestrel-feature-observability
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kestrel_feature_observability-0.6.0-py3-none-any.whl -
Subject digest:
8c7fdf16a693bec08cc238c4cc0231754e059be91ee0cc8ff985bb34043cb947 - Sigstore transparency entry: 2170803662
- Sigstore integration time:
-
Permalink:
KestrelSovereignAI/kestrel-feature-observability@7d2bdf36c5112779e9955d3849aeae8e08a51a6c -
Branch / Tag:
refs/tags/v0.6.0 - Owner: https://github.com/KestrelSovereignAI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7d2bdf36c5112779e9955d3849aeae8e08a51a6c -
Trigger Event:
push
-
Statement type: