Manifest Reference
manifest.json is the creator-facing description of a Vifu game. It should read like a game manifest, not an internal permission graph.
Minimal Game
{
"name": "door-quest"
}Only name is required. Vifu fills deployable defaults for manifestVersion, type, version, main.url, main.type, main.engine, main.sdk, and build.output. Add those fields only when the detected/default value is wrong for the project.
id is not required for deploy. Vifu resolves the deploy target from the signed-in owner and name, then updates the same game on repeated deploys from the same project.
AI-native Game
{
"name": "AIventure",
"title": "AIventure",
"engine": "phaser",
"description": "A Phaser adventure game with AI-driven NPC dialogue.",
"tags": ["ai-native", "adventure", "phaser"],
"category": "story"
}Fields
| Field | Required | Description |
|---|---|---|
name | Yes | Stable ASCII deploy name, such as door-quest. |
manifestVersion | No | Defaults to 1. |
type | No | Defaults to game. |
title | No | Player-facing display title. Defaults from name. |
version | No | Defaults to 1.0.0. |
engine | No | Compact runtime engine hint such as phaser, three, or vanilla. Compiles to main.engine; explicit main.engine still wins. |
description | No | Short player-facing description. |
tags | No | Search, taxonomy, and discovery tags. |
main | No | Browser entry and engine metadata. Defaults to index.html, static-web, vanilla, and sdk: auto. |
build | No | Local build command and output directory. |
ai | No | Vifu AI is available through the SDK by default. Omit this field unless you intentionally need to disable AI or use a platform-specific override. |
companion | No | Enables/configures the companion bridge. Companion features are on by default; set a feature to false only to turn it off. |
save | No | Game state persistence scope. |
dictionary | No | Dictionary language pairs and fields. |
voice | No | Speech input/output settings. |
camera | No | Camera mode requested by the game. |
review | No | Review or grading subject and mode. |
data | No | Named runtime data files readable through vifu.resources. |
media | No | Named runtime media files. |
bundle | No | Additional files included in the shipped game bundle. |
links | No | External links the runtime may open. |
category | No | Public product family: language, knowledge, story, music, creative, wellbeing, or arcade. More specific words such as adventure belong in tags. |
remix | No | Remix access policy. |
main
{
"main": {
"url": "index.html",
"type": "static-web",
"engine": "vanilla",
"sdk": "auto"
}
}| Field | Description |
|---|---|
url | Entry HTML file inside build.output. |
type | Usually static-web. |
engine | Informational engine label such as vanilla, phaser, pixi, or three. |
sdk | Use auto when the runtime should inject/connect the Vifu SDK. |
build
{
"build": {
"command": "npm run build",
"output": "dist"
}
}vifu deploy runs build.command unless --no-build is passed, then uploads build.output after validation.
What Not To Put In V1 Game Manifests
These are internal or obsolete public concepts:
identryplayruntimeservicesdevicesresourcespermissionscapabilitiesbrowsersecurityschema
Use product nouns such as ai, data, media, bundle, links, save, dictionary, voice, camera, and review. The host compiles those into runtime policy internally.
Validate And Explain
vifu manifest check
vifu manifest explain
vifu manifest explain --debugUse --debug only when you need to inspect the compiled internal runtime policy.