How does it work?

Kelvin Usage Patterns

The Kelvin Legal Data OS provides re-usable software and data components for software developers and data scientists. Using these components generally requires either using an API or using a Python software library, depending on an organization's team and preferences. All APIs are available as Docker containers, and almost all components have been designed around stateless deployment patterns, allowing for trivial scaling.

Kelvin is designed to run anywhere your controls allow. Since the core technology stack is based on Docker and Python 3.10, Kelvin components provide a modern, high-performance, easy-to-use experience for both developers and system administrators.

Operating System Support

Because Kelvin is designed around Docker and Python 3.10, it can be run on all major operating systems. We test every Kelvin release on the following operating systems and versions:

OSVersion(s)Status
Windows (desktop)10 (Docker or WSL2)
11 (Docker or WSL2)
✅ Passing
Windows Server2019
2022
✅ Passing
LinuxUbuntu 22.04
Ubuntu 23.04
✅ Passing
macOS12 (Monterey, Intel)
13 (Ventura, Intel/Silicon)
✅ Passing

Python Support

Kelvin can be used as a Python library on any operating system that supports Python 3.10+. Installation for licensed users is simple from our hosted PyPI-style repository. For high-security environments, we can provide completely air-gapped mirrors for internal deployment without external DNS or connectivity.

Docker and Docker Compose Support

Kelvin supports Docker on Intel, ARM64, and Apple Silicon architectures without any Docker version-specific requirements. Some Kelvin apps, like the Document Index API, ship with pre-configured Docker Compose files that do require Docker Compose 2.0 or higher. These files are provided as a convenience, and can be used as-is or modified to suit your needs.

Kubernetes Support

Kelvin can also be deployed via Kubernetes. Since almost all Kelvin components are stateless, they can be easily integrated by any experienced Kubernetes administrator. Due to limited demand, we do not provide pre-built Helm charts, but we are happy to provide guidance and assistance to organizations that wish to deploy Kelvin via Kubernetes.

Deployment Models

Kelvin can be used or deployed in a variety of ways, depending on your needs. The following deployment models are supported:

  • As a Python library
  • Local API development environment
  • Centralized single-server API deployment
  • Distributed API deployment

Local Development

The easiest way to get started with Kelvin is to install it on your local development environment. This is the recommended approach for ad hoc data science workflows or for developers who want to experiment with Kelvin and build their own applications in a rapid, iterative fashion. Kelvin can be installed on any operating system that supports Docker and Python 3.10, as documented in the table above.

Getting started is as simple as the following commands:

$ kelvin --launch --local --all
...

$ docker ps --format "table {{.ID}}\t{{.Names}}"
CONTAINER ID   NAMES
8c51627c8127   kelvin-document-index-api
b0858283f2a3   kelvin-document-index-api-cache
a751a402aa53   kelvin-document-index-db
66dd62863410   kelvin-conversion-api
f0de37771834   kelvin-conversion-api-cache
0000c421db5e   kelvin-ocr-api
22ae4d7e7888   kelvin-ocr-api-cache
0000c421db5e   kelvin-nlp-api
f6d764c41fce   kelvin-share-api
dc0a9c54ee2e   kelvin-registry

$ curl -s http://localhost:2273/openapi.json | jq
{
  "openapi": "3.0.2",
  "info": {
    "title": "Kelvin Document Index API",
    "description": "Document Index API",
    "version": "0.1.0",
    "x-logo": {
      "url": "https://273ventures.com/assets/img/273-ventures-preview.png"
    }
  },
  ...
}

This deployment approach is not recommended for production use at scale, as it does not provide redundancy, scalability, or centralized data governance.

Single-Server

Kelvin can be deployed on a single server, with all components running on the same machine. This is the recommended approach for small to medium-sized production deployments, where the server has sufficient resources to handle the workload. This deployment approach allows organizations to enforce centralized data governance policies, and provides a single point of contact for network access and system administrators.

Distributed

Kelvin can also be deployed in a distributed fashion, with components running on multiple machines. As many of the Kelvin services are stateless, this deployment approach can be used to scale Kelvin horizontally, or to scale Kelvin vertically by adding more resources to a single machine. This deployment approach allows mature organizations to achieve scale, redundancy, and centralized data governance.

Keep Reading

Now that you understand the basics of Kelvin and how it is typically used and deployed inside organizations, it's time to dive into the details. The next sections of the Knowledge Base cover the components of Kelvin, beginning with Data Drivers. If you'd prefer, you can also use the Table of Contents or Menu in the left pane to navigate to the component or use case you're interested in.