Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Runtime Build
name: Build

on:
push:
Expand All @@ -10,7 +10,7 @@ on:
- "Cargo.toml"
- "Cargo.lock"
- "rustfmt.toml"
- ".github/workflows/runtime-build.yml"
- ".github/workflows/build.yml"
pull_request:
branches:
- "main"
Expand All @@ -20,7 +20,7 @@ on:
- "Cargo.toml"
- "Cargo.lock"
- "rustfmt.toml"
- ".github/workflows/runtime-build.yml"
- ".github/workflows/build.yml"
workflow_dispatch:

env:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Runtime Release
name: Release

on:
push:
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Runtime Security
name: Security

on:
push:
Expand All @@ -10,7 +10,7 @@ on:
- "Cargo.toml"
- "Cargo.lock"
- "deny.toml"
- ".github/workflows/runtime-security.yml"
- ".github/workflows/security.yml"
pull_request:
branches:
- "main"
Expand All @@ -20,7 +20,7 @@ on:
- "Cargo.toml"
- "Cargo.lock"
- "deny.toml"
- ".github/workflows/runtime-security.yml"
- ".github/workflows/security.yml"
schedule:
- cron: "0 6 * * 1"
workflow_dispatch:
Expand Down
9 changes: 5 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Context-aware redaction operators: mask, replace, hash, encrypt,
blur, block, pixelate, policy-driven with per-entity confidence
thresholds.
- Deployment-owned NER and LLM recognizer lineups (deployment picks
the providers; the wire only toggles NER or LLM on or off).
- BentoML inference services shipped as Docker containers:
docTR (OCR), PaddleOCR-VL (vision-language OCR), and GLiNER (NER).
- Deployment-owned NER, LLM, OCR, and STT recognizer/enricher lineups
(deployment picks the providers; the wire only toggles them on or off).
- HTTP client integration with the inference services shipped separately
from [nvisycom/bento](https://github.com/nvisycom/bento) via the
`elide-bento` git dependency.

### Rust crates (`crates/`)

Expand Down
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Makefile for the Nvisy runtime workspace (Rust crates).
# Makefile for the Nvisy runtime (Rust workspace).

# Default to a single recipe shell so a failure inside a piped
# command (e.g. server panics under `tee`) is reported by make.
Expand Down
39 changes: 14 additions & 25 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,51 +1,40 @@
# Nvisy Runtime

[![Runtime](https://img.shields.io/github/actions/workflow/status/nvisycom/runtime/runtime-build.yml?branch=main&label=runtime&style=flat-square)](https://github.com/nvisycom/runtime/actions/workflows/runtime-build.yml)
[![Inference](https://img.shields.io/github/actions/workflow/status/nvisycom/bento/inference-build.yml?branch=main&label=inference&style=flat-square)](https://github.com/nvisycom/bento/actions/workflows/inference-build.yml)
[![Runtime](https://img.shields.io/github/actions/workflow/status/nvisycom/runtime/build.yml?branch=main&label=runtime&style=flat-square)](https://github.com/nvisycom/runtime/actions/workflows/build.yml)
[![Inference](https://img.shields.io/github/actions/workflow/status/nvisycom/bento/build.yml?branch=main&label=inference&style=flat-square)](https://github.com/nvisycom/bento/actions/workflows/build.yml)

Multimodal redaction library and its inference services.
Multimodal redaction pipeline as a stateless Rust library.

A workspace that pairs a stateless Rust redaction pipeline with the
BentoML-hosted Python model services it calls into. The Rust side ships
as library crates hosts embed directly; the Python side ships as Docker
containers hosts deploy alongside.
A workspace of library crates hosts (a SaaS backend, a Tauri app, a
language SDK, a custom pipeline) embed directly. No long-running
process, no HTTP layer of its own. Inference is delegated over HTTP to
model services that live in the sibling
[nvisycom/bento](https://github.com/nvisycom/bento) repository; the
engine ships with a git-dep client (`elide-bento`) that speaks their
wire contract, and any service reproducing that contract is a drop-in
replacement.

> [!WARNING]
> **Active development: API not stable.** This project is under active
> development. Public APIs, configuration shapes, and wire schemas may
> change without notice between releases. Pin a specific commit if you
> depend on this in production.

## Workspaces

Rust crates ([`crates/`](crates/)) — library only, no long-running
process. Hosts (a SaaS backend, a Tauri app, a language SDK, a custom
pipeline) embed the engine directly.

- **[nvisy-policy](crates/nvisy-policy/)**: wire schema for redaction governance (rules, predicates, operators)
- **[nvisy-schema](crates/nvisy-schema/)**: wire schema for plan, file, and the `elide-core` slice; re-exports `nvisy-policy`
- **[nvisy-template](crates/nvisy-template/)**: ready-to-run policy templates for common regulatory postures (HIPAA, GDPR, PCI DSS, CCPA)
- **[nvisy-engine](crates/nvisy-engine/)**: stateless pipeline (decode, analyze, apply) wrapping elide, hosting the per-modality orchestrator and the deployment-side NER / LLM recognizer configuration

The BentoML inference services and their Rust client (`elide-bento`)
live in a sibling repository, [nvisycom/bento](https://github.com/nvisycom/bento);
this workspace consumes `elide-bento` as a git dependency.

## Features

- **Multimodal codecs**: read, edit, and write PDF, DOCX, images, audio, CSV, JSON, and plain text through a unified span-based content model
- **Layered detection**: regex, dictionary, and checksum patterns run first at low cost; NER, OCR, VLM, and LLM classification handle what deterministic methods cannot
- **Context-aware redaction**: mask, replace, hash, encrypt, blur, block, and pixelate with policy-driven rules scoped to entity type, document class, and confidence threshold
- **Stateless engine**: no persistence, no HTTP layer, no background tasks; every analyze and apply call is self-contained
- **Bring your own inference**: any service that reproduces the wire contract is a drop-in replacement for the shipped Python packages, including self-hosted or custom models and weights
- **Bring your own inference**: any service that reproduces the wire contract is a drop-in replacement for the shipped bento services, including self-hosted or custom models and weights

## Quick Start

The fastest way to get started is with [Nvisy Cloud](https://nvisy.com).

For self-hosted use, embed the engine crate directly and deploy the
Python services as sidecar containers. See each crate and package
README for details.
inference services from [nvisycom/bento](https://github.com/nvisycom/bento)
as sidecar containers. See each crate README for details.

## Changelog

Expand Down
2 changes: 1 addition & 1 deletion crates/nvisy-engine/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# nvisy-engine

[![Build](https://img.shields.io/github/actions/workflow/status/nvisycom/runtime/runtime-build.yml?branch=main&label=build%20%26%20test&style=flat-square)](https://github.com/nvisycom/runtime/actions/workflows/runtime-build.yml)
[![Build](https://img.shields.io/github/actions/workflow/status/nvisycom/runtime/build.yml?branch=main&label=build%20%26%20test&style=flat-square)](https://github.com/nvisycom/runtime/actions/workflows/build.yml)

Stateless multimodal redaction pipeline over elide.

Expand Down
2 changes: 1 addition & 1 deletion crates/nvisy-policy/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# nvisy-policy

[![Build](https://img.shields.io/github/actions/workflow/status/nvisycom/runtime/runtime-build.yml?branch=main&label=build%20%26%20test&style=flat-square)](https://github.com/nvisycom/runtime/actions/workflows/runtime-build.yml)
[![Build](https://img.shields.io/github/actions/workflow/status/nvisycom/runtime/build.yml?branch=main&label=build%20%26%20test&style=flat-square)](https://github.com/nvisycom/runtime/actions/workflows/build.yml)

Wire schema for Nvisy policies: authored redaction governance.

Expand Down
2 changes: 1 addition & 1 deletion crates/nvisy-schema/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# nvisy-schema

[![Build](https://img.shields.io/github/actions/workflow/status/nvisycom/runtime/runtime-build.yml?branch=main&label=build%20%26%20test&style=flat-square)](https://github.com/nvisycom/runtime/actions/workflows/runtime-build.yml)
[![Build](https://img.shields.io/github/actions/workflow/status/nvisycom/runtime/build.yml?branch=main&label=build%20%26%20test&style=flat-square)](https://github.com/nvisycom/runtime/actions/workflows/build.yml)

Wire schema for the Nvisy platform: plan, file, and the `elide-core`
slice, plus a re-export of `nvisy-policy`.
Expand Down
2 changes: 1 addition & 1 deletion crates/nvisy-template/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# nvisy-template

[![Build](https://img.shields.io/github/actions/workflow/status/nvisycom/runtime/runtime-build.yml?branch=main&label=build%20%26%20test&style=flat-square)](https://github.com/nvisycom/runtime/actions/workflows/runtime-build.yml)
[![Build](https://img.shields.io/github/actions/workflow/status/nvisycom/runtime/build.yml?branch=main&label=build%20%26%20test&style=flat-square)](https://github.com/nvisycom/runtime/actions/workflows/build.yml)

Ready-to-run Nvisy policy templates for common regulatory postures.

Expand Down