Skip to main content

Yanantin

Yanantin is a Python package for storing authored memory artifacts with provenance, declared limits, and immutable history.

The package grew out of research on human-AI collaboration, but the small installed core is meant to be usable without reading the research archive. The first stable path is Apacheta: a tensor store for authored compressions. A tensor is not a transcript, a vector embedding, or a generic log entry. It is a record of what an author chose to preserve, what they chose to leave out, and how that record relates to prior records. Note: Apacheta, by design, is an immutable store - the primitives allow creating and accessing new records, but not changing them.

Quick Start

Install the package:

If you prefer to use old tools:

pip install yanantin

for those using uv (the modern package manager):

uv add yanantin

Create and store a tensor in memory:

from yanantin.apacheta.backends.memory import InMemoryBackend
from yanantin.apacheta.models import (
    DeclaredLoss,
    LossCategory,
    ProvenanceEnvelope,
    StrandRecord,
    TensorRecord,
)

store = InMemoryBackend()

tensor = TensorRecord(
    provenance=ProvenanceEnvelope(
        author_instance_id="readme-example",
        author_model_family="human",
    ),
    preamble="A small authored memory.",
    strands=(
        StrandRecord(
            strand_index=0,
            title="Observation",
            content="The in-memory backend is enough for local experiments.",
            topics=("quickstart", "apacheta"),
        ),
    ),
    declared_losses=(
        DeclaredLoss(
            what_was_lost="Persistence",
            why="This example uses the in-memory backend.",
            category=LossCategory.PRACTICAL_CONSTRAINT,
            severity=0.2,
        ),
    ),
    lineage_tags=("example",),
)

store.store_tensor(tensor)
round_tripped = store.get_tensor(tensor.id)

print(round_tripped.preamble)
print(round_tripped.strands[0].content)

There is also a runnable version in examples/minimal_in_memory.py.

What This Package Is

Yanantin currently exposes a small core:

  • yanantin.apacheta.models: Pydantic models for tensors, provenance, declared losses, composition records, and related concepts.
  • yanantin.apacheta.interface: the storage interface that backends implement.
  • yanantin.apacheta.backends.memory: an in-memory backend for examples, tests, and local experimentation.
  • yanantin.activity: append-only fact records and memory anchors.
  • yanantin.query: structured queries over activity streams.

The rest of the repository contains research systems, operational tooling, experiments, and archives. They are useful, but they are not the first thing a new package user needs.

What This Package Is Not

Yanantin is not a vector database, a RAG framework, a transcript archive, or a general-purpose ORM. It is designed around a different unit of memory: an authored compression with provenance and declared loss.

Design Principle: Ayni

This project uses the Andean principle of ayni, or reciprocal care, as a product principle. The package asks users for trust, time, and attention; in return it should give clear orientation, honest limits, recoverable examples, and respectful failure modes.

That principle shows up in practical ways:

  • examples should run without production infrastructure;
  • stable APIs should be marked;
  • experimental APIs should not pretend to be stable;
  • limitations should be declared close to the feature they affect;
  • error messages and documentation should give users a next step.

See docs/principles.md for the longer version.

Stability

Yanantin is currently a 0.x package. The core APIs are being separated from the research surface. If you are using the package as a dependency, start with the modules listed in docs/stability.md.

Backend status in brief:

Backend Status Intended use
In-memory Apacheta Supported core examples, tests, local prototypes
ArangoDB Apacheta Active, infrastructure-backed persistent deployments by users who provision ArangoDB
DuckDB Apacheta Limited/deferred areas compatibility and historical work, not the default production path
Activity in-memory Supported core examples, tests, local prototypes
Activity DuckDB/ArangoDB Active but more operational persistent fact streams

Repository Map

  • src/yanantin/apacheta/: tensor models, storage interface, and backends.
  • src/yanantin/activity/: raw fact stream and memory anchors.
  • src/yanantin/query/: structured queries over activity facts.
  • src/yanantin/collector/: collectors for environment and filesystem data.
  • src/yanantin/experiments/: memory-tool experiment harness.
  • src/yanantin/chasqui/: scout and verification pipeline.
  • docs/: design notes, specifications, findings, and research archive.
  • tests/red_bar/: architectural invariant tests.

More Reading

Release files for yanantin 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for yanantin 0.1.2
File Size Uploaded
yanantin-0.1.2.tar.gz 381.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for yanantin 0.1.2
File Interpreter ABI Platform
yanantin-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 630.5 kB

Release files / yanantin-0.1.2.tar.gz

Download URL yanantin-0.1.2.tar.gz
Size 381.8 kB
Tags Source
SHA-256 checksum
How to use checksums
457fd5ceb5d3de3602029d411f3951caf57f77a9c6c7019998db7efe30e09596
BLAKE2b-256 checksum
How to use checksums
e261f5e1aa256c0af1d9e3471c003dcca0efd0ec8e3b670155f7010aacc8054f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / yanantin-0.1.2-py3-none-any.whl

Download URL yanantin-0.1.2-py3-none-any.whl
Size 248.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
30c6396c7dfd82aa9a801516647e04f5c2021651a97f1c8c6ffad58e8693b6a6
BLAKE2b-256 checksum
How to use checksums
09685393a60a4234b95b3040532d9510cbb63da29f4df9e0575f815eadce3c39
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"22.04","id":"jammy","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page