Cortex
AI dev cockpit
Booting cortex…
Capability
Node
Self-hosted AI dev cockpit · v3.5.0

One cockpit. Every model. Orchestrated.

Cortex is a self-hosted desktop app for driving multiple AI coding agents from one window. Instead of juggling separate terminals for Claude, Codex, Gemini and friends, you type a task once and Cortex routes it to a model that can do it, runs the work locally, and records what happened. Windows, Linux and macOS. It runs entirely on your machine, with no telemetry.

20+model providers
7maker CLIs · on your plan
$0local · Ollama & more
100%self-hosted · your keys
Claude Codex Gemini Qwen Grok Ollama · local · $0
Status

Where it stands

Cortex is a personal homelab project maintained by one developer. It works, and it is used daily, but expect rough edges.

Installers are unsigned

Unsigned until a code-signing certificate is provisioned, so SmartScreen and Gatekeeper warn on first launch.

Reliability numbers are local estimates

Metrics are computed from local run history only. The dashboard cannot see retries that happen inside a gateway, and cost figures are estimates. The UI labels them as such.

Model Fabric routing is explicit

You pick the endpoint’s model in the composer. Automatic local-first routing is planned but not built.

In-app update is Linux only

The Linux AppImage self-update verifies an ed25519 signature before it swaps a binary in. On Windows and macOS you update by re-installing the latest release.

Release 3.5.0

New in 3.5

Cortex on your phone, paired with a QR code and pushed to without a third party — on top of 3.4’s work on knowing what needs you and starting fast.

Cortex on your phone

Chat, approvals, projects and per-file diffs, checkpoints, routines, run replay and usage — from an Android APK or an installable web app on iPhone, over Tailscale or your LAN. The phone is a client only: the models, the agent CLIs and your files stay on your machine.

Pair by scanning a code

Settings → Mobile shows a QR and a six-digit code, good for ten minutes and single use. Each paired phone holds its own bearer token, stored hashed, and you can list and revoke devices. Anything that is not the local machine — including a reverse proxy — has to present one.

Web Push, no third party

Encryption and signing are built from crates already in the tree, so the only egress is to the browser vendor’s own push service. It fires when a run needs approval, finishes or fails, or a quota passes 90%, and the notification opens the screen it is about.

You can see what needs you

A pending approval raises a toast with an Open action, a desktop notification when the window is hidden, an inbox row and an amber count on the thread. Today opens with what is waiting: approvals, running threads with Stop, recent failures. Ctrl + Shift + A jumps to the oldest one.

Command palette v2

Ctrl/Cmd + K fuzzy-searches actions, panels, threads, sessions, settings sections, projects, profiles and slash commands, with recents first and > @ # / prefixes to narrow. A settings hit opens the right tab and highlights the card.

It starts faster

Forty-one panels load on demand, streaming merges token fragments every 16 ms instead of re-rendering the shell per token, the dashboards got SQLite indexes, and twelve polling loops pause while the window is hidden. Startup timings are recorded on every push, per OS.

Explore Cortex

The whole product, in one galaxy.

Every capability is a node. Drag to orbit · scroll to zoom · click any node to dive in — or read them all as a list. Here they all are, cluster by cluster.

Orchestration

4 nodes

Every model

4 nodes

Multi-agent

5 nodes

Safety & control

3 nodes

Knowledge & code

11 nodes

Insight

4 nodes

Anywhere

4 nodes
The cockpit

One window for every model you run.

A glassmorphic look at the real Cortex desktop — activity groups down the side, a model picker and reasoning dial up top, @-mention context, live workers, and a cost HUD that tracks projected spend against your budget. Move your cursor over it.

cortex — ~/code/cortex main ✓ Coral Dark
Agents
Knowledge
Code
Project
Automate
System
Claude Opus 4.8▾ Claude Opus 4.8 GPT-5.5 Gemini 2.5 Pro Ollama · local effort minimallowmedhigh
you
Refactor the auth module and add tests across the worker pool.
@src/auth/ @tests/auth.spec.ts @ADR-014
Planned 4 subtasks — routing 2 to local, 1 to a Lane on your plan, 1 to a flash model.
decompose → route → dispatch → synthesize
coder · lane · opus tester · ollama reviewer · flash docs · queued
Ask Cortex… @ to add context
Budget28%
projected$1.40
budget$5.00
metered$0.00
mock An illustrative, to-scale mock of the desktop UI — not a screenshot. Every control shown (ActivityBar groups, model picker, reasoning-effort dial, @-mention context, worker pills, cost/budget HUD) maps to a real Cortex surface.
Runs on your subscriptions

Stop paying per token.
Use the plans you already have.

Cortex spawns each maker’s own CLI headless on your machine and lets it authenticate with its own login — the same Claude Max, ChatGPT/Codex, Gemini or Qwen plan you already pay for. No key is ever handed to Cortex, nothing routes through a middleman, and a live dashboard shows your real rate-limit windows.

In-app sign-in, each CLI’s own way

An embedded terminal runs claude /login, codex login, gemini — no secret crosses the app boundary.

Live subscription usage

Poll your Claude Max and ChatGPT/Codex windows so you always know what’s left — surfaced right in the cockpit.

Add a maker in one file

A new provider CLI is one *_spec.rs + one catalog row — data-driven onboarding, not a rewrite.

Bring your history with you

Import your Claude.ai and ChatGPT data export — every old conversation becomes resumable and full-text searchable inside Cortex.

cortex — connect a model
 
Everything in the cockpit

All of it, in one app.

Every capability below is real and code-backed — orchestration, the model surfaces, safety, knowledge, and the Cortex Gateway for full tool and code work.

Isometric bento of app panels at mixed heights, three lit in coral with content rows and one active indicator above the largest tile
One surface, many panels. The large tile is orchestration; the rest are the capabilities below, all in the same app.

Cost-aware orchestration

A lead model decomposes each task and routes every subtask to the cheapest model that can actually do it — local and free where it can, a flagship only where it matters — then synthesizes and verifies one result against a live budget.

decomposecapability-gatecheapest-capableverifylive budget
// flagship

Runs on your subscriptions

Drives each maker’s own CLI headless on your box — Claude, Codex, Gemini, Qwen, Grok, aider, Mistral Vibe — signed in with the plan you already pay for. No key ever crosses Cortex.

// 7 maker CLIs · in-app PTY login

Ultimate agent

Fan one goal across every connected model at once, each in its own parallel git worktree, then let an AI synthesizer merge the strongest result. Many attempts, one best answer.

all modelsparallel worktreesAI-merge
// all models, in parallel

Import your chat history

Bring your existing Claude.ai and ChatGPT conversations into Cortex via their official data export — every imported chat becomes resumable and full-text searchable beside your new ones.

// Claude.ai · ChatGPT

Phone client

Chat, approvals, projects and diffs, checkpoints and usage from your phone, over Tailscale or your LAN. Paired by QR code; notified by Web Push with no third party.

// Android APK · iPhone web app

Bundled Tailscale

A userspace Tailscale ships inside the app — reach your home gateway, local models and memory from any network. Prefers your system Tailscale if you run one.

// no admin · no ports

Teams

A manager model plus specialist workers — coder, tester, reviewer — that plan and execute concurrently.

// manager + workers

Lanes

Run the same task across N providers at once, each in its own isolated git worktree. Diff, then merge the winner.

// git-worktree isolation

Model Arena

Put 2–4 models head-to-head on real rubrics, vote verdicts, and track who wins over time on a persistent ELO board.

// persistent ELO

MCP catalog

A real stdio JSON-RPC client plus a curated catalog of well-known servers — add tools for every model in one click.

// JSON-RPC · one-click

Checkpoints + /undo

Auto-snapshots as agents work (gzipped tarballs, keep last 10). See a pre-restore diff before anything is touched — every edit is reversible.

// git-independent rollback

Approvals & sandbox

Approval prompts and a trust matrix gate risky actions; a sandbox and safe-command list constrain shell work.

// trust matrix

Reasoning-effort control

A per-prompt dial — minimal · low · med · high — tunes how hard a model thinks before it acts.

// minimal → high

Every model, local + cloud

Maker CLIs on your plan, any OpenAI-compatible API (Groq, Together, Fireworks, DeepSeek, Mistral, xAI, Perplexity, OpenRouter, Qwen, Kimi, Cohere, Gemini, Llama), and local runtimes (Ollama, LM Studio, vLLM, llama.cpp, TabbyAPI, Text-Gen-WebUI) — one adapter trait.

// 7 CLIs · 13 API providers · 6 local runtimes

Embedded PTY terminal

A real terminal in the app — run CLIs, sign providers in, watch lanes work, all in-cockpit.

// real shell

Code editor + completion

An editor with inline completion sits beside chat, so you can read and refine what the agents write.

// inline

Git source control

Stage, commit, browse history, and diff — version control woven through every run.

// history + diff

Knowledge graph

A graph of your project knowledge that agents draw on for grounded, connected context.

// connected context

Deep research

Fan-out web research synthesized into a cited report.

// fan-out · verify

Skills & Workflows

Reusable Skills plus Workflows and Routines that chain steps into repeatable automation.

// routines

Observability + tracing

Local tracing across every model call and lane — see exactly where time and tokens went.

// distributed

Memory / brain

An Obsidian-style knowledge brain with [[wikilinks]] that persists context across sessions.

// Obsidian-style [[wikilinks]]

Voice

Dictate to the cockpit. The browser’s speech recognition handles most cases; a local whisper-cli is the fallback when it is installed. Only the whisper path is fully on-device.

// local Whisper.cpp

Account-usage dashboard

Poll your Claude Max and ChatGPT/Plus rate windows so you always know what’s left.

// Max / Plus windows

15 themes

Fifteen built-in themes, including the Coral Dark flagship this site mirrors.

// incl. Coral Dark

Command palette

A refined, accessible UI across Windows, macOS and Linux — drive everything from a Ctrl+K command palette and a polished approval flow.

// Ctrl+K · accessible

Cortex Gateway

The cloud orchestration gateway that powers full tool and code work — worktree isolation, shell exec, and approval gates behind every Lane.

// cloud orchestration gateway

BYO keys · self-hosted

Your keys live in the OS keychain, on your box. Cortex only talks to the providers you configure.

// OS keychain · no phone-home
Orchestration · live

One request, scrubbed stage by stage.

Capability-gated before price-gated — a chat-only model never touches your shell. Scroll to watch a task move through the orchestrator: decomposed, routed to the cheapest model that can actually do each subtask, dispatched across providers in isolated Lanes, then synthesized and verified against a live budget.

01

Decompose

Lead model plans typed subtasks as strict JSON.

02

Cost + capability route

Cheapest model that can actually do each one.

03

Concurrent dispatch

Lanes run in parallel, worktree-isolated.

04

Synthesize + verify

One verified result merged from every lane.

05

Budget

Projected spend tracked against your cap.

decompose — the lead model breaks your request into typed subtasks.

stage 1 / 5
honest Capability is gated before cost, enforced by tests: a task that needs a shell can never route to a chat-only model. Easy work goes to the cheapest capable model (a free local Ollama wins ties); hard work goes to the strongest. The router defaults to local — preferring an installed maker CLI and falling back to the Cortex Gateway, which carries worktree isolation, shell exec and approval gates. Local Ollama is chat/edit-only — no autonomous shell.
Subscriptions · API keys · local — your choice per turn

Every maker, three ways in.

Cortex unifies maker CLIs on your own plan, any OpenAI-compatible API, and local runtimes behind one adapter trait, then routes each chat to whatever serves it. Hover any chip to light up its node in the constellation above.

A coral hexagonal hub with a glowing core, four lanes fanning out through capability gates to four platters coloured coral, teal, blue and violet
One request in; a capability gate on every lane; four providers out. Cap colours are the same hues the hero uses for Claude, GPT, Gemini and Ollama.
honest All three tiers are wired today — seven maker CLIs, thirteen OpenAI-compatible API providers, and six local runtimes — behind one adapter trait. Each API provider gets a guided key row in Settings with a status pill driven by the real vault state — no fake "ready" badges. Each adapter is capability-gated and chat-correct: API and local-runtime endpoints advertise chat only, never tool or code work they can’t actually do. Model slugs are discovered at runtime from Ollama, local runtimes and Model Fabric endpoints, so those lists stay current; the hosted API providers ship a sensible default slug you can override. and a dead local runtime fails fast with a plain "start the server" error instead of a hang.
Your cockpit, anywhere

Reach it from your phone.
No ports, no admin.

Cortex 3.5 puts the cockpit on your phone: an Android APK, or an installable web app on iPhone, that talks to your desktop over Tailscale or your LAN. Pair it by scanning a QR code; approvals and finished runs arrive by Web Push with no third party in between. A userspace Tailscale ships inside the desktop app, so it joins your tailnet without admin rights — and it prefers your system Tailscale if you already run one.

Android APK or iPhone web app

Chat, approvals, projects and per-file diffs, checkpoints, routines, run replay and usage. The phone is a client only: the models, the agent CLIs and your files stay on your machine.

Bundled Tailscale, no admin

The userspace tailnet ships inside the app — reach your home gateway, local models and memory from any network. It defers to your system Tailscale when one is present.

Paired by QR, approved from anywhere

Settings → Mobile shows a single-use QR code; each phone gets its own revocable token. Risky actions land in the approvals inbox and as a Web Push notification — sign them off, or hold them, from wherever you are.

honest The phone app is a client of your own desktop: an Android APK you install yourself, or a web app you add to the iPhone home screen. It talks only to your machine, over Tailscale or your LAN, and anything that is not the local machine has to present a paired phone’s token. The bundled Tailscale is userspace; if you already run system Tailscale, Cortex uses it instead.
A desktop screen and a phone on one local network, joined by a single lit amber path carrying packets, with no cloud between them
Desktop and phone on one network. The phone talks only to your own machine, over Tailscale or your LAN.
tailnet Cortex 9:41
Chat Projects Inbox
Routed across 4 models in parallel worktrees — AI-merging the best result now.
Run the Ultimate agent on the auth refactor.
you
approval · waiting git push origin cortex/run-7 ApproveHold
Ask Cortex…
Security & trust

Untrusted by default. Keys sealed in the keychain.

Every project is untrusted until you say otherwise, agents fail closed, and your keys never leave your machine. Self-hosted means the security model is yours — no phone-home.

Four request lanes meeting a barrier: three stop at red deny bars, one passes through a lit slot and continues to a sealed hexagonal vault with a glowing core
Fails closed. Only the trusted lane crosses the gate; the rest stop at it. Behind, the key vault stays sealed.

Encrypted key vault, master key in the OS keychain

API keys live in an AES-256-GCM-encrypted vault. The 32-byte master key is stored in the OS keychain — never beside the keys it unlocks. Keys never leave your machine and are re-read per run; nothing routes through a middleman.

Untrusted by default

Every project is untrusted until you trust it. An untrusted repo is forced to the read-only sandbox tier, and never inherits your auto-approve toggles or the repo’s own guardrail file. Codex is launched with --sandbox read-only so the tier is enforced before it runs; for the other CLIs the tier is applied to their tool calls as Cortex sees them, and blocked calls are rewritten into errors.

Granular auto-approve — never for strangers

A per-action trust matrix (reads, edits, safe commands) skips the prompt for repos you trust. The invariant is hard: an untrusted repo never inherits your toggles — even "approve all commands" turned on globally still prompts there. Deny-biased, re-gated against the sandbox tier on every use.

Secrets scrubbed before display or disk

A tool call that embeds a live credential — Bearer sk-… in a curl, a key in a file write — is redacted to [REDACTED] before the approval prompt renders and before the trace store persists it. The gates still judge the original; only what you see and what's stored is scrubbed.

Safe-command allowlist

A Codex-style allowlist (ls, cat, git status, grep…) lets agents inspect an untrusted repo but never write. It fails closed: not on the list, not allowed.

Private over your own tailnet

