# Keep application source portable

The Content Runtime example keeps its editable game source in a versioned JSON
document and stores presentation media beside it. **Last Train to the Moon**
uses:

```text
last-train-to-the-moon/
├── game-source.vifu.json
└── assets/
    ├── audio/
    └── images/
```

This is an example application format, not a format required by the Vifu Agent
Runtime. Another plugin can use a database, files, or its own import format.

## What the source contains

The example source describes the story graph, scenes, choices, conditions,
Agent references, host actions, localization, and logical presentation
resources. Media files remain addressable inputs rather than provider or user
state.

The source can refer to canonical Vifu project and Agent identities, but a
portable copy must not contain:

- provider credentials;
- project keys or runtime-channel credentials;
- administrator or user sessions;
- Agent Gateway credentials; or
- logs and traces.

Those records belong to the Vifu deployment that owns access to the Agents.

## Import into another deployment

An importer validates the application source and media, creates application
records, and reconnects references to a canonical Vifu project. Provider
credentials are configured at the target Vifu deployment rather than copied
with content.

Keeping this boundary explicit lets a product move its editable source without
turning an application archive into a credential archive.

## Source is not a release

Editable source is expected to change. A published session needs a compiled,
immutable reference instead. Read
[Runtime releases](/docs/examples/runtime-releases) for that half of the
example.
