Errors
Every code mixel, the desktop and the registry use, with its usual fix.
Every error has a code, what happened, and the fix. The message you see names the exact fix for your case; this page is the index. Codes marked (warning) don't fail mixel check, but --strict and publish refuse them too.
From mixel check (and the registry)
| Code | Means | Usual fix |
|---|---|---|
manifest_missing | There is no app.json in the folder. | mixel new "My App" starts one. |
manifest_json | app.json is not valid JSON. | Fix the JSON at the line shown. |
manifest_v0 | app.json has no "$schema": it is the old v0 format. | Add "$schema" and "sdk", rename worker.entry to entry and frontend to page, give each permission a reason. |
manifest_schema | "$schema" is not the v1 URL. | "$schema": "https://0x1audio.com/schema/app/v1.json" |
manifest_field | A field app.json doesn't have, or one that was renamed. | Remove or rename it as the message says. |
manifest_name | name is not 2 to 48 lowercase letters, digits and dashes. | "name": "my-app". It never changes after the first publish. |
manifest_display_name | displayName is missing or over 48 characters. | "displayName": "My App" |
manifest_summary | summary is not one sentence of up to 80 characters. | "summary": "One file to many formats at once." |
manifest_version | version is not MAJOR.MINOR.PATCH, or not above the last published one. | "version": "0.1.0", raised before each publish. |
manifest_entry | entry is missing, not a .py file, or not in the app. | "entry": "app.py" |
manifest_page | page is not an .html file in the app, or it isn't built. | npm run build, then "page": "dist/index.html" |
manifest_accent | accent is not a colour like #5b8cff. | "accent": "#5b8cff" |
manifest_icon | icon is not a square .svg or .png in the app. | "icon": "icon.svg" |
manifest_window | window sizes are whole pixels within the allowed range. | "window": { "width": 900, "height": 640 } |
manifest_license | license is not an SPDX identifier. | "license": "Apache-2.0" (or MIT, GPL-3.0-only, ...) |
manifest_tags | tags is more than 5 single words. | "tags": ["convert"] |
sdk_missing | app.json has no sdk range. | "sdk": "^0.3" |
sdk_range | sdk is not a caret range this SDK satisfies. | "sdk": "^0.3" |
permission_undeclared | The code uses a permission app.json doesn't ask for. | mixel check --fix adds it; then write the reason in your own words. |
permission_unused (warning) | app.json asks for a permission the code doesn't use. | Remove it, so people aren't asked for more than the app needs. |
template_words (warning) | The summary or a permission reason is still mixel new's words about converting, in an app that does something else. | Write what your app does, and why it needs each permission, in your own words. |
permission_unknown | Not a permission. They are files, library, library-read, data, gpu and network. | Use one of files, library, library-read, data, gpu, network. |
permission_reason | A permission without a reason of 12 to 120 characters. | One sentence that tells the person why, like "Open the songs you choose." |
network_hosts | network without a list of hosts, or with the whole web, an IP or localhost. | "network": { "why": "Download the model once.", "hosts": ["github.com"] } |
dependency_missing | The code imports a package pyproject.toml doesn't list, so Mixel won't install it. | Add it to pyproject.toml › [project].dependencies. |
dependency_not_installed | A listed package isn't installed where mixel runs, so the actions couldn't be loaded. | uv sync (mixel check --fix runs it) |
lock_missing | pyproject.toml lists packages but there is no uv.lock, so Mixel and the registry can't install exactly what was reviewed. | uv lock, then commit uv.lock. mixel check --fix runs it. |
banned_api | The code runs programs, opens raw sockets, runs code from strings, or imports by a name it builds (subprocess, os.system, socket, ctypes, eval, exec, import, requests). | Use ox.audio.convert, ox.audio.read or ox.audio.write instead of programs; urllib.request with a declared network for downloads; plain imports. |
path_outside | The code opens a fixed path outside the app, like /etc/passwd, /tmp or the home folder. | Use the files the person chooses (ox.Files, ox.Folder), ox.temp() or ox.data. |
app_failed_to_load | The entry file raised an error while loading. | Fix the error at the line shown; the message names the fix. |
no_actions | The entry file has no @ox.action functions. | @ox.action("Title") above a function makes it an action. |
When an action runs (pages see these as OxError.code)
| Code | Means | Usual fix |
|---|---|---|
bad_input | The input doesn't fit the action's controls. Python never sees it. | Send each control's value, as the message says. |
problem | The action raised ox.Problem: something the person can fix. | Show the message and hint to the person. |
cancelled | The person pressed Stop. kept lists what the action finished before. | Nothing to fix. Show what was kept. |
crashed | The action raised an unexpected error, or the app stopped. | Read the log (mixel dev prints it), fix the line, run again. |
timeout | The action ran longer than its timeout. | @ox.action("Title", timeout=3600), and call ox.progress so Stop works. |
permission_denied | The page used a file the person didn't choose, or a permission they turned off. | Use ox.files.pick or a Files control; ask the person to allow it. |
permission_undeclared | The app used a permission app.json doesn't declare. Declared is binding. | Add it to app.json › permissions with a reason. |
unavailable | The page isn't running inside Mixel, or the app has no actions. | Open the app in Mixel (mixel dev). |
From the mixel command
| Code | Means | Usual fix |
|---|---|---|
usage | The command line is wrong. | mixel --help |
folder_not_empty | mixel new would write into a folder that has files. | Choose another name. |
no_tests | There are no tests in tests/. | Add tests/test_app.py with a unittest that calls ox.test(...). |
tests_did_not_run | The test runner itself failed. | Run python -m unittest in the app's folder to see the whole error. |
no_such_action | mixel run named an action the app doesn't have. | Use a name mixel check lists. |
no_such_topic | mixel docs named a page that doesn't exist. | mixel docs --list |
desktop_unavailable | Mixel isn't running, or developer mode is off. | Open Mixel, turn on Settings › Developer mode, then quit and reopen Mixel. |
desktop_error | The desktop refused or failed a dev request. | Follow the message; mixel doctor checks the setup. |
not_signed_in | No sign-in, or it expired. | mixel login |
expired_token | The pairing code expired before it was confirmed. | mixel login |
network | Mixel's cloud couldn't be reached. | Check the connection. MIXEL_API sets another address. |
registry_unavailable | This cloud doesn't take that request from the CLI yet. | Update the server, or set MIXEL_API. |
registry_error | The registry refused the request. | Follow the message and its doc link. |
git_missing | git isn't installed. | Install git. |
git_failed | A git command failed. | The app's folder must be a git repository pushed to GitHub. |
git_dirty | There are changes that aren't committed. | git add -A && git commit -m "…" && git push |
git_not_pushed | The commit isn't on GitHub yet. | git push |
not_repo_root | The app isn't at the top of its git repository. | Give the app its own repository. |
not_github | The remote isn't a GitHub repository. | Push the app to a public GitHub repository. |
From the person's Library (mixel mcp, ox1audio.local and Mixel's own assistant tools)
| Code | Means | Usual fix |
|---|---|---|
library_search_off | Mixel is closed, or Let an assistant search your Library is off. | The person opens Mixel and turns it on in Settings › Your assistant. |
not_ready | Mixel can't compare sounds yet: the sound model is off or still indexing. Search by words still works. | Search with words instead, or ask the person to check Mixel. |
unknown_id | An id that no search in this Mixel session returned, or one it no longer remembers. | Search again and use the ids it returns. |
too_many | More than a search or a crate takes: 5 avoid or unlike words, 50 sounds in a crate. | Keep the ones that matter most. |
crates_off | Proposing crates is off in this Mixel, so nothing was made. | Tell the person what you found; they can turn on Settings › Your assistant › It can propose crates. |
unknown_tool | Mixel has no tool by that name. | Use library_overview, library_search or propose_crate. |
too_long | Mixel's answer was over its limit, so it wasn't sent. | Ask for less: fewer words, or a narrower filter. |
mixel_error | Mixel couldn't answer, for a reason it keeps to itself. | Try again; if it keeps failing, tell the person. |
From the registry and the cloud (mixel login, publish and status)
| Code | Means | Usual fix |
|---|---|---|
github_required | The Mixel account has no GitHub account connected, and reviewers read the code there. | Connect GitHub on your account page, then publish again. |
repository_invalid | repository isn't a GitHub repository like github.com/owner/repo. | Push the app to GitHub and publish from its folder. |
repository_not_yours | The repository isn't one of the public repositories GitHub shows for the connected account. | Push the app to a public repository you own, or connect the GitHub account that owns it. |
commit_invalid | commit isn't the full 40-character SHA of a commit. | git rev-parse HEAD |
commit_not_pushed | The commit isn't on GitHub yet. | git push |
message_invalid | The note for reviewers is over 500 characters. | Shorten it. |
submission_pending | A version of this app is already waiting for review. | mixel status shows it; publish again once it is decided. |
app_required | The request doesn't name the app. | Name it as app.json does: mixel status in the app's folder does this. |
rate_limited | Too many requests in a short time, like more than 10 submissions in an hour. | Wait, then try again; the message says how long. |
waitlisted | The account is on the waitlist, so only sign-in, sign-out and the account's own data answer. | Wait for the email that says you're in. |
terms_required | The account hasn't agreed to the Terms of Service. | Open cloud.0x1audio.com, agree, then run mixel login again. |
plan_required | The account's plan doesn't include this; the error names what it needs. | See the plans on your account page. |