Skip to main content

nthlayer-common

Shared utilities for the NthLayer ecosystem. Provides the unified LLM interface, provider infrastructure, identity resolution, and data models used by all ecosystem components.

Install

pip install nthlayer-common

LLM Interface

Model-agnostic — one function, any provider. No LiteLLM, no SDKs. Direct HTTP calls via httpx.

from nthlayer_common import llm_call

result = llm_call(
    system="You are a triage agent...",
    user="Evaluate this incident...",
)
print(result.text)

Provider support

Two API formats cover the entire market:

Provider Model format API
Anthropic anthropic/claude-sonnet-4-20250514 Messages API
OpenAI openai/gpt-4o Chat Completions
Ollama ollama/llama3.1 Chat Completions
Azure azure/my-deployment Chat Completions
Together together/meta-llama/Llama-3-70b Chat Completions
Groq groq/llama-3.1-70b-versatile Chat Completions
Mistral mistral/mistral-large-latest Chat Completions
vLLM vllm/my-model Chat Completions
LM Studio lmstudio/my-model Chat Completions

Configuration

NTHLAYER_MODEL="anthropic/claude-sonnet-4-20250514"   # default
NTHLAYER_LLM_TIMEOUT="60"                              # seconds
ANTHROPIC_API_KEY="sk-ant-..."                         # for anthropic/* models
OPENAI_API_KEY="sk-..."                                # for openai/*, together/*, groq/*, etc.
OPENAI_API_BASE="http://localhost:11434/v1"            # override endpoint URL

Retry & resilience

Built-in retry with exponential backoff and jitter for transient errors (429, 502, 503, timeouts). Respects Retry-After headers. Permanent errors (400, 401, 403) fail immediately. Default: 3 retries.

Provider Infrastructure

Shared async providers for infrastructure services, migrated from nthlayer-generate so all ecosystem components use the same clients:

  • PrometheusProvider — query, query_range, get_sli_value, health_check
  • GrafanaProvider — dashboard CRUD, datasource management, folder operations
  • PagerDutyProvider — service, team, and escalation policy management
  • MimirRulerProvider — Prometheus rule push to Grafana Mimir
  • ProviderRegistry — register/create/list providers by name

Identity Resolution

Cross-provider service name normalization and ownership attribution:

  • IdentityResolver — 7-strategy resolution (explicit mapping → external ID → exact → alias → normalized → fuzzy → attribute correlation)
  • normalize_service_name() — strips env suffixes, version tags, Java package prefixes, type suffixes
  • OwnershipResolver — queries multiple ownership sources concurrently, selects highest-confidence signal
  • Ownership providers — Backstage, Kubernetes, PagerDuty (live); CODEOWNERS, Declared (static, in nthlayer)

HTTP Clients

Shared HTTP client infrastructure with per-instance retry and circuit breaker:

  • BaseHTTPClient — httpx-based with configurable retry (tenacity) + circuit breaker
  • CortexClient — Cortex API client
  • PagerDutyClient — PagerDuty REST API client
  • SlackAPIClient — Slack Web API (token-based, post_message)

Slack Notifications

  • SlackNotifier — Block Kit messages via incoming webhook (fail-open, never blocks pipelines)
  • SlackWebClient — Web API for interactive messages (buttons, message updates, signature verification)

Error Handling

Unified error hierarchy for the entire ecosystem:

  • ExitCode — SUCCESS=0, WARNING=1, BLOCKED=2, CONFIG_ERROR=10, PROVIDER_ERROR=11, VALIDATION_ERROR=12
  • NthLayerError → ConfigurationError, ProviderError, ValidationError, BlockedError
  • @main_with_error_handling() — decorator for CLI main functions with automatic exit code conversion

Tier Definitions

Single source of truth for service tier configuration:

  • Tier — CRITICAL, STANDARD, LOW (with legacy aliases tier-1/2/3)
  • TIER_CONFIGS — availability targets, latency thresholds, error budget warning/blocking percentages, PagerDuty urgency
  • normalize_tier(), get_tier_config(), get_slo_targets()

Data Models

Shared Pydantic/dataclass models used across the ecosystem:

  • SLO models — SLO, ErrorBudget, SLOStatus, TimeWindow
  • Dependency models — DependencyGraph, DependencyType, BlastRadiusResult
  • Domain models — Run, Finding, Team, Service
  • Gate models — GateResult, GatePolicy, DeploymentGateCheck

Prompt Loader

Shared YAML prompt loader for agentic components:

  • load_prompt(path) — reads YAML, renders schema block into system prompt
  • render_user_prompt(template, **kwargs) — simple {{ variable }} interpolation
  • validate_response(data, schema) — validates model output against expected schema

Typed package

Ships with a py.typed marker (PEP 561) — mypy and pyright use inline type annotations directly without requiring a separate stub package.

License

Apache 2.0

Metadata

Release files for nthlayer-common 5.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nthlayer-common 5.3.0
File Size Uploaded Provenance
nthlayer_common-5.3.0.tar.gz 302.8 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for nthlayer-common 5.3.0
File Interpreter ABI Platform
nthlayer_common-5.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 505.6 kB

Release files / nthlayer_common-5.3.0.tar.gz

Download URL nthlayer_common-5.3.0.tar.gz
Size 302.8 kB
Tags Source
SHA-256 checksum
How to use checksums
48f4209b61e9a2ba1015b6170b3076e784b82b2e8be805c6b50e7eb7a1661a5e
BLAKE2b-256 checksum
How to use checksums
5a820df32b30e518606c54259de509bf2dc66d9d347357084f26a1c58c1006d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Release files / nthlayer_common-5.3.0-py3-none-any.whl

Download URL nthlayer_common-5.3.0-py3-none-any.whl
Size 202.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ba8ddc5674fae9de0a83c9d0c014cbe628b73ffcdf2237a531ae814b0e2856ce
BLAKE2b-256 checksum
How to use checksums
0877a75bafd55386032e653c2870cadb7339241304ac9f1292385950d20862c0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

Security for nthlayer-common 5.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for nthlayer_common-5.3.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page