CreativEdge is a local-first multi-agent chatbot that runs as a desktop app on Windows. You chat through a single surface; behind the scenes, an orchestrator (π Nexus) routes each turn to one of 13 specialists (one per creative/technical domain), each with a distinct voice and MBTI-shaped personality. Every specialist has its own folder, its own memory, and its own routing keywords.
Status: Phase 10 (Documentation) is β Complete / docs QA validated (2026-05-22). All canonical phases (0 through 10) are now β Complete. The desktop app, local backend, Electron packaging, dynamic ports, setup wizard, Ops console, crash-report local export, opt-in backup push, budget trends, and safe external release-link UX are all shipped β and the full documentation set (user guide, developer setup, add/customize-an-agent guides, troubleshooting guide, release runbook) is published under
docs/. Seetodo.mdfor the canonical phase roadmap.
- One chat surface, 14 voices. Type once; Nexus picks the right specialist (or, for multi-domain requests, convenes 2β3 and synthesises a single reply).
- Local-first. All data lives under
~/.creativedge/on your machine. No telemetry. No automatic external send. - Provider-pluggable. Default LLM runtime is the local Claude Code CLI when present + authenticated, with a built-in mock fallback so the app remains usable when Claude isn't available.
- Desktop app via Electron. Dynamic free-port allocation;
hardened renderer (
sandbox,contextIsolation,nodeIntegration:false,webSecurity:true); safe preload bridge for runtime config + allow-listed external links. - Operational surface. Setup wizard, Ops console with Diagnostics / Usage & cost / Budget & trends / Crash reports / Backup / Update info cards.
- Node β₯ 20.11.0 (nodejs.org).
- npm β₯ 10 (ships with recent Node).
- Git on
PATH. - (Optional but recommended) Claude Code CLI β the default provider. Install per Anthropic's instructions; the app falls back to a mock provider when it's missing.
git clone https://github.com/CreativEdgeSolutions/Nexus.git
cd CreativEdgenpm run setup # backend + frontend deps + post-install notes
npm run setup:electron # Electron devDeps (only needed for the desktop app)npm run setup does not write anything under ~/.creativedge/;
the backend's first run creates that tree on demand.
Three ways to run, in order of how a typical user wants them:
Desktop app (recommended):
npm run dev:electronOpens a hardened desktop window with the chat UI. The first launch auto-opens the Setup wizard.
Browser dev (two terminals):
# Terminal A
npm run dev:backend
# Terminal B
npm run dev:frontendOpen http://127.0.0.1:5173 in a browser. Vite proxies API calls
to the backend on 127.0.0.1:3001.
Built desktop app:
npm run build:electron
# Then run the unpacked binary:
.\electron\dist-electron\win-unpacked\CreativEdge.exe
# Or run the NSIS installer:
.\electron\dist-electron\CreativEdge-Setup-0.1.0.exeWindows SmartScreen will warn that the installer is unsigned β see the "Deferred / non-goals" section below for why.
| Command | What it does |
|---|---|
npm run setup |
Install backend + frontend; print next-steps |
npm run setup:electron |
Install Electron dev dependencies |
npm run dev |
Print the two-terminal dev help |
npm run dev:backend |
Backend (tsx watch) on 127.0.0.1:3001 |
npm run dev:frontend |
Frontend (Vite) on 127.0.0.1:5173 |
npm run dev:electron |
Pre-flight build + launch desktop dev app |
npm run build |
Backend tsc + frontend Vite build |
npm run build:electron |
Full Windows packaging orchestrator |
npm run typecheck |
Backend + frontend tsc --noEmit |
npm run rebuild:electron |
Manual better-sqlite3 rebuild (recovery only) |
Per-subpackage test runners (run from backend-api/):
npm run test:routing, npm run test:agents,
npm run test:in-character, npm run test:memory,
npm run test:memory-files, npm run test:memory-integration,
npm run test:memory-candidate, npm run test:sqlite,
npm run test:backup, npm run test:voice. See
docs/developer-setup.md Β§5 for the
full table.
All persistent data lives under ~/.creativedge/ (Windows:
C:\Users\<you>\.creativedge\):
sessions.dbβ SQLite + FTS5 (chat sessions, messages, full-text search).agents/<slug>/memory/β per-agent core + episodic memory.overrides/<slug>.jsonβ admin-console runtime overrides (tagline / voice / values / etc).backup.json,providers.jsonβ local config.backups/agents-git/β local git mirror when opt-in backup is enabled.logs/electron-backend-<ts>.logβ backend stdout/stderr (pino-redacted at source).logs/crash-<ts>.logβ structured crash records (allow-listed fields only; never chat content or secrets).
Privacy posture (current as of Phase 9 closure):
- β Local-only by default.
- β No telemetry.
- β No automatic external send / upload / email.
- β No background polling.
- β
All servers bound to
127.0.0.1only β never0.0.0.0, never a LAN-routable interface. - β
Crash reports remain local-only with explicit
Prepare / Copy / Download UX (Phase 9-D-C2). The free-text
backendLogTailfield is dropped from the prepared report until a future tested-redaction sanitizer lands. - β
Backup push is opt-in with explicit second-confirmation
modal (Phase 9-D-B3). Uses your local Git credential setup;
no credentials in
localStorage/sessionStorage/ cookies. - β External release link is HTTPS-only, allow-listed in both renderer and main process (Phase 9-D-B4).
For the full privacy walkthrough see
docs/user-guide.md Β§8.
- Electron main spawns the existing compiled Fastify backend as a child process.
- Dynamic free-port allocation (Phase 9-D-C3): Electron main
picks a free loopback port for the backend via
net.createServer.listen(0)and a free port for the static HTTP server (which serves the built frontend bundle) vialisten(0, "127.0.0.1"). The actual port numbers are logged in the Electron stdout on every boot. - The renderer discovers its API base via the preload bridge:
window.ceBridge.getRuntimeConfig().backendBaseUrl. The frontend'sresolveApiBase()reads this at module init. VITE_API_URL=http://127.0.0.1:3001is baked into the frontend bundle as a build-time belt-and-suspenders fallback only β the runtime path inside Electron always wins via the preload bridge.- The preload bridge (
electron/preload.cjs) exposes only two surfaces onwindow.ceBridge:openExternal(url)β Phase 9-D-B4 safe HTTPS allow-listed external-link opener (today: GitHub releases page only).getRuntimeConfig()β Phase 9-D-C3 runtime port + packaged-flag discovery.
better-sqlite3is rebuilt against Electron's bundled Node ABI by theafterPackhook (Phase 9-D-B2) inside the packaged copy at<appOutDir>/resources/backend-api/only; the sourcebackend-api/node_modules/is never mutated.
For the full Electron operational reference see
docs/electron-release-runbook.md
and electron/NOTES.md.
Items the app deliberately does NOT implement today. Most are gated on a future signing-certificate decision; some are intentional non-goals for the local-only threat model.
- β No
electron-updaterdependency. - β No automatic update / auto-download / silent install.
- β No code-signing of the Windows installer.
- β No GitHub Actions release workflow.
- β No background polling for new releases.
- β No telemetry.
- β No automatic crash-report send / upload / email.
- β No LAN-routable network exposure.
- β No cloud hosting by default.
- β No authentication / authorization gating on the admin
console (intentional per Β§7-D in
todo.md). - β No macOS / Linux desktop binaries (the packaged-build target is Windows x64 NSIS only today).
If/when any of these become goals, work will be tracked under a
fresh phase in todo.md. The signing-certificate decision is the
gating event for the entire auto-update + release-feed surface.
The full documentation tree lives under docs/:
docs/README.mdβ documentation map + start-here paths (user / developer / agent author / AI coding agent).docs/user-guide.mdβ using the desktop app (Phase 10-C expanded 2026-05-22): chat basics, slash commands, Setup wizard, Ops console (seven cards), backup UX, crash-report local-only export, manual update flow, runtime data + privacy posture, beginner workflows, glossary.docs/developer-setup.mdβ full Phase 10-D developer onboarding guide (expanded 2026-05-22): prerequisites, repo layout, install + three run modes, verified per-subpackage script tables, backend + frontend + Electron development references, runtime data, provider config, safety + privacy rules, validation + packaging checklists, git workflow, AI-agent briefing template, twelve common developer tasks.docs/add-an-agent.mdβ full Phase 10-E add-an-agent guide (expanded 2026-05-22): 15-section canonical reference (when to add vs customize, the six required files, config.json schema, system prompt + MBTI + memory design, registry + routing rules + frontend catalogue update procedures, backend impacts, test-fixture map, validation checklist).docs/customize-an-agent.mdβ full Phase 10-E customize-an-agent guide (expanded 2026-05-22): 15-section canonical reference (override vs source decision tree, Phase 7-B/C admin console editors, source-file safety per file, voice + routing + memory customization, UI metadata, AI- agent delegation rules, why slugs must never be renamed).docs/troubleshooting.mdβ full Phase 10-F troubleshooting guide (expanded 2026-05-22): 26-section reference covering first-5-checks fast triage, app does not open, backend/healthzfailures, dynamic-port diagnosis, stale process cleanup, winCodeSign symlink permission error,better-sqlite3NODE_MODULE_VERSION mismatch, packaged-build-but-app-fails, release-link failures, manual-release-check outcomes, backup readiness blockers, backup push failures, crash-reports-empty (happy path), Claude Code CLI missing, chat-recovery red-banner false-negatives, sessions/memory diagnosis, admin-changes- not-showing, frontend + backend build errors, OneDrive caveats,.git/index.lockrecovery, git workflow mistakes, decision tree, bug-report evidence template, 16-recipe command appendix.docs/electron-release-runbook.mdβ full Electron operational reference.electron/NOTES.mdβ Electron architecture notes (preload bridge, dynamic ports,afterPackABI rebuild).
Other top-level docs:
INSTRUCTIONS.mdβ agent-roleplay spec (when the LLM plays the 14 agent roles).architecture.mdβ design intent: turn shape, MBTI assignments + temperament balance, memory model, hand-off semantics.todo.mdβ concise current-state roadmap. Source of truth for "what's done" and "what's open."docs/roadmap-history.mdβ full per-slice closure-evidence trail (commit hashes, Windows live walkthroughs, sandbox validation, privacy/security contract enforcement notes).
| Emoji | Name | Domain | MBTI |
|---|---|---|---|
| π | Nexus | Orchestrator | ESFJ β The Consul |
| π¨ | Lumi | Graphics & Design | ISFP β The Artist |
| π» | Bit | Programming & Tech | INTP β The Logician |
| π | Buzz | Digital Marketing | ENTP β The Debater |
| π¬ | Reel | Video & Animation | ENFP β The Campaigner |
| βοΈ | Lex | Writing & Translation | INFJ β The Advocate |
| π΅ | Echo | Music & Audio | INFP β The Mediator |
| πΌ | Vera | Business | ENTJ β The Commander |
| π° | Cash | Finance | ISTJ β The Logistician |
| π€ | Sage | AI Services | INTJ β The Architect |
| π± | Bloom | Personal Growth & Hobbies | ENFJ β The Protagonist |
| π§ | Atlas | Consulting | ESTJ β The Executive |
| π | Quant | Data | ISTP β The Virtuoso |
| πΈ | Iris | Photography | ISFJ β The Defender |
All 14 entities have distinct MBTI types; the assignment is a
design tool for consistent voice and behaviour, not a
psychological claim. See architecture.md for
the temperament-balance rationale.
Every agent folder (agents/<slug>/ or orchestrator/) contains:
identity.mdβ one-screen "who am I" card.soul.mdβ purpose, voice, values, strengths, watch-outs.personality.mdβ MBTI breakdown and why this type fits.system_prompt.mdβ runtime system prompt for this agent.config.jsonβ structured metadata.memory/core_memory.md+memory/episodic_memory.md.
The orchestrator folder additionally contains registry.json
(machine-readable roster) and routing_rules.md (human-readable
routing logic). See docs/add-an-agent.md
and docs/customize-an-agent.md for
the full per-file conventions and the safe customization
workflow.
- Repository: https://github.com/CreativEdgeSolutions/Nexus
- License:
LICENSEβ proprietary / All Rights Reserved. - Contributing:
CONTRIBUTING.md. - Security policy:
SECURITY.md. - Changelog:
CHANGELOG.md. - Release readiness:
docs/release-readiness.md(preflight checklist + Windows packaged-validation walkthrough + GitHub release draft checklist). - Release notes (drafts):
docs/release-notes/. - Latest releases on GitHub: https://github.com/CreativEdgeSolutions/Nexus/releases (v0.1.0 was published manually as a GitHub Pre-release on 2026-05-23).
This README replaced the original Phase-0 scaffold on 2026-05-22
as part of Phase 10-B (Documentation). For the historical record
of what changed, see todo.md and the Β§10-A / Β§10-B
closure footers at EOF.