Going live Oct 1Follow us on YouTube for the beta testBeta test on YouTube
Living City AI cover art

AI & Tools

Living City AI Realtime voice NPC conversations

Walk up to any pedestrian and talk to them with your voice. They answer in about a second, in a natural spoken voice, in character — they remember you, and they can actually do their job. Ask a nurse to be seen and she checks you in for real.

Overview

No menus, no chat windows, no push-to-talk. Face someone within four metres and speak — they answer in roughly one second, in a natural spoken voice, in character. Your controls are never taken, which makes it work for cinema, RP streams and content creation.

NPCs that actually do their job

Talking is where most AI NPC scripts stop. These ones act. Tell a nurse you are bleeding and she does not describe checking you in — she checks you in, and your real admission form opens while she is still speaking.

Every role gets its own short list of things it can genuinely do, so a nurse is never offered a mechanic's tools and cannot invent a service that does not exist. The model only ever picks what it intends to do from that list; your script decides who, where and how much from live game state. If a service fails, the NPC is told — so nobody ever confirms something that did not happen. Wiring your own resources in is config, not code: point a role at any event, export or command you already have.

The city is alive around the conversation

Placed NPCs — clerks, guards, staff — remember every player individually, across sessions and restarts. Argue with the clerk on Monday and on Tuesday he opens with "oh hell nah, you again." Shootings, robberies, chases and arrests ripple outward: witnesses know instantly and can repeat concrete details, cops hear it on dispatch, the neighbourhood hears it later, and big stories make the news. Peds two blocks away will tell you "I heard shots, didn't see anything."

Features

  • OpenAI Realtime speech-to-speech — ~1s to first audio, with barge-in: interrupt them mid-sentence and they stop.
  • NPCs perform real actions — a per-role whitelist of things each character can genuinely do, wired to your own resources from an open config file.
  • Five-dimension relationships — trust, respect, fear, familiarity and hostility, all independent. A gangster can respect you and still hate you.
  • Physical compliance — NPCs actually DO what they agree to: follow you, stop, turn around, hands behind back, get in the car, kneel, flee, and (if you push the wrong person) pull a gun on you. Tool-call driven, not text parsing.
  • 150+ ped models mapped to roles — clerk, nurse, doctor, bouncer, dealer, cop, EMS, security, dancer, casino, waiting staff and more, each with its own persona, accent and pinned voice, all editable in roles.lua. Gang members name their real crew rather than all claiming one.
  • Derived mood — night shifts, rain, rough neighbourhoods and nearby violence change how people talk to you, at zero extra API cost.
  • Reputation & escalation — a public/street reputation split with an undercover mechanic, and certain roles and neighbourhoods that might be carrying.
  • Optional AI radio dispatcher — hand the channel to a real police dispatcher with proper radio procedure, callsigns and ten-codes, who dispatches actual units and runs plates. Inert unless you have a radio resource to call it.
  • An API for your other scripts — BroadcastEvent, SpeakOnce, Chat, Prompt and more, so any resource can publish a world event or make a ped deliver a live, in-character line.

Built around the cost

Audio tokens are the real expense, so this resource is designed for them. Sessions only open when a player deliberately engages (a dwell gate stops passers-by from costing you money), idle sessions close in 12 s, one-shot lines close as soon as they're spoken, and a token ceiling caps runaway replies. The entire gossip, mood and memory-recall layer is templated arithmetic — zero API calls. The only recurring model call besides live speech is one short text summarization after a conversation with a placed NPC ends, and you can switch that off.

You supply your own OpenAI API key with Realtime access — usage is billed to you by OpenAI, not by us.

Read the full documentation →

Features

Talk With Your Voice

Face a ped within 4m and speak. ~1s to first audio, barge-in supported. No menus, no push-to-talk, controls never taken.

NPCs Do Their Job

Ask a nurse to be seen and she checks you in for real. Per-role whitelist of actions, wired to your own resources from an open config.

Persistent NPC Memory

Placed NPCs remember every player individually, across sessions and restarts. They open with what happened last time.

Five-Dimension Relationships

Trust, respect, fear, familiarity and hostility, all independent. A gangster can respect you and still hate you.

City Events & Gossip

Shootings, robberies and arrests ripple outward. Witnesses know instantly, cops hear it on dispatch, the neighbourhood hears it later.

Physical Compliance

NPCs actually do what they agree to — follow, stop, hands behind back, get in the car, kneel, flee. Tool-call driven, not text parsing.

150+ Peds Mapped To Roles

Clerk, nurse, doctor, bouncer, dealer, cop, EMS, dancer, casino, waiting staff — each with its own persona, accent and voice. Gangs name their real crew.

Optional Radio Dispatcher

Hand the channel to a real police dispatcher — radio procedure, ten-codes, dispatching actual units and running plates.

Derived Mood

Night shifts, rain, rough neighbourhoods and nearby violence change how people talk to you. Zero extra API calls.

Built Around The Cost

Dwell gate, 12s idle close, token ceiling, and a gossip layer that is pure arithmetic. You control the spend.

Video

Living City AI video preview

Setup

Installation

  1. Drop rr-realtime into your resources and ensure it after ox_lib and oxmysql.
  2. Add your key to server.cfg: set openai_api_key "sk-..."
  3. Start the server — tables are created automatically.
  4. Walk up to a ped and talk. That's it.

Dependencies

  • ox_lib
  • oxmysql
  • An OpenAI API key with Realtime access (billed to you by OpenAI)
  • qbx_core is auto-detected for job/citizenid — falls back gracefully without it

Commands

CommandWhat it does
/whoknows [role]Which live events would a ped of that role know about here, and via which channel
/citytest [kind]Inject a test city event
/freepedRelease a stuck ped
/rtstartManually start a conversation session
/rtstopManually end a conversation session
rtchat <text>Server console — test the text bridge