Core protocol, runtime, and execution infrastructure for KAOS modules
Project description
kaos-core
Part of Kelvin Agentic OS (KAOS) — open agentic infrastructure for legal work, built by 273 Ventures. See the full KAOS package map for the rest of the stack.
kaos-core is the foundational runtime for KAOS modules — an MCP-native type
system, runtime container, registries, execution engine, agent primitives, and
virtual filesystem.
It is the dependency-light base every other kaos-* package builds on.
kaos-core does not run servers, talk to LLMs, or extract documents —
companion packages do those things. This package is what makes them all
consistent.
To expose kaos-core runtimes over the Model Context Protocol, add the
companion package kaos-mcp (ships
separately).
Install
uv add kaos-core
# or
pip install kaos-core
kaos-core requires Python 3.13 or newer and has only three runtime
dependencies (click, pydantic, pydantic-settings).
Quick start
Define a tool, register it on a runtime, and execute it:
import asyncio
from kaos_core import (
KaosRuntime,
ToolAnnotations,
ToolCapability,
ToolCategory,
kaos_tool,
)
@kaos_tool(
name="kaos-demo-square",
description="Square an integer",
category=ToolCategory.DATA,
capability=ToolCapability.TRANSFORM,
annotations=ToolAnnotations(readOnlyHint=True, idempotentHint=True),
auto_register=False,
)
async def square(value: int) -> int:
return value * value
async def main() -> None:
runtime = KaosRuntime()
runtime.tools.register_tool(square)
tool = runtime.tools.get_tool("kaos-demo-square")
result = await tool.execute({"value": 7})
print(result.text) # "49"
asyncio.run(main())
Inputs are validated against the JSON Schema generated from your type
hints — tool.execute({"value": "not-int"}) raises ValidationError
before reaching the function body.
Concepts
The package is built around six small, composable primitives.
| Concept | What it is |
|---|---|
KaosRuntime |
Dependency-injection container. Tools, resources, prompts, and namespaces live here. KaosRuntime.default() is fine for scripts and tests; library code should accept a KaosRuntime parameter. |
KaosTool |
Abstract base for tools. Subclass it directly or use the @kaos_tool decorator. Inputs are type-validated against the JSON Schema derived from your function signature. |
KaosContext |
Per-execution context with session_id / trace_id for structured logging, plus access to runtime configuration and the artifact store. |
ModuleSettings |
Typed-settings base class with six-level resolution: explicit overrides → KaosContext._config → KAOS_<MOD>_* env vars → legacy env vars → .env → field defaults. API keys use pydantic.SecretStr so they are redacted in logs. |
| Artifacts | Three-tier policy for results of varying size. INLINE_THRESHOLD = 16 KB (inline acceptable), SUMMARY_THRESHOLD = 256 KB (summary inline + resource link), larger values move by handle (kaos://artifacts/...). Use ArtifactManifest.to_tool_result() to auto-select the tier. |
| Virtual filesystem | Flat S3-style namespace (VirtualFileSystem) with memory and disk backends. Range reads, pagination, lazy loading. Directories are emergent; mkdir is a no-op. |
CLI
kaos-core ships a kaos-core administrative CLI. Every command supports
--json for machine-readable output:
kaos-core tools list # registered tools
kaos-core tools search "pdf" --category document # search by query + facet
kaos-core artifacts list --session my-session # stored artifacts
kaos-core config show # runtime settings (with secrets redacted)
kaos-core vfs ls /artifacts/ # VFS contents
Compatibility & status
| Aspect | |
|---|---|
| Python | 3.13, 3.14 (informational matrix entries for 3.14t free-threaded and 3.15-dev) |
| OS | Linux, macOS, Windows (pure-Python wheel; no native code) |
| Maturity | Alpha. The public API is documented in kaos_core.__all__ (105 symbols). |
| Stability policy | Pre-1.0: minor bumps may change behaviour. Every change is documented in CHANGELOG.md. The MCP tool surface and the KAOS_<MOD>_* environment-variable namespace are public API and follow the same policy. |
| Test coverage | 272 tests, 89% line coverage on 2,939 statements. |
| Type checker | Validated with ty, Astral's Python type checker. |
Companion packages
kaos-core is one of the packages in the
Kelvin Agentic OS. The broader stack:
| Package | Layer | What it does |
|---|---|---|
kaos-core |
Core | Foundational runtime, MCP-native types, registries, execution engine, VFS |
kaos-content |
Core | Typed document AST: Block/Inline, provenance, views |
kaos-mcp |
Bridge | FastMCP server, kaos management CLI, MCP resource templates |
kaos-pdf |
Extraction | PDF → AST with provenance |
kaos-web |
Extraction | Web extraction, browser automation, search, domain intelligence |
kaos-office |
Extraction | DOCX / PPTX / XLSX readers + writers to AST |
kaos-tabular |
Extraction | DuckDB-powered SQL analytics |
kaos-source |
Data | Government + financial data connectors (Federal Register, eCFR, EDGAR, GovInfo, PACER, GLEIF) |
kaos-llm-client |
LLM | Multi-provider LLM transport |
kaos-llm-core |
LLM | Typed LLM programming (Signatures, Programs, Optimizers) |
kaos-nlp-core |
Primitives (Rust) | High-performance NLP primitives |
kaos-nlp-transformers |
ML | Dense embeddings + retrieval |
kaos-graph |
Primitives (Rust) | Graph algorithms + RDF/SPARQL |
kaos-ml-core |
Primitives (Rust) | Classical ML on the document AST |
kaos-citations |
Legal | Legal citation extraction, resolution, verification |
kaos-agents |
Agentic | Agent runtime, memory, recipes |
kaos-reference |
Sample | Reference module for module authors |
Packages depend on kaos-core; everything else is opt-in. Mix and match the
ones you need.
Development
git clone https://github.com/273v/kaos-core
cd kaos-core
uv sync --group dev
Install pre-commit hooks (recommended — they run the same checks as CI on every commit, scoped to staged files):
uvx pre-commit install
uvx pre-commit run --all-files # one-time full sweep
Manual QA commands (the same set CI runs):
uv run ruff format --check kaos_core tests
uv run ruff check kaos_core tests
uv run ty check kaos_core tests
uv run pytest -m "not live and not network and not slow"
Build from source
uv build
uv pip install dist/*.whl
Contributing
Issues and pull requests are welcome. By contributing you certify the
Developer Certificate of Origin v1.1 —
sign every commit with git commit -s. Please open an issue before starting
on a non-trivial change so we can align on scope.
Security
For security issues, please do not file a public issue. Report privately via GitHub Private Vulnerability Reporting or email security@273ventures.com. See SECURITY.md for the full disclosure policy.
License
Apache License 2.0 — see LICENSE and NOTICE.
Copyright 2026 273 Ventures LLC. Built for kelvin.legal.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kaos_core-0.1.0a3.tar.gz.
File metadata
- Download URL: kaos_core-0.1.0a3.tar.gz
- Upload date:
- Size: 92.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c61dcd5a14a22eb91ffe3b6ec6d8d3061de0bea9e733309bdf1e3f45215803ad
|
|
| MD5 |
fcd486f436a09ca6fccb327b2dbecaa1
|
|
| BLAKE2b-256 |
46667eb40c96224bc83c0817fd525299d427845a2f2f3be8c13cb3b0b92fc79a
|
Provenance
The following attestation bundles were made for kaos_core-0.1.0a3.tar.gz:
Publisher:
release.yml on 273v/kaos-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kaos_core-0.1.0a3.tar.gz -
Subject digest:
c61dcd5a14a22eb91ffe3b6ec6d8d3061de0bea9e733309bdf1e3f45215803ad - Sigstore transparency entry: 1461979729
- Sigstore integration time:
-
Permalink:
273v/kaos-core@56af4d3037732056c76afa195b49a4490e6a5df5 -
Branch / Tag:
refs/tags/v0.1.0a3 - Owner: https://github.com/273v
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@56af4d3037732056c76afa195b49a4490e6a5df5 -
Trigger Event:
push
-
Statement type:
File details
Details for the file kaos_core-0.1.0a3-py3-none-any.whl.
File metadata
- Download URL: kaos_core-0.1.0a3-py3-none-any.whl
- Upload date:
- Size: 81.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
43887015a5a9460334ecebae2b3615d1f78c8c2b31773bd1a84f681f682921e1
|
|
| MD5 |
a666b1051b5294199c14c598305baa46
|
|
| BLAKE2b-256 |
43011ec0504fcb64ae0fea0064547051f13451ab68b3d37b51f1919618a9f076
|
Provenance
The following attestation bundles were made for kaos_core-0.1.0a3-py3-none-any.whl:
Publisher:
release.yml on 273v/kaos-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kaos_core-0.1.0a3-py3-none-any.whl -
Subject digest:
43887015a5a9460334ecebae2b3615d1f78c8c2b31773bd1a84f681f682921e1 - Sigstore transparency entry: 1461979740
- Sigstore integration time:
-
Permalink:
273v/kaos-core@56af4d3037732056c76afa195b49a4490e6a5df5 -
Branch / Tag:
refs/tags/v0.1.0a3 - Owner: https://github.com/273v
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@56af4d3037732056c76afa195b49a4490e6a5df5 -
Trigger Event:
push
-
Statement type: