CORTEX Docs

Get started

Installation

How to get Cortex running on a Windows machine, as the repository stands today (version 0.2.0). There are two ways: the Windows installer (Cortex_0.2.0_x64-setup.exe, built with npm run installer, see Release and packaging) or a source build started with Start.bat. For what the app does once running, see the user guide; for architecture, build internals and tests, see Development and architecture.

Supported systems and prerequisites#

Cortex is Windows only. Agent processes are launched through Job Objects and ConPTY, which exist only in the Windows build. The workspace still compiles on other systems with stubs, but starting an agent there fails with process.job_failed. No other platform is supported.

Developed and tested on Windows 11 x64 with the x86_64-pc-windows-msvc Rust toolchain. Windows 10 x64 version 1809 or later should work (the pseudoconsole of the terminal mode and the agent CLIs need 1809) but has not been tested. ARM64 is not built or tested.

Requirement Detail
Microsoft Edge WebView2 runtime Tauri 2 renders the UI with it. Microsoft preinstalls it on Windows 11. The installer downloads and runs its bootstrapper when it is missing (internet needed); a source build does not install it.
Rust 1.89 or newer rust-version = "1.89", edition 2024. No rust-toolchain file pins it. Check with rustc --version.
Tauri 2 Windows build prerequisites Microsoft C++ build tools (MSVC) for the Rust toolchain.
Node.js and npm Needed only to build the UI. vite build requires Node ^20.19.0 or >=22.12.0. npm test (vitest, jsdom) requires ^22.22.2, ^24.15.0 or >=26.0.0.
At least one agent CLI, logged in Claude Code, Codex or OpenCode, authenticated for the Windows user that runs Cortex (see Agent CLI prerequisites). Cortex starts without any CLI; a missing one only makes that runtime unavailable. On first start Cortex offers to install the missing ones (First start: agent CLI setup); signing in stays yours.

Building and running from source#

From the repository root:

bat
Start.bat

Start.bat does four things in order:

  1. In apps\desktop\ui, runs npm install only if node_modules is missing, then npm run build (tsc --noEmit && vite build into apps\desktop\ui\dist).
  2. Runs cargo build -p cortex-desktop.
  3. Starts target\debug\cortex-desktop.exe. The console window stays open and shows startup errors.
  4. Returns the exit code of the app; if a build step fails it prints Falhou. Veja a mensagem acima. ("Failed. See the message above.") and exits with 1.

Start.bat release builds with --release and starts target\release\cortex-desktop.exe, which has no console window. The script changes into its own directory, so it can be started from anywhere.

Manual equivalent:

bat
cd apps\desktop\ui
npm ci
npm run build
cd ..\..\..
cargo build -p cortex-desktop --release
target\release\cortex-desktop.exe

The UI must be built before compiling cortex-desktop: Tauri embeds apps\desktop\ui\dist (frontendDist in tauri.conf.json) at compile time. cargo build (and Start.bat) produce an executable only; the installer comes from npm run installer (Release and packaging). cargo run -p cortex-desktop also works once ui\dist exists. npm run dev starts Vite only; the UI reaches the Core solely through Tauri IPC, so it does nothing useful outside the Tauri host.

Install with the Windows installer#

The installer is Cortex_0.2.0_x64-setup.exe, an NSIS setup for 64-bit Windows. Build it with npm run installer in apps\desktop\ui (output in target\release\bundle\nsis\); its size and SHA-256 are listed in Releases.

Note

The installer is not code-signed: Windows SmartScreen may say "Windows protected your PC". Compare the file's hash first (Get-FileHash <file> -Algorithm SHA256 in PowerShell), then choose "More info" → "Run anyway".

What the setup does:

  • Installs for the current Windows user only and needs no administrator rights. The default folder is %LOCALAPPDATA%\Cortex; the directory page lets you pick another one.
  • Copies two files there: cortex-desktop.exe and uninstall.exe. No configuration, credentials or sample data are installed; Cortex creates its data on first start.
  • Adds a Start Menu shortcut "Cortex". The last page offers "Create desktop shortcut" and a box to run Cortex right away. A silent install (/S) always creates the desktop shortcut.
  • Registers "Cortex" (version 0.2.0, publisher Cortex) in Settings → Apps → Installed apps, under HKCU\Software\Microsoft\Windows\CurrentVersion\Uninstall\Cortex.
  • Installs the WebView2 runtime first if it is missing, by downloading Microsoft's bootstrapper.
  • Asks you to close Cortex if it is running from the install folder.

