Skip to main content

Legal-flavored friendly name generator for KAOS sessions and agents

Project description

kaos-names

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.

PyPI - Version Python License quality

kaos-names is a tiny, dependency-free Python package that mints friendly, legal-flavored handles such as sunny-docket-07 for sessions, traces, demo data, jobs, attorney/judge avatars, and short-lived agent workspaces. The default vocabulary is curated to be memorable, easy to say out loud, and free of pejorative or obscure terms — names show up next to real users in the KAOS web app, so they need to feel friendly, not backhanded.

The package has zero runtime dependencies and only uses the Python standard library. It exposes a stable vocabulary, a deterministic testing hook through random.Random, and a CLI that emits plain text or JSON. The default vocabulary has 120 friendly descriptors and 327 slug-safe legal terms — 3,884,760 possible default names before random collision.

Install

uv add kaos-names
# or
pip install kaos-names

kaos-names requires Python 3.13 or newer and runs on Linux, macOS, and Windows from a single pure-Python wheel.

Quick start

from kaos_names import generate_name

print(generate_name())
# e.g. "sunny-docket-07"

For deterministic output in tests, pass a seeded random source:

import random

from kaos_names import generate_name

rng = random.Random(273)
assert generate_name(rng=rng) == generate_name(rng=random.Random(273))

The original Kelvin Agent API helper was named generate_combination(). kaos-names keeps that alias so existing callers can migrate without changing behavior:

from kaos_names import generate_combination

session_name = generate_combination()

New code should prefer generate_name() or generate_session_name().

Concepts

The package is intentionally tiny — three helpers and two vocabularies.

Concept What it is
generate_name() The primary entry point. Returns one <descriptor>-<noun>-<NN> slug. All knobs are keyword-only: descriptors, nouns, rng, separator, number_min, number_max, number_width.
generate_session_name() Session-oriented alias for generate_name(). Same signature; reads naturally in code that creates sessions, traces, or short-lived workspaces.
generate_combination() Backwards-compatible alias for the original Kelvin Agent API helper. No parameters; uses the packaged vocabulary and the global random module so existing code calling random.seed(...) keeps working.
DEFAULT_DESCRIPTORS Tuple of 120 cheerful, slug-safe descriptors (agile, bubbly, dapper, winsome, …). Pejorative or downbeat words are excluded by test.
DEFAULT_NOUNS Tuple of 327 recognizable, slug-safe legal terms (gavel, docket, subpoena, chambers, verdict, …). Obscure feudal vocabulary and crime-implying labels are excluded by test.

The default output format is <descriptor>-<noun>-<NN>, with a two-digit number from 01 through 99. Pass separator, number_min, number_max, and number_width to change the shape.

CLI

kaos-names ships a kaos-names command. Every subcommand supports --json for machine-readable output:

kaos-names generate                              # one name
kaos-names generate --count 5                    # five names, one per line
kaos-names generate --count 5 --seed 273         # deterministic output
kaos-names generate --count 3 --json             # JSON envelope
kaos-names generate --separator _ --number-width 3   # sunny_docket_007 shape
kaos-names vocabulary                            # vocabulary counts
kaos-names vocabulary --list                     # full word lists
kaos-names vocabulary --json                     # vocabulary as JSON

You can also run the package as a module: python -m kaos_names generate.

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_names.__all__ (6 symbols).
Stability policy Pre-1.0: minor bumps may change behaviour. Vocabulary additions are non-breaking; removals or renames go through a deprecation cycle and are documented in CHANGELOG.md.
Test coverage Unit tests cover the public API plus vocabulary guards (size, slug-safety, exclusion lists).
Type checker Validated with ty, Astral's Python type checker.

Companion packages

kaos-names 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

kaos-names is a leaf utility — it has no kaos-* dependencies and is safe to use from any of the packages above (or anywhere outside KAOS).

Development

git clone https://github.com/273v/kaos-names
cd kaos-names
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_names tests
uv run ruff check kaos_names tests
uv run ty check kaos_names 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. See CONTRIBUTING.md for setup, quality gates, pull request expectations, and engineering standards. By contributing you agree to follow the project conduct expectations and 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kaos_names-0.1.0a4.tar.gz (20.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kaos_names-0.1.0a4-py3-none-any.whl (15.0 kB view details)

Uploaded Python 3

File details

Details for the file kaos_names-0.1.0a4.tar.gz.

File metadata

  • Download URL: kaos_names-0.1.0a4.tar.gz
  • Upload date:
  • Size: 20.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for kaos_names-0.1.0a4.tar.gz
Algorithm Hash digest
SHA256 f6f2c62c379552c6d530b6c7a90bbc02c51527f4cffe7656be3d7fd95e1d1928
MD5 46ffd748d6dc25a38de5f819ae9f1950
BLAKE2b-256 5324b90c9272bebc56c9563f2aa7ca12992e270db63efa61f06491c40ea09920

See more details on using hashes here.

Provenance

The following attestation bundles were made for kaos_names-0.1.0a4.tar.gz:

Publisher: release.yml on 273v/kaos-names

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file kaos_names-0.1.0a4-py3-none-any.whl.

File metadata

  • Download URL: kaos_names-0.1.0a4-py3-none-any.whl
  • Upload date:
  • Size: 15.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for kaos_names-0.1.0a4-py3-none-any.whl
Algorithm Hash digest
SHA256 231f6910edd09676e976730c0c51c1865d01377771e43390c8660ed217d412a2
MD5 332b33ba0c49690ba623277f1259911a
BLAKE2b-256 2dbc4d24d730c5f3e143d42a4f564e224e7300caeb6484c5e5dc9228c46cfcac

See more details on using hashes here.

Provenance

The following attestation bundles were made for kaos_names-0.1.0a4-py3-none-any.whl:

Publisher: release.yml on 273v/kaos-names

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page