kestrel-feature-observability
The single observability package for Kestrel Sovereign — one repo, one version, one source of truth for the whole observability domain — with two roles selected by the two entry-point groups (package boundaries need not match process boundaries):
- Base install (
pip install kestrel-feature-observability) — the lightweight per-agent emitterFeature(thekestrel_sovereign.featuresentry point). It attaches anObservabilityHookto 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). Noentities, no DB — this is what every agent gets. Prometheus metrics emit through the SDK's shared registry, so a single/metricsscrape stays coherent across the framework + every feature package. - Host extra (
kestrel-feature-observability[fleet]) — pullskestrel-feature-entitiesand enables theFleetObservabilityHostFeature(tenant-scoped event store + query routes + orchestrator swimlane; thekestrel_sovereign.host_featuresentry point). The HostFeature lives in thekestrel_feature_observability.fleetsubpackage and its import/entry point is guarded — on a base install (extra absent) it resolves toNoneand the host skips it, so the emitter path never importsentities.
This package supersedes the separate
kestrel-feature-observability-fleetpackage, which is deprecated: its HostFeature, store, and swimlane now live here behind the[fleet]extra.
Installation
uv pip install kestrel-feature-observability
For real Prometheus output:
uv pip install 'kestrel-feature-observability[metrics]'
For the fleet host role (event store + swimlane):
uv pip install 'kestrel-feature-observability[fleet]'
Both features are auto-discovered by Kestrel Sovereign via their entry-point
groups — install the base package alongside kestrel-sovereign and
ObservabilityFeature registers itself into every agent; install with [fleet]
on the host and FleetObservabilityHostFeature registers at host scope.
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 - Optional
[fleet]extra →kestrel-sovereign-sdk>=0.29.2,<0.30(the HostFeature contract) +kestrel-feature-entities(the tenant-scoped event store, pulling SQLAlchemy 2.0 async + Alembic). Only this extra pullsentities.
The base emitter has no runtime dependency on kestrel-sovereign (or any
entities/fleet package); the hook talks to the fleet host purely over HTTP.
The store's heavy dependencies live entirely behind the [fleet] extra, so
agents stay lightweight.
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.7.0.tar.gz.
File metadata
- Download URL: kestrel_feature_observability-0.7.0.tar.gz
- Upload date:
- Size: 36.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 |
894e7afb49bc12dd15b325f4275cc9e23667d009d617206f1dff2e58fc3ee285
|
|
| MD5 |
b3058e0a80d9da82a4f53edf5a3b05a6
|
|
| BLAKE2b-256 |
35824f38a66a1f908ed77e63842266afdfd20aa9f19f6485bc935681a824c05a
|
Provenance
The following attestation bundles were made for kestrel_feature_observability-0.7.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.7.0.tar.gz -
Subject digest:
894e7afb49bc12dd15b325f4275cc9e23667d009d617206f1dff2e58fc3ee285 - Sigstore transparency entry: 2173193516
- Sigstore integration time:
-
Permalink:
KestrelSovereignAI/kestrel-feature-observability@d84cb4953dcf893b3f88878d700728f23f3da880 -
Branch / Tag:
refs/tags/v0.7.0 - Owner: https://github.com/KestrelSovereignAI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d84cb4953dcf893b3f88878d700728f23f3da880 -
Trigger Event:
push
-
Statement type:
File details
Details for the file kestrel_feature_observability-0.7.0-py3-none-any.whl.
File metadata
- Download URL: kestrel_feature_observability-0.7.0-py3-none-any.whl
- Upload date:
- Size: 44.1 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 |
24cd33465d4035dada13bafaf04cfe77643a3003357a04a63319083592f4f94d
|
|
| MD5 |
cbbd52a39117309eee8d078f73b48859
|
|
| BLAKE2b-256 |
1154dc64e1a7807f2b0aad7a2c1a340565a649af767bd81ada5aef2e3308587d
|
Provenance
The following attestation bundles were made for kestrel_feature_observability-0.7.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.7.0-py3-none-any.whl -
Subject digest:
24cd33465d4035dada13bafaf04cfe77643a3003357a04a63319083592f4f94d - Sigstore transparency entry: 2173193530
- Sigstore integration time:
-
Permalink:
KestrelSovereignAI/kestrel-feature-observability@d84cb4953dcf893b3f88878d700728f23f3da880 -
Branch / Tag:
refs/tags/v0.7.0 - Owner: https://github.com/KestrelSovereignAI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@d84cb4953dcf893b3f88878d700728f23f3da880 -
Trigger Event:
push
-
Statement type: