Bring your NPCs to life.

A Rust runtime for game NPCs — conversations, quests, and inventory — exposed through a stable C ABI that works with any engine.

Quick C example on this page →

💬

Freeform dialogue

Replace rigid dialogue trees with real back-and-forth. Players drive the topic; NPCs stay consistent with lore and personality instead of offering three canned replies.

🌐

Universal C ABI

One shared library. Unity, Unreal, Godot, custom engines — if it can call C functions, it can use Animist.

🧱

Memory Safe

Built in Rust with panic catching at the FFI boundary. No undefined behavior leaking into your game.

📦

Zero Dependencies

Link a single static or dynamic library. No runtime to install, no package manager, no framework lock-in.

🛡

Clean Handle API

Opaque handles with status codes. Familiar patterns for anyone who's integrated a C library before.

🧠

NPC memory

Rolling summarization keeps long conversations coherent, and export/import lets you persist and restore dialogue with your saves.

A conversation in 10 lines of C

const char* config = "{ \"license_token\": \"…\", \"license_public_key_pem\": \"…\" }";
AnimistRuntimeHandle* runtime = NULL;
animist_runtime_create(config, &runtime);

uint64_t conv_id;
animist_conversation_begin(runtime, player_id, char_id, &conv_id);

AnimistResponseHandle* response = NULL;
animist_conversation_send_message(
    runtime, conv_id, char_id, "Merchant",
    player_id, "Do you sell potions?", &response);

char* text = NULL;
animist_response_get_text(response, &text);
printf("%s\n", text);

animist_string_free(text);
animist_response_destroy(response);
animist_runtime_destroy(runtime);

Config JSON carries your developer license (token + public key PEM) and optional LLM settings. Create a runtime, start a conversation, send messages, read responses. Same pattern in C#, C++, Python, or any FFI-capable language — see the full C ABI docs for status codes, JSON payloads, and memory rules.

See it running right now

This site is itself a consumer of the Animist C ABI, loaded via Node.js FFI. The demo page talks to a real AnimistRuntime through the same shared library your game would link—try freeform NPC chat there, not just preset dialogue lines.

Integrating the C ABI in your game? Request a free developer license (email in, signed token + public key for offline verification) — we are in active development and want your feedback.

Open the Demo