Mobile access rides your tailnet — no public ports and no inbound exposure. The bundled Tailscale sidecar gives the desktop outbound reach; serving the phone app uses your system Tailscale. Your phone talks only to your machine, encrypted end-to-end over your tailnet — encrypted, never the open internet.

Signed AppImage self-update that fails closed

The Linux AppImage self-update verifies an ed25519 signature before it swaps a binary in; on Windows and macOS you update by re-installing the latest release. If the signature doesn't check out, nothing installs — a trojan build can't slip in. Verification fails closed, every time.

Cross-site requests rejected

The mobile server’s WebSocket and the /mcp endpoint reject cross-site requests, so a page in your browser cannot reach either one.

honest In-app auto-update is Linux/AppImage only; on Windows and macOS you update by re-installing the latest release. A gateway deployment is optional; the local CLIs work standalone. Direct BYO keys are the standalone/cloud build variant — the default routes orchestration through the Cortex Gateway.
Roadmap

What's landing next.

Built in the open, steered by a standing competitive scan of the whole multi-model desktop space — Cherry Studio, Jan, LibreChat, Kilo Code, Chorus and friends. These are the next moves, tracked in the repo.

MCP Apps — tools that render, not just return

The Jan-2026 MCP extension lets a tool answer with an interactive UI — forms, tables, dashboards — rendered in-chat. Cortex's MCP host already preflights runtimes (npx/uvx missing? you're told at add-time, with the install command); sandboxed ui:// widget rendering is the next slice.

Verdict cards for team runs

Every orchestrated run already ends in a synthesis pass; next it returns a structured verdict — pass/fail, score, per-check evidence — with one-click repair rounds for what failed.

Screen as context

Attach what you're looking at: one keystroke captures the screen and hands it to a vision-capable model through the existing attachment pipeline.

Glob permission rules

Kilo-style allow / ask / deny patterns — "git push*": ask, "src/**": allow-edit — layered under the trust matrix. Deny always wins, and a rule can only ever narrow what the sandbox tier already permits, never widen it.

honest This is a roadmap, not a promise list — each item is scoped in docs/RESEARCH-ROADMAP.md in the repo, and lands when it's actually verified, not when a date says so.
Get it

Install Cortex,
connect your models.

A polished, self-contained cross-platform app. Install without admin on Windows, drag-and-drop on macOS, run a single AppImage on Linux, or build it yourself — then bring your own keys. Once it’s running, pair your phone from Settings → Mobile.

Platform File
Windows 10/11Cortex_<version>_x64-setup.exe
per-user, no admin required
Debian / UbuntuCortex_<version>_amd64.deb
Fedora / RHELCortex-<version>-1.x86_64.rpm
Linux (universal)Cortex_<version>_amd64.AppImage
chmod +x, then run
macOS (Apple Silicon / Intel)Cortex_<version>_aarch64.dmg
Cortex_<version>_x64.dmg
unsigned The Windows and macOS builds are not code-signed yet, so SmartScreen and Gatekeeper will warn on first launch. The Linux packages need libwebkit2gtk-4.1 and GTK 3; the Windows installer needs the WebView2 runtime, preinstalled on Windows 11 and downloaded by the installer on Windows 10.
</>

From source

Clone the repo and build the Tauri 2 app yourself. Needs Node 20+ with pnpm, a Rust toolchain, and Go 1.26+ for the Tailscale sidecar.

build it yourself
git clone …
cd cortex
pnpm install
bash scripts/build-tsnet-sidecar.sh
pnpm tauri build
60-sec Launch Cortex → the onboarding wizard validates your setup → if you have no models it hands you to the Cookbook to pull one. Add a key in Settings → Providers, or just run a local Ollama tag, and start chatting. Updates are ed25519-signed and verified before the binary is swapped — fail-closed.
Self-hosted · your keys · no middleman

Run every model
from one cockpit.

Your keys in the OS keychain, your box, no phone-home. Cortex only talks to the providers you configure — runs real work fully offline with local Ollama and the local Claude CLI, brings your old Claude.ai & ChatGPT chats along, and follows you to your phone over Tailscale.