RagLeap has two new releases focused on an important part of building reliable AI systems: understanding what agents do and improving how they retrieve information.

  • ragleap-core v0.13.1 introduces structured audit log lines for agent actions.
  • ragleap-memory 0.3.0 adds optional vector and hybrid search using an embedder function supplied by the developer.

Both releases are open-source and designed for self-hosted environments.

1. RagLeap Core v0.13.1: Structured Audit Logs

AI agents can propose and execute actions across different channels. As these systems become more capable, understanding what happened during an action becomes increasingly important.

RagLeap Core v0.13.1 introduces structured JSON audit log lines through the ragleap.audit logger.

Every supported agent action writes an audit line beginning with AUDIT.

Events covered

The new audit events include:

  • action_proposed
  • action_executed
  • action_error
  • action_rejected
  • action_skipped
  • action_forced_approval

What does an audit line contain?

Each event includes structured information such as:

  • UTC timestamp
  • Action type
  • Channel and agent role
  • Target, limited to 200 characters
  • Approval or rejection details
  • An action_id connecting a proposal to its decision
  • SHA-256 hashes of the content and result

An important privacy detail: The actual content text is not written into these audit lines. This makes it possible for operators to retain structured action records without placing the underlying text in this particular log output.

The lines can also be collected and retained using an external log shipper.

To disable structured audit log lines:

AUDIT_LOG_LINES=false

Upgrade impact

This is a small application change:

  • No database schema change
  • No new API route
  • No new dependency
  • Rebuild and restart the application

There are also important limitations. GET reads, chat routes, per-step agent-run events, approved-action send failures, and database-table retention or purge controls are not covered yet.

Audit logs alone do not make an installation compliant with any law or security standard. Log retention depends on the operator's infrastructure and configuration.

Release: https://github.com/ragleap/ragleap-core/releases/tag/v0.13.1

2. ragleap-memory 0.3.0: Optional Vector and Hybrid Search

The second release focuses on memory retrieval.

Ragleap Memory 0.3.0 adds vector and hybrid search while keeping keyword search as the default.

One design decision is particularly important: the library does not include provider-specific embedding code, API keys, or network access.

Developers supply their own embedder function.

This gives applications control over where embedding requests go and which embedding implementation they use.

New search modes

The library supports three search modes:

  • keyword — the default and existing search behaviour.
  • vector — cosine similarity over stored vectors.
  • hybrid — combines keyword and vector results using reciprocal rank fusion.

Example:

results = store.search( "relevant information", mode="hybrid", query_vector=query_vector, ) 

The exact embedder and vector-generation workflow are controlled by the application.

Batch embedding with control

The new embed_pending() method allows developers to generate vectors for entries that do not have them.

It supports:

  • Scope selection
  • Batch limits
  • Dry-run mode
  • Replacing stale vectors

A useful safety detail: add() never calls the embedder automatically. Embedding is an explicit operation.

With dry_run=True, developers can inspect what would be sent without actually sending it.

Per-tenant embedding quotas

Version 0.3.0 introduces a daily embedder-token cap per tenant.

The quota is checked before each embedder call. If a batch exceeds the remaining allowance, only entries that fit are embedded. If none fit, QuotaExceededError is raised before the embedder function is called.

The library also introduces EmbedderError for failed or unusable embedder responses. Its error message does not contain the original text or vectors, and the failed batch is not stored.

Database migration: Read before upgrading

This release introduces schema version 3.

Databases created with versions 0.1.0 or 0.2.0 are migrated in place on first open, within one transaction.

Back up your database before upgrading.

After migration, the database cannot be opened by version 0.2.0 or earlier.

Other changes include vector cleanup when entries are forgotten, erased, or expired, along with new usage counters for embedded tokens and embedding calls.

Security and limitations

There are important limitations developers should understand:

  • Stored vectors are currently unencrypted and may reveal information about the original text.
  • Text sent to an embedder leaves the process wherever that embedder sends it.
  • Vector search scans at most max_vector_candidates eligible entries.
  • Retrieval quality depends on the selected embedder and has not yet been measured.
  • No independent security review has been completed.

These limitations are documented in the library's threat model.

Release: https://github.com/ragleap/ragleap-core/releases/tag/ragleap-memory-v0.3.0

3. Testing and Verification

Testing and release verification were important parts of ragleap-memory 0.3.0.

The reported verification results include:

Verification Result
CI checks for PR #1284 52 passed
Memory tests on VPS 472 passed
Sandbox tests on Python 3.12.3 472 passed
Sandbox tests on Python 3.10.20 472 passed
Mutation testing 177/177 mutations killed on both sandbox versions

The published wheel was also installed fresh from PyPI. A database created with version 0.2.0 was opened and migrated to schema 3. Usage counters were retained, and embedding and search were exercised with tenant isolation checks.

The released wheel's four Python files were verified against the files merged through PR #1284.

These results do not mean every environment has been verified. Windows, macOS, big-endian systems, real embedding providers, retrieval quality, and multi-process or network-filesystem behaviour remain unverified.

The wheel also has a PyPI provenance record from GitHub Actions trusted publishing.

4. Documentation and Infrastructure Improvements

RagLeap Core v0.13.1 also includes documentation and CI improvements:

  • Updated SECURITY.md with supported versions, scope, and limitations.
  • Added a security incident runbook for operators.
  • Added a host time synchronisation guide.
  • Fixed GitHub Pages build, README rendering, and broken links.
  • Added retries to terraform init when GitHub returns HTTP 504 responses.

These improvements help make the project easier to operate, understand, and maintain.

5. Why These Releases Matter

These releases address two different engineering concerns.

Auditability: Structured action logs provide operators with more visibility into supported agent actions and their approval decisions.

Memory retrieval: Optional vector and hybrid search give developers more flexibility in how their applications retrieve stored information, without forcing a particular embedding provider into the library.

Neither feature removes the need for careful deployment, security review, or application-level testing. The goal is to provide useful building blocks while being transparent about their current limitations.

6. Get Involved

RagLeap is an open-source, self-hosted AI employee platform. We welcome developers, testers, technical writers, and contributors interested in building practical AI infrastructure.

Explore the project:

If you're interested in AI agents, memory systems, security, Python engineering, or open-source infrastructure, take a look and consider contributing.

Build openly. Test carefully. Be transparent about limitations.