grimvane.ai

The Flower Garden

Six libraries hold the data behind Grimvane's software

Each library keeps one kind of data: memories, records, connections, words, hot data and secrets. You import it into your own code and call its functions. There is no server to run.

Each library asks very little of your code

You import it and call it

There is no server, no port and no process to run. The library lives inside your program.

A flower never learns what its data means

It stores what you give it and hands it back when you ask. What the data stands for stays with your code.

Any layer can be swapped without touching your code

Storage backends, embedders and serializers plug in behind one interface, so you can change one and leave the rest as it is.

You add databases, encryption or a GPU only when you want them

The smallest setup needs only Python. Each extra is something you turn on.

Catalog

Each flower has one job

Camellia

Vector memory

Camellia remembers by meaning. You store text, then ask for whatever sits closest to a question, and it hands back the best matches. Old memories can be set to fade over time.

from camellia import MemoryStore

Used in

  • Life After the world's memory of what you did, and how it fades
  • Hearth the memory layer

Planned for

  • Corvath semantic memory
How it is built

Made with

  • Python
  • GDScript port
  • NumPy
  • Cosine search

Storage

  • In-memory
  • SQLite
  • PostgreSQL

Dahlia

Structured storage

Dahlia keeps your records in tidy collections. You describe the shape of a record, store as many as you like, and filter on any field. Its GDScript port runs in Godot with no other dependencies.

from dahlia import Store

Used in

  • Life After inventory, the state of objects and rooms
  • Kindlefall card definitions, enemies, relics and the state of each run

Planned for

  • Corvath structured data
How it is built

Made with

  • Python
  • GDScript port
  • Schema validation

Storage

  • In-memory
  • SQLite
  • PostgreSQL

Wisteria

Graph database

Wisteria keeps things and the connections between them. You can ask what sits nearby, and the same thing can rank differently depending on what you asked before. Large graphs can be stored in a compressed form.

from wisteria import Graph, ActivationEngine, CompressedStore

Used in

  • Life After the world as a graph of places, things and what you did
  • Kindlefall the overworld map, rival pathfinding and territory

Planned for

  • Corvath knowledge graphs
  • Project Blackbox relationships between characters and factions
How it is built

Made with

  • Python
  • GDScript port
  • Graph traversal
  • Multi-head activation
  • Transform coding

Storage

  • In-memory
  • SQLite
  • PostgreSQL

Aster

Search index

Aster finds words. It searches text by keyword, ranks the results, groups them by facet and highlights where each match sits. Camellia matches the meaning of a question and Aster matches its words, so the two work well together.

from aster import Index

Used in

  • Life After searchable journals, terminals and inscriptions

Planned for

  • Corvath full-text search
How it is built

Made with

  • Python
  • GDScript port
  • BM25 ranking
  • Tokenization

Storage

  • In-memory
  • SQLite FTS5
  • PostgreSQL tsvector

Lotus

Tiered cache

Lotus keeps the data you reach for most close at hand. Hot data sits in memory, warm data in SQLite and cold data in a remote store. Whatever you read moves up a tier, and old entries expire by time or by least recent use.

from lotus import Cache

Used in

  • Life After keeping nearby areas fast and distant ones cold

Planned for

  • Corvath response and context caching
How it is built

Made with

  • Python
  • GDScript port
  • LRU
  • TTL

Storage

  • Memory (hot)
  • SQLite (warm)
  • Optional remote (cold)

Thistle

Encrypted storage

Thistle locks data away. Everything is encrypted at rest with AES-256-GCM and opens only with a key. Access can be limited by role, and every open can be written to an audit log.

from thistle import Vault

Used in

  • Life After locked vaults and the record of who opened them

Planned for

  • Corvath credentials and other sensitive data
How it is built

Made with

  • Python
  • GDScript port
  • AES-256-GCM
  • PBKDF2 or Argon2

Storage

  • Encrypted file store
  • Encrypted SQLite

Used in a game

Life After runs on all six flowers

Life After is a cinematic adventure game about a long walk home. Every flower has a part in it, and the game shows what the six do when they run together.

  • Camellia the soul

    It remembers what you did, and it forgets if you stay away too long.

  • Dahlia the skeleton

    Inventory, the state of objects, rooms and interaction flags all rest on it.

  • Wisteria the spine

    The world is a graph of places, things and what you did, and sound travels along it.

  • Aster the recall

    It searches the journals, terminal logs and inscriptions the world leaves lying about.

  • Lotus the performance

    It keeps the area you are in fast and lets the distant regions go cold.

  • Thistle the lock

    What it guards is sealed, and the record of who opened it before you is part of the story.

Visit Life After