Blog /

Introducing Cendor: production plumbing for LLM applications

Seven composable libraries and a governed agent SDK for the layer beneath your agent framework — context, cost, guardrails, testing, and audit, in Python and TypeScript. Local-first, Apache-2.0.

You shipped an LLM agent. Then production happened: prompts overflow the context window, cost is a black box, every test hits a paid non-deterministic API, and when something goes wrong there’s no record of what the agent saw, did, or refused. Agent frameworks decide what your agent does — they don’t handle these cross-cutting, under-the-call concerns.

Cendor does. It’s one stack with two doors, sharing the flat cendor.* / @cendor/* namespace across Python and TypeScript.

Door one — the libraries

Seven small, composable libraries that plug in beneath LangChain, LlamaIndex, or any SDK:

  • contextkit — assemble context to a token budget, with a kept/shrunk/dropped receipt.
  • squeeze — reversible, content-aware compression.
  • tokenguard — pre-flight budget caps and per-feature/user cost attribution.
  • guardrails — a deterministic gate at four stages: block, redact, or flag before the call.
  • cassette — record a whole run once, replay it forever offline.
  • acttrace — a tamper-evident, offline-verifiable audit chain.

…all on a tiny shared core. You wrap your client once with instrument(); every tool subscribes to one in-process event bus — none monkey-patches your client, none imports another.

pip install cendor-libs        # or: npm i @cendor/libs

Door two — the agent SDK

cendor-sdk is a governed, provider-agnostic agent SDK where budgets, tamper-evident audit, PII redaction, and record/replay testing are the foundation, not plugins — a governed agent in about 10 lines, built on the seven libraries so you can always drop down to them.

pip install "cendor-sdk[openai,anthropic]"    # or: npm i @cendor/sdk

Honest numbers

Every claim is backed by the reproducible benchmark suite — offline, no network, no API keys: uv run python benchmarks/run_all.py.

  • 0% token-count error vs the real tokenizer (OpenAI, with tiktoken as a required dependency) — exact, not estimated.
  • 97% smaller logs — compressed reversibly, restored byte-for-byte.
  • ~15 µs instrument() overhead per call (bus emit + usage extraction + Decimal pricing).
  • 1 byte — a single edited byte breaks the audit chain and verify() fails.
  • Money is always Decimal / decimal.js, never a float.

acttrace produces evidence to support a compliance case — it is not a compliance guarantee, and not legal advice.

Get started

Local-first. No servers. Apache-2.0. Two doors, one honest stack.