c↗canvasok.
English ⌄
Download ↗
CANVASOK USER MANUAL

Call it your way.
Make it together.

CanvasOK is a standalone creative app running on your computer. Talk to your connected AI harness; inspect the result and edit directly in CanvasOK.

Oct 16, 2026 · macOS Apple Silicon invocation names & aliases experimental build

01

Install and prepare

The app bundles the Node runtime used for MCP. You do not need a separate Node installation or a CanvasOK API key. Sign in to your AI service and configure its usage in the harness you choose.

  1. Download the macOS build that supports invocation names and aliases from the homepage. Unzip it and copy CanvasOK.app to Applications. This is an Apple Silicon experimental build without public signing or notarization.
  2. Unzip the MCP connection kit into its own folder. In Terminal, replace /path/to/CanvasOK-mac-connect below with the actual kit folder and run the commands.
  3. Follow the instructions for your harness in the generated commands.txt. Merge the canvasok entry into existing configuration instead of replacing the whole file. The preparation script does not apply harness settings automatically.
mkdir -p "$HOME/Documents/CanvasOK-test"
cd /path/to/CanvasOK-mac-connect
python3 prepare.py \
  --app /Applications/CanvasOK.app \
  --project "$HOME/Documents/CanvasOK-test"

Use the same absolute project path when continuing one task across harnesses. If you move the app or kit, run prepare.py again and update the registered paths. For model comparisons, use a separate project folder per run.

This release is for macOS arm64. Windows and Linux installers are not yet available. The app UI supports Korean and English; invocation names in four languages are a separate feature.

02

Connect an AI harness

The kit generates local stdio MCP settings that invoke the same native app. The registered MCP server name stays canvasok. The table describes configuration routes, not a guarantee that every harness and model will recognize every natural language name.

Harness templates to use with commands.txt
HarnessConfiguration and activation
CodexUse codex.toml or the Codex registration command in commands.txt. Codex CLI and Desktop on the same local host share MCP settings. Check the tools in a new conversation after registration.
Claude Code / Claude DesktopUse claude-code.mcp.json for Claude Code CLI and Desktop Code mode. Regular Chat in Claude Desktop uses the separate claude-desktop.json configuration. Merge its mcpServers into your existing settings, then fully quit and reopen Desktop.
Gemini CLI
Antigravity
Use gemini.settings.json for Gemini CLI and antigravity.mcp.json for Antigravity. Selecting a Gemini model in Antigravity is separate from using the regular Gemini app. The latter’s local stdio connection is outside this kit’s supported routes.
OpenCodeOpenCode v1 in the current verification environment uses opencode-v1.json. The v2 mcp.servers structure is provided separately in opencode-v2.json. Choose the file matching your installed version; use the same local server and project in Desktop.
CursorMerge mcpServers from cursor.mcp.json into Cursor’s MCP configuration. Enable the project’s MCP server and check the tools in the CLI or desktop editor.
Kimi CodeRegister kimi-code.mcp.json with Kimi Code’s MCP settings. Confirm that the CLI and Desktop read the intended local configuration, then restart the MCP server.
ZCode / Z.aiMerge the MCP settings from zcode.config.json into ZCode. Activate the local canvasok server in your app version’s MCP management screen.
DeepSeek HarnessUse deepseek-harness.cordis.yml as a reference for the dsh MCP client plugin. Developer preview versions and plugin structure may differ; follow commands.txt and check the actual tools exposed.

These templates help register the server. Check your installed harness version, MCP plugin and model tool support separately. A remote harness server cannot directly execute a local app path on this Mac.

Start by opening the project and calling a CanvasOK tool from one AI client. The app displays the same session. When using multiple clients, reread the shared project state and take turns editing.

Check that canvasok tools are listed. Then ask: “Use CanvasOK to create a 32×32 pixel cat on a transparent background.” Pixel work can be tried without an external engine.

03

Names and your own aliases

The following names are built in. They all refer to the same CanvasOK tool; they do not rename documents, layers or harness executable commands.

Built-in invocation names · retained when custom aliases are reset
LanguageInvocation names
한국어캔버스오케이 · 캔버스 오케이
EnglishCanvasOK · Canvas OK
日本語キャンバスオーケー
中文画布OK · 畫布OK

Register in the app

