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,GETandDELETE /v1/projects/{id}/clients,POST /v1/playground/sessions/{id}/heartbeat, andGET /v1/health/npc.GET /v1/model?tier=. Use?model_id=.POST /v1/projects/{projectId}/world-knowledge/{refId}/activateand.../activate-all. Usepublishandpublish-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_modewhen creating a project through the API. Existing projects are Cloud and need no change. - Calls to
GET /v1/modelmust passmodel_id.