Warning

Shared folder. %LOCALAPPDATA%\Cortex is also the default Cortex data directory, so with the default choice the program files and your data sit in the same folder. The uninstaller deletes only its own two files and removes the folder only when it is empty, so your data stays. Do not delete that folder by hand to "uninstall" Cortex: that deletes your data too (see Uninstall and cleanup).

Upgrading. Run the newer setup: it installs into the same folder and replaces cortex-desktop.exe. The data directory is not touched. If the same version is already installed, the setup first asks whether to reinstall or uninstall.

The setup's details pane lists every step it ran; leave the last page open and use "Show details" when a step fails. The setup does not write a log file.

First start: agent CLI setup#

The last page of the setup starts Cortex. On the first start of an installation with no agents, Cortex opens the Runtimes screen in setup mode instead of the Agents screen. The same screen stays in the sidebar (SYSTEM → Runtimes) for later checks, retries and manual steps.

For each runtime the screen shows what Cortex found: the executable, its version and whether the CLI says it is signed in. Cortex asks the CLI itself, with read-only commands and a timeout: claude --version and claude auth status --json, codex --version and codex login status, opencode --version and opencode providers list (OpenCode 2: opencode auth list --standalone --format json). Their answers are read for the version and the signed-in state only; they are never stored or logged.

Status Meaning
Ready Found, answers, and says it is signed in.
Sign-in required Found and answers, but not signed in. Run the command shown (claude auth login, codex login) in a terminal, then Check again.
Free models only OpenCode with no provider signed in: only its free models work. opencode auth login adds a provider.
Installed — sign-in not verified Found and answers, but its sign-in state could not be read.
Not installed Not found (see the lookup order in Agent CLI prerequisites).
Unavailable Found but not usable: it does not answer, config.json points at a path that does not exist, or it is installed only through npm (a .cmd launcher Cortex never runs). The message says which and what to do; Cortex never installs a second copy over it.

Every runtime that is not installed has a checkbox, checked by default; uncheck the ones you do not want. Install selected runs, one after the other, the official installer of each checked CLI:

CLI What Cortex runs Needs
Claude Code winget install --id Anthropic.ClaudeCode --exact --source winget --scope user --no-upgrade --silent (the winget package Anthropic's setup page lists; winget checks the download's SHA-256) winget (App Installer)
Codex OpenAI's standalone installer from the Codex README, irm https://chatgpt.com/codex/install.ps1 | iex, in Windows PowerShell without profile, non-interactive (CODEX_NON_INTERACTIVE=1); it checks the SHA-256 of what it downloads Windows PowerShell 5.1
OpenCode npm install --global opencode-ai, run as node.exe with npm's own npm-cli.js Node.js with npm
  • Every installer runs for your Windows user only. Cortex never asks for administrator rights and never changes an execution policy. Should a tool's installer need elevation, Windows shows its own prompt, which you may decline.
  • Installing accepts that tool's license terms (winget is run with --accept-package-agreements).
  • A CLI that is already installed is kept as it is: Cortex never reinstalls, upgrades or downgrades it. One that is installed but does not answer is reported, not replaced. A runtime whose runtimes.<id>.executable is set in config.json is never installed over.
  • Cortex installs no prerequisite. When winget or Node.js is missing, the row says so and shows the manual command and the vendor's documentation address instead.
  • An installer may run for up to 20 minutes. Cancel ends the installer's whole process tree and skips the CLIs not reached yet; closing Cortex does the same.
  • After each install Cortex checks the CLI again. It finds a new CLI without restarting, even when the installer added its folder to your PATH after Cortex started (see Environment variables).
  • Each row ends as Installed, Already installed — kept, Failed (with the reason and what to do) or Cancelled. A failed or cancelled row can be installed again.
  • Skip for now (or Continue after an install) leaves setup mode. Cortex records this in setup.json and does not open the screen on its own again.

Installing a CLI gives you no account, subscription, API credits or provider access. Sign in with each CLI's own login before its agents can work.

Launching#

After installing, start "Cortex" from the Start Menu (or the desktop shortcut). From a source build, start Start.bat, or run target\debug\cortex-desktop.exe / target\release\cortex-desktop.exe directly. The executable takes no arguments. No cortex command-line tool exists (planned as Session 13 in Planning\TODO.md, not implemented).

