Changelog
NewImproved

#003: On-Device Characters, Memory, and Knowledge

Characters can now run on the player's device with Arc or your own model, remember each player across sessions, and answer from shared world documents.

This release adds local inference: a project can generate replies on the player's device instead of in the cloud, with our own model or yours. The memory system is updated to version 2, world documents are now used in conversations, and the dashboard and website were redesigned.

Highlights

  • Local inference. Run characters on the player's device with Arc, or bring your own model in one of five families.
  • Memory v2. A new memory system. Characters remember each player across sessions: what they learned about them and the moments that mattered.
  • Knowledge. Per-character files and shared world documents are both used in conversations, with sharing controlled by publishing.

Local inference

Each project now chooses where replies are generated: Cloud (MistScale's model) or Local (the player's device). You pick it when you create the project and can change it later from the project overview. Every character in a project runs the same way.

For a Local project, MistScale still builds each prompt from the character, its knowledge, and its relationship with the player. The model on the device writes the reply. There are two model sources:

Source What runs Notes
MistScale model Arc, our language model fine-tuned for in-world characters The Unity SDK downloads it for you
Your own model A GGUF file you ship with your game Families: Qwen 3, Llama 3, Mistral, Gemma 4, Phi-4. MistScale builds the prompt in that family's format. You own the model and its licence

Local inference has these limits today:

  • Unity only. The Web, Godot, and Unreal SDKs run Cloud projects.
  • No grounding and no voice on local replies.
  • No Playground. The Playground works with Cloud projects only.
Method Endpoint Description
POST /v1/projects Now takes the inference choice (below). inference_mode is required
PATCH /v1/projects/{id}/model Change a project's inference choice
GET /v1/models?inference_mode=local Available models and the supported model families
GET /v1/projects/{projectId}/traits The personality traits the project's model supports
GET /v1/model?model_id={id} Download link for a model. model_id is required

Request body for POST /v1/projects and PATCH /v1/projects/{id}/model:

{
  "name": "My game",
  "inference_mode": "local",
  "local_model_source": "own",
  "local_model_family": "llama3"
}

inference_mode is cloud or local. For a local project, local_model_source is mistscale (send local_model_id from GET /v1/models) or own (send local_model_family: chatml, llama3, mistral, gemma4, or phi4). PATCH takes the same fields without name. An invalid combination returns 400.

Status Code When
409 PLAYGROUND_LOCAL_INFERENCE Creating a Playground session in a Local project
409 MODEL_NOT_DOWNLOADABLE GET /v1/model for a model that cannot be downloaded
400 GET /v1/model without model_id

Player identities

Your game can now resolve its player's identity once, at login, before talking to any character. The same external_id always returns the same identity.

Method Endpoint Description
POST /v1/identities/resolve Resolve or create the player's identity. Called with your game key
POST /v1/projects/{projectId}/identities Add a player or service identity
PATCH /v1/projects/{projectId}/identities/{id} Change display_name or status (active, suspended, archived)
DELETE /v1/projects/{projectId}/identities/{id} Delete an identity and everything characters remember about it
{
  "external_id": "player-1234"
}

The response is {"identity_id", "status"}. A suspended identity returns 403 with code IDENTITY_SUSPENDED. In the dashboard, Identities now opens a drawer to add, edit, and delete identities.

Memory v2

The memory system is updated to version 2. Characters remember each player across sessions. Every six turns, MistScale reads the recent conversation in the background and updates what the character knows about the player and the moments worth keeping. Older moments fade into summaries over time. The relationship moves with it: trust, patience, and mood shift gradually, and personality traits can drift for that player.

Existing characters were rebuilt from their past conversations, so nothing they had learned was lost.

Knowledge

Characters answer from two sources, both used in conversations:

  • Character knowledge: files attached to one character.
  • World knowledge: shared project documents. A document is read by every character it is shared with (everyone, audiences, or named characters) once it is published. Publishing is the only switch; there is no separate activation step.

Uploads accept .txt, .md, and .pdf, within your plan's limits. On Free: 3 files per character, 5 world documents, 2 MB per file. A file over a limit or of another type returns 422.

Method Endpoint Description
GET /v1/projects/{projectId}/knowledge-limits Your plan's limits: npc_docs, world_docs, max_file_bytes, file_types
PUT /v1/projects/{projectId}/world-knowledge/{refId}/access Set visibility, audience_ids, and npc_ids together
POST /v1/projects/{projectId}/world-knowledge/{refId}/publish Publish one document
POST /v1/projects/{projectId}/world-knowledge/publish-all Publish every draft. Returns published_docs

Safe delete

Deleting a character or a project now returns at once and finishes in the background. Until it is done, the item is listed with status: "deleting" and cannot be used: chats, sessions, and edits are refused. If a delete is interrupted, it resumes automatically.

Character avatars

Pick one of 24 avatars for a character, or keep Auto, which draws one from its name. The choice is saved on the character and shows everywhere in the dashboard. In the API, avatar_id on character create and update: null keeps Auto on create, and -1 returns a character to Auto on update.

Improved

  • Dashboard redesign. A single sidebar with a project switcher, new Overview, Characters, Identities, Relationships, World Knowledge, and Billing screens, and a Help center page.
  • Website redesign. New homepage and product page, and new login and signup screens.
  • Playground errors. A session that cannot be started now shows the reason instead of failing silently.

Removed

  • GET /v1/regions, GET and DELETE /v1/projects/{id}/clients, POST /v1/playground/sessions/{id}/heartbeat, and GET /v1/health/npc.
  • GET /v1/model?tier=. Use ?model_id=.
  • POST /v1/projects/{projectId}/world-knowledge/{refId}/activate and .../activate-all. Use publish and publish-all.

Upgrade notes

  • Unity SDK 0.2.0 is required for local inference. Earlier versions cannot run Local projects. Cloud projects keep working on any version.
  • Send inference_mode when creating a project through the API. Existing projects are Cloud and need no change.
  • Calls to GET /v1/model must pass model_id.

More updates

Build NPCs that remember and evolve.

Everything in this release is available in the platform today.