Everything is an Entity
Characters, locations, items, factions — all entities with attached facts. No rigid schemas, just freeform descriptions that the LLM reasons over.
A Discord bot where everything is an entity with facts
Entity: Aria
Facts:
- is a character
- has silver hair and violet eyes
- works as a traveling merchant
- speaks with a slight accent
- is cautious around strangers
- $if mentioned: $respondBind Aria to a channel, and she'll respond in character. Facts are freeform — the LLM reasons over them directly.
Entity: The Void Shrine
Facts:
- is an ancient place of power
- $if time.is_night: hums with eldritch energy
- $if time.is_night && random() < 0.2: $respond
- $if unread_count > 5: something stirs in the silenceFacts can be conditional. The shrine only chimes in at night, and only occasionally.
{% call send_as("system") %}
You are {{ char.name }}. Today is {{ time.date }}.
{% endcall %}
{% call send_as("user") %}
{{ char.name }}'s facts:
{% for fact in char.facts %}
- {{ fact }}
{% endfor %}
{% endcall %}Nunjucks templates give full control over the system prompt: message roles, entity references, memory injection, and template inheritance.
/create Aria/edit Aria → Add facts describing who Aria is/bind channel Aria