Tools

Ellivate Desktop

Mac launcher that wraps the publish + dev loop in buttons. Add a project folder, ask Claude or Codex to write code, run locally, ship live — without a terminal.

What it is

Ellivate Desktop is a Mac app that hosts the four-step builder loop in one window:

  1. + Add project — pick a folder. Empty is fine; your AI tool can write into it.
  2. Ask Claude / Codex / Aider — opens whatever AI agent you have on PATH in Terminal at the folder.
  3. Dev — runs the app locally with isolated dev data and an auto-set viewer cookie. Hot reload as you save.
  4. Publish — ships to a live URL. Ellivate handles hosting, auth, sharing.

Same machinery the CLI uses — just exposed as buttons. Everything you can do here you can also do in a terminal with ellivate.

Install

Desktop is the recommended entry point for builders who don't want to live in a terminal. Two install paths:

  • Direct download — grab the .dmg from ellivate.ai/desktop, drag Ellivate.app into Applications, launch.
  • Curl-pipe-bash — for terminal-comfortable users:
    curl -fsSL https://ellivate.ai/install | bash
    Installs the CLI and gives you everything Desktop wraps, plus the ellivate command on PATH.

On first launch Desktop opens your browser, signs you in to your Ellivate account, and writes credentials to ~/.ellivate/config.json — same file the CLI writes, so the two stay in sync. No terminal command required.

When Desktop detects Claude Code, Cursor, or Windsurf on your machine, it offers to install Ellivate's MCP server and skill into your IDE. Accept and your AI tool starts producing Ellivate-ready code from the next session.

What lives where

The desktop is a thin reader/writer over a few JSON files in your home directory. No database, no daemon.

~/.ellivate/
  config.json         # CLI auth (read by desktop, never sent to JS)
  projects.json       # project index — path → name + appId + devAppId
  desktop-prefs.json  # desktop-only state (hidden projects, MCP consent)

The CLI writes to config.json and projects.json. The desktop owns desktop-prefs.json. Either side can read both — they're plain JSON so you can also edit them by hand if you ever need to.

AI integrations

The launcher detects whichever agent CLIs are on your PATH when it boots:

  • Claude Code (claude)
  • OpenAI Codex (codex)
  • Aider (aider)

For each detected agent you get an "Ask <Tool>" button on every project card. Click → Terminal opens at the folder + the agent runs. First time using a tool, it'll prompt you to sign in via your browser; that's the agent's own auth flow, not Ellivate.

Through Settings → AI integrations you can wire Ellivate's MCP server (@ellivateai/mcp-server) into Claude Code with one click. Once connected, Claude knows the Ellivate patterns (auth via ellivate.user(), persistence via the KV SDK, import paths) before it writes code — fewer rewrites at publish time.

Hide a project

Each project card has a small ✕ button to remove it from the launcher. The folder and its .ellivate/* state stay untouched on disk. Hidden projects show up under Settings → Hidden projects with an Un-hide button.

Running ellivate dev or ellivate publish in a hidden folder automatically un-hides it — the launcher trusts that as a strong "I'm working with this again" signal.

How it relates to the CLI + dashboard

The desktop, CLI, and web dashboard are three views into the same Ellivate state:

  • CLI — power users + terminal-comfy builders.
  • Desktop — Mac launcher; same actions as the CLI exposed as buttons.
  • Dashboard (app.ellivate.ai) — web surface for sharing, env vars, gate config, and anything that doesn't fit the launcher's "one folder" model.

When the desktop's publish flow hits a gate (missing env vars or connection prompts), it hands off to the dashboard via an "Open in dashboard" button — the dashboard's gate form is the single source of truth for that surface.