Everything you need to know about CryptArtist Studio - from the file format to the CLI to the REST API.
We've created a complete documentation site with guides for every aspect of CryptArtist Studio.
Browse Full Documentation →
The .CryptArt file format is the universal project file for all CryptArtist Studio programs.
It is a JSON file with the extension .CryptArt and the registered type name
"CryptArtist Art".
The format was designed with one overriding goal: it must never need a base format upgrade.
The envelope schema is stable forever. Any .CryptArt file ever created will always be
readable by any version of CryptArtist Studio.
Only three fields are required in every .CryptArt file:
| Field | Type | Description |
|---|---|---|
$cryptart | 1 (number) | Magic key. Identifies the file and its envelope version. Always 1. |
program | string | Free-form string identifying which program created the file. |
data | object | Program-specific payload. Opaque to the envelope. |
{
"$cryptart": 1,
"program": "media-mogul",
"data": {}
}
| Field | Type | Description |
|---|---|---|
name | string | Human-readable project name |
createdAt | string | ISO-8601 creation timestamp |
updatedAt | string | ISO-8601 last-save timestamp |
appVersion | string | Version of CryptArtist Studio that wrote the file |
| Rule | Description |
|---|---|
| Readers MUST | Ignore unknown top-level keys |
| Readers MUST NOT | Fail if optional keys are missing |
| Writers MUST | Always include the 3 required keys |
| Writers SHOULD | Preserve unknown keys when re-saving a file |
| Program ID | Program Name |
|---|---|
media-mogul | Media Mogul |
vibecode-worker | VibeCodeWorker |
demo-recorder | DemoRecorder |
valley-net | ValleyNet |
game-studio | GameStudio |
Any string is valid as a program ID. Third-party programs can use their own IDs without any changes to the format.
{
"$cryptart": 1,
"program": "vibecode-worker",
"name": "My Web App",
"createdAt": "2026-03-13T17:00:00.000Z",
"updatedAt": "2026-03-13T18:30:00.000Z",
"appVersion": "0.1.0",
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"meta": {
"author": "Matt",
"email": "Matt@MattyJacks.com",
"website": "https://mattyjacks.com",
"tags": ["typescript", "react"],
"license": "MIT"
},
"data": {
"rootPath": "/home/matt/projects/webapp",
"openFiles": [
{ "path": "src/App.tsx", "name": "App.tsx" }
],
"activeFile": "src/App.tsx",
"aiProvider": "openai",
"model": "gpt-4o"
}
}
Every feature in CryptArtist Studio is accessible from the command line. The CLI uses a
cryptartist <command> [options] pattern.
# Show version $ cryptartist --version # Show help $ cryptartist --help # Launch specific program $ cryptartist launch media-mogul $ cryptartist launch vibecode-worker $ cryptartist launch demo-recorder $ cryptartist launch valley-net $ cryptartist launch game-studio
# Create a new project $ cryptartist new --program media-mogul --name "My Video" # Open an existing project $ cryptartist open project.CryptArt # Show project info $ cryptartist info project.CryptArt # Export project to different format $ cryptartist export --format mp4 --output video.mp4
# Import media from Pexels $ cryptartist media import --source pexels --query "ocean waves" # Import local file $ cryptartist media import --source local --path video.mp4 # List media in project $ cryptartist media list # Probe media file info $ cryptartist media probe video.mp4
# Generate a video from prompt $ cryptartist ai generate --prompt "Travel vlog about Tokyo" # Chat with AI $ cryptartist ai chat --message "How do I add transitions?" # Generate an image $ cryptartist ai image --prompt "Sunset over mountains"
# Start the REST API server $ cryptartist serve --port 3000 # Start with API key auth $ cryptartist serve --port 3000 --api-key "your-key"
Start the API server with cryptartist serve --port 3000. All endpoints accept and return JSON.
| Method | Endpoint | Description |
|---|---|---|
GET | /api/status | Server status and version |
GET | /api/project | Current project info |
POST | /api/project/new | Create a new project |
POST | /api/project/open | Open a .CryptArt file |
POST | /api/project/save | Save current project |
POST | /api/media/import | Import media file |
GET | /api/media/list | List project media |
POST | /api/media/probe | Probe media file info |
POST | /api/ai/chat | Send AI chat message |
POST | /api/ai/generate | AI video generation |
POST | /api/ai/image | AI image generation |
POST | /api/export | Export project |
GET | /api/system/info | System information |
GET | /api/system/logs | Recent log entries |
If the server is started with --api-key, all requests must include the key in the
Authorization header:
GET /api/status HTTP/1.1 Host: localhost:3000 Authorization: Bearer your-api-key-here Content-Type: application/json
CryptArtist Studio supports multiple AI providers. Enter your keys in the Settings modal (accessible from any program) or pass them via the CLI.
| Provider | Key Type | Used By |
|---|---|---|
| OpenAI | API Key | All programs - Chat, Image Gen, TTS, Video AI |
| Anthropic | API Key | VibeCodeWorker AI Chat, ValleyNet |
| API Key | VibeCodeWorker AI Chat, ValleyNet | |
| Pexels | API Key | Media Mogul - Stock photo/video import |
| Custom Endpoint | URL + Key | Any OpenAI-compatible API |
FFmpeg and FFprobe are automatically downloaded on first run. The installer detects your OS (Windows, macOS, Linux), downloads the appropriate binaries, verifies SHA-256 checksums, and stores them in the local AppData directory. No manual installation required.
GameStudio automatically detects an installed Godot Engine or offers to download it. Configure the Godot executable path in Settings if auto-detection doesn't work.
CryptArtist Studio includes a comprehensive logging system with three rolling log files:
| File | Contents | Size |
|---|---|---|
cryptartist-session.log | Last 100 lines since the last app launch | Rolling, per session |
cryptartist-recent.log | Last 1,000 lines across all sessions | Rolling, 1K lines |
cryptartist-full.log | Every log line ever written | Grows indefinitely |
Log levels: DEBUG, INFO, WARN, ERROR,
ACTION. The frontend logger sends structured messages to the Rust backend
for unified logging across the entire stack.
| Shortcut | Action | Context |
|---|---|---|
Ctrl+S | Save project | All programs |
Ctrl+O | Open project | All programs |
Ctrl+N | New project | All programs |
Ctrl+Z | Undo | All programs |
Ctrl+Shift+Z | Redo | All programs |
Ctrl+, | Open Settings | All programs |
Escape | Close modal / Back to launcher | All programs |
Space | Play / Pause | Media Mogul timeline |
Ctrl+Shift+F | Search across files | VibeCodeWorker |
Ctrl+` | Toggle terminal | VibeCodeWorker |
.CryptArt format is a universal JSON project file used by all five programs.
It's designed to be permanently forward-compatible - any file ever created will always be
readable by any future version of the app. See the
format documentation above for details.