# Changelog

**Version history for the Kyvvu platform.**

For full release notes and older versions, see [GitHub Releases](https://github.com/Kyvvu/platform/releases).

***

## v0.13.0 — Manifests (2026-05-14)

### Platform

* **Manifests**: YAML policy files in GitHub repos replace server-side policy templates
* **Assignments**: Assign manifests to agents with per-agent policy materialization and risk filtering
* **Repos**: Connect GitHub repos (public or private) with encrypted token storage
* **Dashboard restyle**: Sidebar navigation (6 tabs), Settings page with sub-tabs (API Keys, Platform Events, Reports, Organization, Members)
* **Dashboard overview**: 4 stat cards, recent incidents table, recent activity feed
* **Agents page**: simplified 5-column table, last policy fetch, expandable row with assigned manifests, view policies
* **Repo delete protection**: 409 if active assignments exist
* **Policy unique constraint**: includes agent\_id to allow same manifest on multiple agents
* **Hash chain validation**: re-enabled in dashboard via `verify_either_auth`

### CLI

* `kyvvu list-manifests` — list available manifests from connected repos
* `kyvvu assign-manifest` — assign a manifest to an agent
* `kyvvu list-assignments` — list manifest assignments
* `kyvvu init` simplified — pure scaffolding, no auth required, no policy application
* `kyvvu list-policies` — new Source column showing manifest origin

### Removed

* Policy template endpoints (`/api/v1/policy-templates/*`)
* Templates and Policies dashboard tabs
* Default seeded policies (replaced by manifest assignment)
* `TemplateLoader`, template YAML files, template router, 97 template tests

***

## v0.11.0 (2026-04-29)

### Engine

* 26 built-in rule functions across six categories (field, path, count, classification, content, flow).
* Compound rules: `all_of`, `any_of`, `not` with unlimited nesting.
* `KyvvuRunner` with TTL-based policy fetch, incident webhooks, and log flush.
* `kyvvu serve` — local HTTP server for non-Python agents.
* Performance: p99 < 300 us with 100 policies and 50-step history.
* `explain()` method for human-readable evaluation traces.
* `sweep_stale_tasks()` for abandoned task cleanup.
* Payload redaction (`KV_LOG_PAYLOADS=metadata_only`).

### SDK

* `@kv.step` decorator with sync and async support.
* `KyvvuLangChainHandler` for LangChain and LangGraph.
* YAML behaviour templates with first-match-wins evaluation and deep-merge.
* `FrameworkAdapter` base class for custom integrations.
* Programmatic task API: `start_task()`, `end_task()`, `error_task()`.
* `ContextVar`-based concurrent task tracking.
* CLI: `kyvvu register`, `login`, `logout`, `whoami`, `init`, `serve`, `list-agents`, `list-policies`.

### API

* Policy templates with YAML definitions and apply/remove API.
* OWASP Top 10 for Agentic Applications default template (8 policies).
* Organization-scoped data isolation.
* Incident lifecycle: open / active / resolved / ignored.
* Hash chain for tamper-evident log ingestion.
* Registration cap with waitlisting.
* `declared_tools` field on agent registration.
* Hosted engine evaluation endpoint (`POST /api/v1/engine/evaluate`).
* Audit report generation (PDF, XML).

### Dashboard

* Policy management with dynamic forms from rule schemas.
* Template application UI.
* Incident triage workflow.
* Log viewer with hash chain validation.
* Organization member management.

***

## Next steps

* [Licensing](/reference/licensing.md) — license structure
* [Installation](/getting-started/installation.md) — get started


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.kyvvu.com/reference/changelog.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
