Changelog
0.4.0 - 2026-03-23
Changes in this draft cover the delta from 0.2.0-rc2 (6ad36d5e171c599b078624c9ed4cd1c54e3c1b4a) through aba457cab3813078bfedb65a7d819f48d86974b8.
Summary
- Hardened credential, IPEX, and exchange flows by fixing deletion/index cleanup, first-grant artifact delivery, admit/grant parsing, escrowed credential reads, and outbound EXN indexing.
- Improved runtime behavior with cleaner shutdown semantics, better logging, optional request tracing, and log-level propagation into the underlying KERI stack.
- Refactored startup and configuration handling to improve testability, temp-mode correctness, and agency/agent config injection.
- Expanded and tightened the OpenAPI contract with generated schemas, typed operation models, and more accurate endpoint response definitions.
- Improved response-shape compatibility for identifiers, key-state records, multisig EXN payloads, and mixed client request formats.
- Modernized packaging and delivery by moving to
uv, refreshing CI and Docker workflows, and upgrading KERI/KERIA runtime dependencies.
Agent, credential, and exchange behavior
- Deleted credentials now also remove KERIA-specific search indexes, so filtered queries no longer return stale deleted records.
- IPEX grant delivery now includes the agent and controller KELs required to validate the first presented credential, fixing the long-standing first/double-present failure mode.
- Refactored IPEX grant processing around a dedicated
GrantDoerthat gathers dependent KEL, TEL, and chained-credential artifacts into one debuggable flow. - IPEX admit/grant/apply/offer/agree handling now uses the agent parser consistently, preventing crashes such as the
NoneType ... kedadmit failure. - Peer exchange parsing now indexes outbound EXN messages so sent exchanges are visible through local exchange indexes.
GET /credentials/{said}now returns404 Not Foundfor escrowed or unsaved credentials instead of surfacing as500, including on the CESR path.- Credential issuance now accepts either
rior legacyiiregistry references and returns a clear400when neither is present. - Identifier rename validation now rejects duplicate target names instead of allowing one AID rename to overwrite another.
Runtime, logging, and operability
- Reworked shutdown handling so agency shutdown follows the HIO doer lifecycle, using shutdown flags and
KeyboardInterruptinstead of forcingDoist.exit(). - Improved logs with a truncated formatter, clearer habitat context, and full identifier logging for multi-agent runs.
- Disabled HTTP request logging by default and added a
--logrequestsCLI switch for opt-in tracing. - Propagated the configured KERIA log level into the underlying KERI logger so verbosity stays aligned across both layers.
- Added a maintainer-facing
scripts/keria.jsonconfig and aMAINTAINERS.mdfile.
Configuration, startup, and testability
- Refactored server startup so agency creation and HTTP server wiring are split into smaller reusable functions.
- Made agency configuration more testable by allowing an external
Configerto be injected and by merging per-agent config with configured controller, introduction, and data OOBI lists. - Fixed temporary-mode handling so config files and LMDB state respect
tempinstead of partially writing persistent test data.
API descriptions and generated schemas
- Added reusable OpenAPI-generation utilities and shifted more schema definitions to generated type-hint-driven models.
- Expanded OpenAPI coverage for credentialing endpoints, including credential, registry, credential-state, anchoring-event, and cloned-credential response shapes.
- Expanded OpenAPI coverage for identifier and agent endpoints, including typed responses for agent state, identifier listings, identifier details, key state, key event logs, OOBIs, and agent config.
- Expanded OpenAPI coverage for delegation, grouping, IPEX, notification, and peer exchange endpoints, including typed multisig EXN payloads and long-running operation responses.
- Reworked long-running operation schemas so OpenAPI distinguishes operation families such as OOBI, query, witness, delegation, end-role, and registry instead of exposing one loose generic object.
- Added and refined operation IDs, response payload schemas, and component references across the REST surface to support client generation and stricter schema validation.
Type and response-shape compatibility
- Fixed
KeyStateRecordtyping and OpenAPI shape forktandnt, allowing threshold fields to be represented as either strings or arrays. - Split identifier response modeling into base and full
HabStatevariants so list and detail endpoints can describe different field guarantees accurately. - Relaxed
HabStateoptionality forstate,transferable, andwindexeswhere those fields are not always present. - Made
ExnMultisighelper fields such asgroupName,memberName, andsenderoptional in generated schemas instead of incorrectly requiring them.
Dependency, packaging, and CI updates
- Upgraded KERI from
1.2.6to1.2.7, including the HIO-compatible doer signature updates required by the newer runtime. - Upgraded again to KERI
1.2.12and bumped KERIA to0.4.0. - Removed the explicit setuptools dependency and then migrated packaging from
setup.pyandrequirements.txttopyproject.toml,uv, and a checked-inuv.lock. - Added
rufflinting and formatting checks to the repo and CI workflow. - Updated the Makefile with
uv-based install, test, coverage, lint, and format targets. - Updated the Docker build to run from the
uv-managed environment and added a Docker validation step to CI. - Adjusted CI/runtime dependencies to pin
uv, downgradelmdbfor Docker compatibility, and move GitHub Actions macOS testing tomacos-15.
0.3.0 - 2025-05-28
- Improved runtime logging with clearer formatting plus habitat name and prefix context in log messages.
- Simplified graceful shutdown behavior and related runtime lifecycle handling.
- Upgraded KERI to
1.2.6and finalized the0.3.0version bump.
0.2.0-rc4 - 2025-05-28
- Fixed first-time IPEX grant/present flows by sending the agent and controller KELs needed by recipients to validate the credential chain.
- Fixed credential deletion cleanup so KERIA-specific search indexes are removed with the credential record.
- Removed the explicit setuptools dependency.
0.2.0-rc2 and Older Releases
0.2.0-rc2 - 2025-01-24
- Added an API for creating new location schemes.
- Fixed basic boot passwords to allow colon characters.
- Fixed delegated multisig rotation by always routing Signify group messages through the agent proxy.
- Upgraded KERI to
1.2.4.
0.2.0-rc1 - 2025-01-13
- Added graceful shutdown handling for agents and the KERIA process, including
SIGTERMsupport and the new serving/shutdown path. - Returned
400for invalid end-role signatures while preserving the multisig-requiredUnverifiedReplyErrorbehavior. - Refreshed release docs, Docker, CI, and
keria.jsondocumentation for the0.2.0release candidates.
0.2.0 / 0.2.0-dev6 - 2024-12-12
- Added experimental basic-auth protection for the boot endpoint.
- Added environment-variable-based server configuration.
- Exposed inception timestamps in identifier/hab info.
- Added credential deletion support and explicit
404behavior after deletion. - Added multi-arch Docker publishing support.
0.2.0-dev5 through 0.2.0-dev0 - 2024
- Expanded multisig and delegation support with delegation approval, delegated rotation fixes, multisig join/rotation fixes, submit/witness-receipt improvements, and better SignifyTS compatibility.
- Expanded IPEX and credential flows with apply/offer/agree endpoints, multisig IPEX support, direct credential verification from
(acdc, iss), registry read endpoints, and better recipient routing. - Improved API usability with prefix-based identifier/addressing support, agent-config retrieval,
409on already-booted agents, idle-agent release, and clearer long-running operation IDs and status handling. - Added more REST and OpenAPI documentation, plus broader test coverage around delegation, multisig, witness receipts, revocation, and credential workflows.
- Kept pace with KERI/KERIpy, Falcon, Docker, and CI changes as the stack moved through the
1.2.xtransition.
0.1.3 and Earlier - 2024
- Established the early credential-registry lifecycle, including registry rename/join support, duplicate-name protection, and fixes for partially committed registry visibility.
- Added the first IPEX apply/offer/agree support and tightened early long-running-operation handling.
- Continued aligning with upstream KERI/KERIpy and Python runtime changes while filling in foundational tests and release automation.