On start the Core creates the data directory and a default config.json, then the splash screen waits until the Core is READY. The MCP server runs inside this process and only while the window is open. Closing the window shuts the Core down and stops running agents; on the next start they are STOPPED and must be started again. Agents that were still active when Cortex ended abruptly (crash, process killed, or a shutdown that did not finish) come back CRASHED with recovery.cortex_restart.

To run a second, isolated instance, set CORTEX_DATA_DIR to another absolute directory and give that directory's config.json a different mcp.port (or 0), because the default port 47821 is held by the first instance. Start.bat contains a commented set CORTEX_DATA_DIR=... line for this.

Configuration#

config.json lives in the data directory. It is created with defaults on first start, has no UI, and is read once at startup: edit it with Cortex closed, then start Cortex again. Only schema_version (must be 1) is required; any key you omit keeps its default. Unknown keys are rejected, and an invalid value stops the Core with config.invalid naming the field.

Key Default Meaning
schema_version 1 (required) Record version. Missing or different value fails with config.invalid.
logging.level "info" Least severe level written: error, warn, info, debug, trace.
logging.max_file_bytes 5242880 (5 MiB) Size at which logs\cortex.log rotates. Allowed 65536 to 1073741824.
logging.max_files 3 Log files kept, including the active one. Allowed 1 to 20.
resources.max_active_processes 6 Concurrent runtime processes (one per session). Allowed 1 to 32. A start over the limit is refused with resource.limit_reached; there is no queue.
orchestrator.max_parallel_tasks 2 Tasks running at once, each on its own agent. Allowed 1 to 32.
orchestrator.max_parallel_tasks_per_project absent Tasks of one project running at once. Allowed 1 to 32; absent, only max_parallel_tasks applies.
orchestrator.max_parallel_tasks_per_runtime absent Tasks on one runtime running at once; a task then goes to an agent of another runtime when one can run it. Allowed 1 to 32; absent, only max_parallel_tasks applies.
mcp.enabled true Starts the MCP server. When false, no server runs, mcp.json is not created and sessions get no CORTEX_MCP_URL / CORTEX_MCP_TOKEN.
mcp.port 47821 TCP port on 127.0.0.1 (loopback only). 0 lets the system pick; otherwise 1024 to 65535. If the bind fails, Cortex logs mcp.start_failed and runs without MCP.
mcp.public_url absent HTTPS origin that reaches this Cortex through your own tunnel, as https://host[:port] with no path, query or fragment. Cortex opens no tunnel. See ADR 0010.
runtimes.<id>.executable absent (lookup, see Agent CLI prerequisites) Absolute path to the CLI. <id> is claude-code, codex or opencode. Must be absolute. Codex requires an .exe; OpenCode rejects .cmd and .bat; Claude Code only requires that the file exists. When it is set, the Runtimes screen never installs that CLI.

Example (backslashes must be doubled in JSON):

json
{
  "schema_version": 1,
  "logging": { "level": "debug" },
  "mcp": { "port": 47822 },
  "runtimes": {
    "claude-code": { "executable": "C:\\path\\to\\claude.exe" }
  }
}

Environment variables#

Variable Who sets it Effect
CORTEX_DATA_DIR You Overrides the data directory. Must be absolute, otherwise start fails with dirs.invalid_data_dir.
LOCALAPPDATA Windows Builds the default data directory %LOCALAPPDATA%\Cortex. If it is unset and CORTEX_DATA_DIR is unset, start fails with dirs.unresolved.
PATH You Used to find claude.exe, codex.exe and opencode.exe when runtimes.<id>.executable is not set. Cortex searches its own PATH first, then the machine's and your user PATH as the registry holds them at that moment, so a CLI whose installer added its folder while Cortex runs is found without a restart. Cortex never writes to either PATH. OpenCode also looks beside an opencode.cmd npm shim.
USERPROFILE (fallback HOME) Windows Only used to show the data directory as ~\... in the window.
CORTEX_MCP_URL, CORTEX_MCP_TOKEN Cortex Set by Cortex in the environment of each agent process while MCP is on: the local endpoint and a per-session credential. Do not set them yourself.
OPENCODE_PERMISSION Cortex Set by the OpenCode adapter on an OpenCode 1 process so edit, bash and webfetch ask; every request is then rejected. OpenCode 2 ignores it: the same rules go under permission in OPENCODE_CONFIG_CONTENT.
OPENCODE_CONFIG_CONTENT You or Cortex Extra OpenCode config as JSON. If you set it for Cortex, it must be a JSON object: the adapter adds the paths of the agent's skills to its instructions and, for OpenCode 2, the permission rules to its permission. An OpenCode 2 agent does not start when it is not a JSON object.
CORTEX_CODEX_EXECUTABLE, OPENCODE_EXE You (tests only) Executable overrides for the opt-in real-CLI tests. The product does not read them.

