TestModelAlive is a Tauri desktop app for managing Codex / Claude / OpenCode / DeepSeek Harness-compatible API endpoints and checking whether saved models are alive through the local CLI tools.
The app is bilingual, with Chinese and English UI support. Chinese is the default language.
- Home page: enter the model API information, fetch the model list, and save the API endpoint with its selected models.
- Model testing page: generate temporary config files for model availability checks, optionally replace Codex / Claude / OpenCode / DeepSeek Harness config, and test with the replaced config.
Model availability checking means verifying whether a model can be used. The app sends a configured prompt to the model and marks the test as passed when the command output contains the configured success keyword.
- Fill in the endpoint name, type, URL, and API key.
- Click "Fetch Models", confirm the model list, and select the models you want to save.
- Click "Save Endpoint", then use "Saved Endpoints" to select, load, copy, or delete endpoints.
- Select a saved endpoint on the home page and click "Test" to open the model testing page. The page shows the endpoint type, URL, and masked API key.
- Confirm the models to test. You can fetch models again, save models, or quickly adjust the range with select all, select none, or invert selection.
- Set the timeout as needed. Claude endpoints can enable "Append 1M context [1m] to model" to test long-context model names.
- Click "Test Settings" to edit the test prompt and success keyword. The prompt must require the model to output that keyword, which the app uses to decide whether the test passed.
- Click "Start Test" to test the current endpoint, or click "Test Current Config" to verify the existing local CLI config. During testing, you can stop the run and inspect status, elapsed time, errors, and logs in the result and log areas. After a model passes, apply the config to Codex, Claude, OpenCode, or DeepSeek Harness as needed.
Check whether models are available:
Replace CLI config:
- Frontend: TypeScript + Vite, source in
frontend/. - Desktop/runtime: Tauri 2 + Rust, source in
src-tauri/. - Legacy Python/PyQt files are kept under
lagacy/.
- Node.js and npm.
- Rust stable toolchain.
- Tauri system dependencies for your platform.
- Local CLI tools depending on what you test:
codexfor Codex endpoints.claudefor Claude endpoints.opencodefor OpenCode endpoints.dshfor DeepSeek Harness endpoints, installable withnpm install -g @deepseek-ai/dsh.
The app searches for CLI executables in PATH and common install locations, including npm global paths on Windows and Homebrew paths on macOS.
Install dependencies:
npm installStart Tauri development mode:
npm run tauri devBuild the frontend only:
npm run buildBuild the desktop app:
npm run tauri buildRuntime data is stored under the user's home directory:
~/.TestModelAlive/
On Windows this resolves to:
%USERPROFILE%\.TestModelAlive\
Files stored there include:
settings.json: saved endpoints, model lists, test settings, and CLI config restore baselines.cli-config-apply-history.json: CLI config apply history.claude-settings.json: temporary Claude CLI settings created during tests, overwritten on each test, and kept for troubleshooting.codex-home/: isolated Codex home used during tests.opencode-home/: isolated OpenCode home used during tests.dsh-home/: isolatedDSH_HOMEused during DeepSeek Harness tests.cli-config-backups/: backups created before applying or restoring real CLI config files.
Model tests run through the local CLI tools:
- Codex tests run with an isolated
CODEX_HOMEunder~/.TestModelAlive/codex-home. - Claude tests run with
~/.TestModelAlive/claude-settings.jsonas the settings file. - OpenCode tests run with an isolated home under
~/.TestModelAlive/opencode-home. - DeepSeek Harness tests run with an isolated
DSH_HOMEunder~/.TestModelAlive/dsh-homethroughdsh --profile headless; the API key is injected only into the child process environment.
The test dialog shows CLI output in real time. The backend no longer mirrors test logs to the terminal.
The success condition is configurable:
- Set a test prompt.
- Set a success keyword.
- The prompt must explicitly include the success keyword and require the model to output it.
- A model is marked available when the command output contains the success keyword.
- For a DeepSeek Harness endpoint, select one or more models, click "Apply to DeepSeek Harness", and choose one of them as the default model.
- The app merges DSH's
settings.yamland.credentials.yamlunderDSH_HOMEwhen set, or under the default~/.dsh/directory. - DeepSeek Harness credentials use the readable
TMA_DSH_<endpoint name>_API_KEYreference. - On macOS and Linux, the app writes
.credentials.yamlwith owner-only0600permissions to satisfy DSH credential security requirements. deepseek-v4-flashanddeepseek-v4-proremain in the OpenAI-compatibletma-<endpoint name>provider by default.llm-pi-aidoes not yet support DeepSeek models through third-party endpoints. To use either as the default model, select "Split DeepSeek V4 models into llm-deepseek" in the apply options to write them to the nativellm-deepseekconfiguration and usedeepseek-officialas theiragent-default-modelprovider. Without this option, DeepSeek V4 models cannot be the default model.- Splitting overwrites the existing official DeepSeek configuration in
llm-deepseek. - When splitting, choose the maximum output: the official endpoint default is
384000, and131072is available for third-party endpoints. Isolated tests always use131072and do not read existing DSH configuration. - The model test page offers "Restore Official Config", which removes top-level
llm-deepseekand default-model overrides to restore DSH's built-in official configuration. "Delete This Provider" removes the current endpoint'stma-<endpoint name>provider, default-model reference, and associated API-key credential. - The app reuses embedded context-window and maximum-output values.
llm-pi-aimodels also receive converted OpenCode reasoning levels; unknown models retain DSH defaults. - Model metadata is embedded in
src-tauri/src/model_metadata.json, not written to~/.TestModelAlive/settings.json; startup automatically removes the legacyopencode_model_variantsfield. - DeepSeek Harness is currently in developer preview and may introduce breaking configuration changes. Run "Test Current Config" after upgrading DSH.
- Windows support includes
.cmd/.batCLI shims and process-tree termination throughtaskkill /T /F. - macOS and Linux include common CLI search paths such as
/usr/local/bin,/opt/homebrew/bin, and~/.local/bin. - Cross-compiling Tauri apps can require platform-specific SDKs and resource compilers beyond Rust targets.
API keys are stored in plaintext inside ~/.TestModelAlive/settings.json; applying an endpoint to a local CLI also writes them into that CLI's config files.
Do not commit or share runtime data files. Relevant local data files are ignored by .gitignore.


