Hearth (hearth-ai)
An embeddable context engine that keeps an AI agent's prompt cache warm and proves it with measurements.
Prompt caching cuts LLM input cost and time-to-first-token (TTFT) by up to 90%, but agent loops routinely break provider caches on every turn: volatile timestamps prepended to system instructions, fluctuating tool definitions, non-deterministic JSON serialization, and uncompacted chat histories invalidate prefixes silently.
Hearth wraps your existing LLM client in-process, measures cache behavior, restores stable prefix layouts, protects against regressions in CI, and traces every cache break to its exact root cause.
Highlights
- Zero Required External Dependencies: Pure Python standard library implementation on Python 3.11+ (
tomlibackport for 3.10). - Sub-Millisecond Overhead: Adds < 2.0 ms per call at 50,000 tokens of context (measured p50: 0.66 ms, p99: 1.08 ms; claim C-06).
- Comprehensive Break Taxonomy: Identifies 15 distinct cache break causes and attributes fault honestly (never blames developers for provider cold starts, minimum-token thresholds, or TTL expirations; claim C-05).
- Proven Cost Savings: Demonstrates a 42.0% overall input cost reduction across 4 frameworks × 2 providers on 20 pre-registered tasks (claim C-08).
- Calibrated Offline Simulation: Includes
FakeProviderandCacheSimulatorpredicting per-session read share within 0.00 points MAE on held-out sessions (claim C-07). - One-Line Integration: Drop-in adapters for LangGraph, Pydantic AI, and the OpenAI Agents SDK (claim C-10).
Installation
pip install hearth-ai
See four cache failures without an API key. The prices are the simulator, not a provider bill.
hearth scenarios
hearth scenarios --html hearth-scenarios.html
On Amazon Bedrock the Chat Completions URL that answers is https://bedrock-runtime.us-east-1.amazonaws.com/openai/v1/chat/completions, and the gpt-oss-120b id is openai.gpt-oss-120b-1:0. On 2 Nov 2026 two identical 1,699-token prompts came back with no cached-token field. Optimize mode still moves a clock out of the system message. It does not invent a cache discount the provider did not report.
Optional provider and integration extras:
pip install "hearth-ai[anthropic,openai,gemini,langchain,pydantic-ai,openai-agents,otel]"
Operating Modes
Hearth operates in three explicit modes configured via hearth.wrap(client, mode=...):
1. observe Mode (Byte-Identical Passthrough)
Passes all requests to the underlying provider byte-for-byte with zero modifications (claim C-03). Records request fingerprints, traces, and exact token economics (read, write, uncached) to a local SQLite ledger (~/.hearth/ledger.sqlite) and optional JSONL traces.
import hearth
from anthropic import Anthropic
client = hearth.wrap(Anthropic(), mode="observe")
# Byte-identical request execution with transparent telemetry
response = client.messages.create(
model="claude-3-5-sonnet-20241022",
max_tokens=1024,
messages=[{"role": "user", "content": "Analyze system logs."}],
)
2. safe Mode (Content-Equivalent Stabilization)
Adds, removes, or modifies no prompt or tool text (claim C-04). Restores the first-seen tool order and injects cache breakpoints/metadata strictly matching provider rules (e.g. Anthropic cache_control breakpoints, OpenAI cache keys).
client = hearth.wrap(Anthropic(), mode="safe")
3. optimize Mode (Active Context Engineering)
Performs structured context layout optimizations:
- Volatile Relocation: Relocates dynamic timestamps and runtime identifiers from the static system prefix to the user turn tail, converting 0% cache hits into 100% prefix reuse on subsequent turns.
- Large Output Offloading: Stores tool outputs exceeding 2,000 tokens in a local blob store and passes a deterministic handle stub, keeping the prefix stable when frameworks resend full tool outputs.
- Planned History Compaction: Compares the one-time summary rewrite penalty against expected remaining turns ($k^* \approx 8.0$ calls) to compact history only when it yields net cost savings (claim C-09).
client = hearth.wrap(Anthropic(), mode="optimize")
Framework Integrations
Hearth integrates into modern agent frameworks with minimal setup (claim C-10):
LangGraph / LangChain
from hearth.integrations.langgraph import HearthMiddleware
# Intercept and stabilize state inside your graph node
middleware = HearthMiddleware(mode="safe")
processed_state = middleware(state)
Pydantic AI
from anthropic import Anthropic
from pydantic_ai.models.anthropic import AnthropicModel
from hearth.integrations.pydantic_ai import wrap_pydantic_ai_client
# Wrap client before passing to Pydantic AI model
wrapped_client = wrap_pydantic_ai_client(Anthropic(), mode="optimize")
model = AnthropicModel("claude-3-5-sonnet-20241022", anthropic_client=wrapped_client)
OpenAI Agents SDK
from openai import OpenAI
from hearth.integrations.openai_agents import set_default_openai_client
# Set wrapped client as default for all Agents SDK workflows
set_default_openai_client(OpenAI())
CLI & Tooling
hearth report
Inspect aggregated cache performance, read share, and exact input dollar savings for a session from the SQLite ledger:
hearth report --session "session-prod-worker-1"
hearth diagnose
Analyze root causes of cache breaks in a JSONL trace file:
hearth diagnose ./traces/session.jsonl
hearth replay
Replay recorded JSONL traces through the deterministic cache simulator under observe, safe, and optimize policies:
hearth replay ./traces/session.jsonl
hearth guard
Protect against prompt cache regressions in CI test suites. Fails if a code commit introduces user-caused prefix breaks:
hearth guard --baseline ./traces/baseline.jsonl --run "pytest tests/agent/"
hearth bench --report
Reproduce the frozen Cache Efficiency Report v1 across all 20 pre-registered tasks:
hearth bench --report
Core Invariants
Hearth strictly enforces 13 formal invariants verified on every commit:
INV-01(Byte-Identical Passthrough):observemode sends byte-identical requests.INV-02(Content Equivalence):safemode modifies no message or tool text.INV-03(Deterministic Fingerprints): Message SHA-256 fingerprints are deterministic across processes and Python versions.INV-04(Append-Only History): No already-sent message is mutated except via explicit compaction events.INV-05(Action Reporting): Every layout relocation and ordering restoration is recorded and reported.INV-06(Exact Token Accounting):read + write + uncached == total_inputstrictly reconciles for Anthropic, OpenAI, and Gemini.INV-07(Fail-Open): Any internal error passes original requests through unmodified and recordshearth_error.INV-08(Zero Network Exfiltration): No outbound network calls except to wrapped LLM providers and optional OTLP endpoints.INV-09(Privacy by Default): Prompt content is never stored in ledgers, spans, or logs (record=Truerequired for debug traces).INV-10(Honest Attribution): TTL expiry, provider cold-starts, and below-minimum length are never attributed as user breaks.INV-11(Planner Limits): Hard limit of 4 breakpoints per request; 1-hour entries precede 5-minute entries.INV-12(Memory Integrity): Facts are superseded temporally (valid_to,superseded_by), never overwritten; mid-session writes never mutate the active session prefix cache.INV-13(Exact Financial Arithmetic): All monetary costs and ratios use PythonDecimal, never float.
License
Apache-2.0. See LICENSE for details.
Metadata
Release files for hearth-ai 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| hearth_ai-0.1.1.tar.gz | 301.4 kB | With provenance | Details for hearth_ai-0.1.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| hearth_ai-0.1.1-py3-none-any.whl | Python 3 | none | any | Details for hearth_ai-0.1.1-py3-none-any.whl |
Total release size: 368.6 kB
Release files / hearth_ai-0.1.1.tar.gz
| Download URL | hearth_ai-0.1.1.tar.gz |
|---|---|
| Size | 301.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
36f20ee598f6f38fc0f4985dd90d688fd5daa43d009a12b88a7f2db0ec34b113
|
|
BLAKE2b-256 checksum How to use checksums |
c807cb6b7905d8e67fb30257ece40cdc6a87be56af112cfe0407a24f783e3f7b
|
| 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 Nov 2, 2026.
Transparency logRelease files / hearth_ai-0.1.1-py3-none-any.whl
| Download URL | hearth_ai-0.1.1-py3-none-any.whl |
|---|---|
| Size | 67.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8e9056efec18b31abc51eab98bed8793ccffc9163ebd1ec11d55b8184381b2cd
|
|
BLAKE2b-256 checksum How to use checksums |
99b05080d7df673617255bed956a1fe959f4653a6b4862feffa1373a14d7b03a
|
| 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 Nov 2, 2026.
Transparency logSecurity for hearth-ai 0.1.1
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.
Attestation for hearth_ai-0.1.1.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 Nov 2, 2026.
Transparency logA 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.