Skip to content

HologramCollaborative Worldbuilding

A Discord bot where everything is an entity with facts

Quick Example ​

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: $respond

Bind Aria to a channel, and she'll respond in character. Facts are freeform — the LLM reasons over them directly.

Conditional Facts ​

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 silence

Facts can be conditional. The shrine only chimes in at night, and only occasionally.

Custom Templates ​

nunjucks
{% 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.

Getting Started ​

  1. Create a character: /create Aria
  2. Add personality: /edit Aria → Add facts describing who Aria is
  3. Bind to channel: /bind channel Aria
  4. Chat: Just talk — Aria responds in character

Read the full guide →

Released under the MIT License.