Data and log locations#

Default data directory: %LOCALAPPDATA%\Cortex, or CORTEX_DATA_DIR when set.

Path Holds
config.json Configuration (see above).
projects.json, agents.json Projects and agents; created on first write.
objectives.json Objectives with their tasks and attempts; created on first write.
processes.json Live runtime processes (PID, creation time, executable, owner); used at the next start to end orphans only when the identity matches.
mcp.json The user token of the MCP surface (64 hex characters), created on first start with MCP enabled. Whoever holds it acts as you through MCP. Treat as a secret.
mcp_oauth.json OAuth clients and refresh tokens you approved; created on first write. Stored in clear text. Treat as a secret.
setup.json When the first-run agent CLI setup was finished or skipped; created then. Delete it to see the setup again (it is offered only while no agent exists).
cortex.lock Instance lock; one Cortex instance owns a data directory.
logs\cortex.log, cortex.1.log, ... Structured logs, newest in cortex.log.
%LOCALAPPDATA%\dev.cortex.desktop WebView2 profile of the window (Tauri default for the app identifier), outside the data directory. The UI keeps nothing of its own in browser storage.

Sessions and agent output are never persisted: agent output (256 KiB per agent) and terminal bytes (1 MiB) live in memory only.

Logs are one JSON object per line (ts, level, module, event, correlation_id, fields). cortex.log rotates at logging.max_file_bytes into cortex.1.log, cortex.2.log, and so on, keeping logging.max_files files. Secrets appear as [REDACTED]. Useful events: core.starting, config.loaded, mcp.started, mcp.start_failed, api.command_failed, runtime.shutdown_incomplete, runtime.contract_unsupported. An error shown in the window carries a correlation id: search the log for it. Startup errors that happen before the log opens are shown in the window and, in debug builds only, on the console; release builds have no console.

Agent CLI prerequisites and authentication#

Cortex never reads or stores the credentials of an agent CLI and never signs one in. Each CLI must be authenticated for the Windows user that runs Cortex. The adapters were verified against Claude Code 2.1.295, codex-cli 0.160.0, OpenCode 1.18.33 and OpenCode 2.0.31; the setup commands against Claude Code 2.1.301, codex-cli 0.162.1, OpenCode 1.19.0 and OpenCode 2.0.31.

"PATH" below is Cortex's own PATH followed by the machine's and the user's PATH as the registry holds them at each lookup (see Environment variables).

