stowken 0.7.0

Compressed storage and retrieval of LLM token sequences
Documentation

Stowken

Compressed storage and retrieval of LLM token sequences.

Stowken applies segment-level deduplication, variable-width integer encoding, and zstd dictionary compression to achieve 70–85% storage savings over naive Vec<u32> storage.

Licensed under the Apache License 2.0. Enterprise features (cloud backends, compliance tooling, advanced analytics) are available in stowken-enterprise.

Quick start

use stowken::{
    Stowken,
    types::{Conversation, Message, MessageContent, StowkenConfig},
    storage::MemoryBackend,
};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let vault = Stowken::new(MemoryBackend::new(), StowkenConfig::default()).await?;

    let conversation = Conversation {
        id: None,
        application: Some("my-app".to_string()),
        model: "gpt-4".to_string(),
        tokenizer: "cl100k_base".to_string(),
        messages: vec![
            Message {
                role: "system".to_string(),
                content: MessageContent::Tokens(vec![1, 2, 3]),
                name: None,
                tool_call_id: None,
            },
            Message {
                role: "user".to_string(),
                content: MessageContent::Tokens(vec![4, 5, 6]),
                name: None,
                tool_call_id: None,
            },
            Message {
                role: "assistant".to_string(),
                content: MessageContent::Tokens(vec![7, 8, 9]),
                name: None,
                tool_call_id: None,
            },
        ],
        metadata: None,
    };

    let result = vault.store(conversation).await?;
    println!("Stored {}{} segments, {} deduped",
        result.id, result.total_segments, result.deduped_segments);

    let retrieved = vault.retrieve(&result.id).await?;
    println!("Retrieved {} segments", retrieved.segments.len());

    Ok(())
}