Open Tools → Invocation names and aliases (도구 → 호출 이름·약칭 in the Korean UI). Add a name such as “cvok”; changes save immediately. Use Copy AI invocation instructions to copy instructions for your current conversation. You can register up to 16 custom aliases, each up to 32 Unicode code points. Letters, numbers, combining marks, spaces and . _ - are allowed; at least one letter or digit is required.

Register from Terminal

Run these commands from the connection kit folder after running prepare.py. list shows names, add registers one, resolve checks a name, and remove deletes a custom alias. --json prints a machine-readable result.

./bin/canvasok aliases list --json
./bin/canvasok aliases add "캔오케" --json
./bin/canvasok aliases resolve "캔오케" --json
./bin/canvasok aliases remove "캔오케" --json

To clear custom aliases, run ./bin/canvasok aliases reset --json. Built-in names remain. Display spelling is preserved; matching applies NFKC normalization, folds Unicode spaces and ignores letter case. Aliases are stored in aliases.json in the user data directory. CANVASOK_ALIASES_FILE can specify another path.

Saved names are included in MCP initialization instructions and document tool descriptions and metadata. Some harnesses refresh on tool list changes. If a new alias is missing, restart the MCP server and start a new conversation. Check that the app and server read the same alias file. External harness configuration files are not changed automatically.

Try calling it by name

캔오케로 32×32 투명 배경 고양이 도트를 만들어줘.
Use Canvas OK to create a 32×32 pixel cat on a transparent background.
キャンバスオーケーで、背景が透明な32×32ピクセルの猫を描いて。
用画布OK画一只32×32像素的猫,背景透明。

Aliases are natural language hints for selecting the tool. They do not create slash commands such as /cvok or grant execution permissions. You can add harness-instructions.md to your harness instructions. If a model does not recognize an alias, say explicitly: “cvok means the canvasok MCP tools. Inspect the current document and work on it.”

04

Edit with AI and take over

  1. Ask AI to create and edit a pixel document. Watch the same document change in the CanvasOK window.
  2. When you want to edit directly, pause AI edits in the app. Wait for the current batch to settle safely.
  3. Adjust the eyes, ears or colors yourself, then apply the changes. Use the apply action appropriate to the current editor.
  4. Resume in the app and ask your external harness to reread the latest state. Commands queued before the pause do not execute automatically.
Reread the current document. Keep the eyes I edited and change only the shape of the tail.

Pause controls AI write permission in CanvasOK. It does not stop an external model’s inference or billing. A change rejected because it used stale state must be retried after reading the current state.

05

Record the process and export MP4

Record 2D document edits as events and export them as a video. Explicitly registered prompts accumulate at the bottom of the video at the time they were recorded.

  1. Start recording from the app’s recording and video menu. Register the prompt to show, or explicitly ask AI to record the prompt.
  2. Continue AI edits and your own applied edits. Pause and resume events are recorded too. Preview the recording before export.
  3. Choose a playback speed and export MP4. Save an editable project bundle separately.

MP4 export requires a separate FFmpeg installation. Videos are currently silent. This does not automatically capture every external chat or record the desktop screen.

06

Input files and current scope

Images and AI context
Import an image to work with it or select a reference region. Image context is passed only for selected inputs with the connection settings that permit it. Opening a local file does not automatically send it to an external model. Your harness and model must also support image input.
MIDI
Import MIDI, edit notes and tracks with AI and export MIDI. Instrument sound playback and MIDI rendering are planned.
Audio clips
Import WAV/MP3, play audio and view waveforms, edit clip ranges, gain and fades, and export WAV. Speech recognition, speech generation and music generation are not included.
External engines and later areas
Start pixel, MIDI and audio editing with built-in paths. Vector work needs VectorCraft; some brush and layer work needs PhotoCraft. 3D and full video editing are later areas.
07

Troubleshooting

AI does not recognize a new alias
Check aliases list, restart the harness’s MCP server and start a new conversation. If CANVASOK_ALIASES_FILE is set, the app and harness must read the same file. Recognition varies by connected model; include canvasok explicitly in the request.
The app does not open, or shows another document
Check the app and kit locations and the absolute project path, then rerun prepare.py. See the manual session connection command in generated commands.txt. Remove duplicate MCP registrations that point at an old project.
An AI edit was rejected
Check whether AI writes are paused or a human-applied edit changed the document. Resume, reread the current document and task state, then request a new change. Do not resend the old rejected command unchanged.
How can I compare models?
Create separate projects with the same inputs, prompt and budget. Record model name and harness name and version separately. Compare output, human intervention count, elapsed time and process video together.

support@mdok.net ↗