Runtime Executable lookup Authentication
Claude Code (claude-code) runtimes.claude-code.executable if set (the file must exist), else the first claude.exe in PATH, else %USERPROFILE%\.local\bin\claude.exe (the native installer, which does not add its folder to PATH), else %LOCALAPPDATA%\Microsoft\WinGet\Links\claude.exe (winget). An npm install only provides a .cmd shim, which Cortex never runs: with only claude.cmd in PATH the runtime is runtime.unsupported_install; point the config key at the real claude.exe instead. The Runtimes screen asks claude auth status --json (exit code 0 signed in, 1 not). Agent start does not check it: log in with claude auth login first, otherwise the first turn fails. Readiness of a session is the CLI's own initialize handshake, with no model call.
Codex (codex) runtimes.codex.executable if set (must exist and be an .exe), else the first codex.exe in PATH, else %LOCALAPPDATA%\Programs\OpenAI\Codex\bin\codex.exe (the standalone installer), else %LOCALAPPDATA%\Microsoft\WinGet\Links\codex.exe. A .cmd shim is refused: with only codex.cmd (an npm install) in PATH the runtime is runtime.unsupported_install; set the config key to the codex.exe of that install. Checked at agent start, and on the Runtimes screen, with codex login status (no model call). If it fails, the start fails and tells you to run codex login in a terminal.
OpenCode (opencode) runtimes.opencode.executable if set (must exist; .cmd and .bat are refused), else the first opencode.exe in PATH, else the native binary of an npm install beside an opencode.cmd npm shim in PATH, else the same under %APPDATA%\npm (npm's default global folder). The npm native binary is OpenCode 1's node_modules\opencode-ai\bin\opencode.exe or, when that is absent, OpenCode 2's node_modules\@opencode\cli\bin\opencode.exe (npm package @opencode/cli, which replaces OpenCode 1 and its opencode command). Both are supported. An executable in OpenCode 2's npm layout is launched as OpenCode 2 (opencode acp without --cwd, permission rules in OPENCODE_CONFIG_CONTENT); any other is launched as OpenCode 1, and an agent whose CLI then reports the other major version does not start. OpenCode 1: the Runtimes screen counts the credentials opencode providers list reports; none means only OpenCode's free models work. OpenCode 2: opencode auth list also lists MCP servers and tools, which look like providers, so only a list with nothing but MCP servers is read (free models only); anything else shows the sign-in as not verified. Agent start does not check it. OpenCode must be configured with a usable provider and model; an unknown model is refused at start.

The window creates only Claude Code agents. Codex and OpenCode agents are created through the MCP create_agent tool and always run in structured mode. Structured agents cannot do anything that needs approval (Claude Code runs with --permission-prompts none, Codex with --sandbox read-only, OpenCode requests are rejected; OpenCode 2 then ends the turn itself, which Cortex reports as cancelled by OpenCode). Details: user guide and ADR 0003, 0006 and 0009.

Troubleshooting#

Symptom Check Fix
Build stops because apps\desktop\ui\dist is missing dir apps\desktop\ui\dist\index.html Run npm run build in apps\desktop\ui before cargo build or cargo test -p cortex-desktop.
npm run build or npm test fails on engine or syntax errors node --version against the Node ranges above. Install a supported Node.js.
cargo rejects the workspace or its edition rustc --version must be 1.89 or newer. rustup update.
Linker error such as link.exe not found The MSVC build tools are missing. Install the Microsoft C++ build tools (a Tauri 2 prerequisite).
Start.bat prints Falhou. Veja a mensagem acima. The failing step is the last [n/3] line above it. Fix that step (npm or cargo) using the rows above.
No window opens; debug console prints Cortex could not open its window; exit code 1 Microsoft Edge WebView2 Runtime listed under Installed apps. With an invalid WebView2 runtime Tauri can also keep running without a window. Install the WebView2 Evergreen runtime. Check echo %ERRORLEVEL% after the run.
Splash says "Cortex Core could not start", code instance.already_running cortex-desktop.exe already running in Task Manager and holding cortex.lock in the data directory. Close the other instance, or set CORTEX_DATA_DIR to another absolute path.
Splash shows config.invalid The message names the field. Open config.json; unknown keys, out-of-range values, bad JSON and a wrong schema_version are all rejected. Correct the field per the table above. Deleting config.json regenerates defaults but loses your runtimes.* paths.
Splash shows dirs.invalid_data_dir or dirs.unresolved echo %CORTEX_DATA_DIR% (must be absolute) and echo %LOCALAPPDATA%. Set CORTEX_DATA_DIR to an absolute writable folder, or unset it.
Agent start fails with runtime.not_installed The Runtimes screen, or where.exe claude.exe (or codex.exe, opencode.exe). The message says whether the CLI was not found or the configured path does not exist. Install the CLI from the Runtimes screen or by hand, or set runtimes.<id>.executable and restart Cortex. A CLI added to your PATH while Cortex runs is found without a restart.
Runtimes screen: "winget (Windows Package Manager) was not found" winget --version in a terminal. Install or update "App Installer" from the Microsoft Store, or install Claude Code by hand with the command shown.
Runtimes screen: "Node.js (node.exe) was not found" node --version and npm --version. Install Node.js LTS from nodejs.org (it includes npm), then install again; or install OpenCode another way (see its docs) and Check again.
Runtimes screen: "The installer ended with code ..." The message ends with the installer's last line. Codes like 0x8A15... are winget errors. Check the network and proxy, then install again, or run the manual command shown in a terminal to see the full output.
Runtimes screen: "The installer finished, but Cortex cannot find ..." where.exe for the executable, in a new terminal. Restart Cortex; if the CLI lives elsewhere, set runtimes.<id>.executable.
OpenCode agent start fails with Unrecognized flag: --cwd in command opencode acp opencode --version says 2.x, and where.exe opencode.exe shows it outside node_modules\@opencode\cli\bin. Cortex recognises OpenCode 2 only in its npm layout. Install it with npm (npm install -g @opencode/cli), or point runtimes.opencode.executable at the opencode.exe under node_modules\@opencode\cli\bin.
OpenCode agent start fails with runtime.invalid_config naming OPENCODE_CONFIG_CONTENT echo %OPENCODE_CONFIG_CONTENT% in the environment Cortex starts from. OpenCode 2 takes Cortex's permission rules through that variable, so it must be a JSON object. Fix or remove it, then restart Cortex.
OpenCode agent start fails with "was launched as OpenCode 1, whose permission rules it does not read" (or the reverse) opencode --version and the executable the Runtimes screen shows. The CLI's major version does not match where it is installed. Reinstall it with npm, or set runtimes.opencode.executable to the binary of the version you use.
Runtimes screen: Sign-in required The command shown, e.g. claude auth status or codex login status, in a terminal. Sign in with the CLI's own command (claude auth login, codex login, opencode auth login), then Check again.
Windows SmartScreen blocks the setup ("Windows protected your PC") The setup is not code-signed. Get-FileHash <file> -Algorithm SHA256 must match the published SHA-256. "More info" → "Run anyway", only when the hash matches.
Codex agent start fails asking for login codex login status in a terminal. codex login, then start the agent again.
Start fails with resource.limit_reached The Processes screen lists live runtime processes; the limit is resources.max_active_processes (6). Stop another agent, or raise the limit and restart.
Agent stays in STARTING A start waits up to 60 s for the runtime to report ready. Read logs\cortex.log. Press Stop, fix the cause, then Start.
MCP screen shows Off mcp.enabled in config.json, and mcp.start_failed in the log (mcp.bind_failed means the port is taken: netstat -ano | findstr :47821). mcp.token_record_invalid means mcp.json is corrupt. Set mcp.enabled to true, change mcp.port, or delete mcp.json (a new token is generated; reconfigure local MCP clients). Restart Cortex.
Antivirus quarantines a test binary while running cargo test The codex integration test binary of cortex-bootstrap was once flagged as a false positive (ADR 0006). Exclude it in your antivirus, or run the suite without that test.

Uninstall and cleanup#

Installed with the setup. Close Cortex, then uninstall "Cortex" from Settings → Apps → Installed apps (or run uninstall.exe in the install folder). The uninstaller removes cortex-desktop.exe, uninstall.exe, the Start Menu and desktop shortcuts and the Settings entry. It keeps the Cortex data directory and everything in it. Its checkbox "Delete the application data" removes only %APPDATA%\dev.cortex.desktop and %LOCALAPPDATA%\dev.cortex.desktop (the WebView2 profile: browser cache), never %LOCALAPPDATA%\Cortex. To remove your Cortex data as well, delete the files in the table below after uninstalling.

Source build. A source build installs nothing: no registry entries, no services, no shortcuts. Cleanup means deleting folders. Close Cortex first (Task Manager should show no cortex-desktop.exe); closing the window stops running agents.

What Delete it to What you lose
target\, apps\desktop\ui\node_modules, apps\desktop\ui\dist in the repository Free disk space Nothing but build output; Start.bat rebuilds it.
%LOCALAPPDATA%\Cortex (or CORTEX_DATA_DIR) Remove all Cortex data Everything below.
config.json only Reset configuration Your edits, including runtimes.* paths; defaults are regenerated at the next start.
projects.json, agents.json, objectives.json Forget projects, agents and task history The definitions of your projects and agents (name, runtime, interaction, model) and every objective and task with its attempts. The project folders themselves are not touched.
mcp.json Rotate the MCP user token The current token; a new one is generated at the next start and local MCP clients must be reconfigured.
mcp_oauth.json Revoke all remote MCP clients All approved OAuth clients and refresh tokens; remote clients must be approved again.
logs\ Remove logs Diagnostic history only.
%LOCALAPPDATA%\dev.cortex.desktop Remove the WebView2 profile A browser cache; no Cortex data.

Cortex stores only the path of each project folder, so deleting the data directory never deletes your code. Credentials and settings of Claude Code, Codex and OpenCode belong to those CLIs and are not removed: log out or uninstall them with the CLI itself. Uninstalling Cortex also keeps the CLIs its Runtimes screen installed; remove them with their own tools (winget uninstall Anthropic.ClaudeCode, the uninstall steps in the Codex README, npm uninstall --global opencode-ai). Delete the data directory only when you accept losing the rows above; they cannot be recovered.

Type to search.