REVULATE.DEV

A town built down a hillside above the water, with an observatory on the ridge above it: the dome stands open along a slit and the telescope inside tracks slowly across the sky. Windows warm and dim on their own rhythms behind the rooflines, smoke drifts from the chimneys, two figures walk the road above the water, and fireflies wander over it. On the hilltop beside the observatory a wolf-eared girl in a red scarf stands watching the moon. At night the roofs are plum-dark under a low moon and a field of stars; by day the hills are green, the roofs are red tile, and the moon has faded to a pale disc in a hazy blue sky.

The observatory — meet Luna

LUNA

A Twitch chatbot written in Rust — a clever, mischievous wolf girl who listens to a room full of voices and answers as part of the room, not above it.

  • Choose Gemini, Claude or GPT per channel while Luna is running.
  • Stream frames can be pulled on demand and included in the reply she writes.
  • Nearly a million chat messages can be recalled by meaning through Postgres, a local embedding model and Qdrant.
  • RUST
  • GEMINI
  • CLAUDE
  • GPT
  • POSTGRES
  • QDRANT
  • EVENTSUB

Private repo — source code is in a private repository

Inside the observatory

HOW LUNA LISTENS

Luna is built around context: what the room is saying, what it has said before, and what is happening on the stream right now. The machinery stays behind the personality.

Three voices, one switch

Gemini, Claude and GPT sit behind one provider trait. Each channel can choose its model without taking Luna offline.

Eyes on the stream

When the conversation needs visual context, Luna can pull a stream frame and carry it into the answer.

Memory by meaning

Chat history lives in Postgres and is recalled through local embeddings and Qdrant, blended with recency.

A room-sized pace

Autonomous messages are paced like one reasonably active chatter instead of a timer trying to fill silence.

Fifty-one commands

Trivia, reminders, a timeout game, stocks and 7TV emote search are spread across nine command categories.

A channel of her own

Personality and model choices are channel-specific, so Luna can fit the room she has joined.

Browse all 51 commands

A signal crosses the room

LISTEN. RECALL. ANSWER.

The path is deliberately small. Each step adds context without turning a chat reply into a dashboard workflow.

  1. 01

    Listen

    Twitch events and chat messages arrive as one stream of room context.

  2. 02

    Recall

    Relevant memories and, when requested, a current stream frame join the prompt.

  3. 03

    Answer

    The channel-selected provider writes one reply in Luna’s voice and sends it back to chat.

Open the observatory

BRING LUNA TO CHAT

Sign in with Twitch, choose the channel settings in the dashboard, and connect Luna when the room is ready for her.

Solstice
MUSIC — OFF