Smoke test required

...

← All documentation

Documentation

Install Guide

**Status:** active · last verified 2026-05-03

source: docs/getting-started/INSTALL.md

Three install paths, easiest first:

  1. Conversational install via skill (Recommended) — /endenza:install walks you through every step with rapid-fire decisions and idempotent checks. ~10 minutes from zero to running.
  2. Marketplace (target — when claude-ensemble flips public). One-line install via /plugin install, then /endenza:maestro to boot.
  3. Manual — clone + run scripts yourself. The current path while the repo is private.

After cloning the repo OR installing via marketplace, start a fresh Claude Code chat in any directory and say:

/endenza:install

(Or naturally: “install Endenza” / “set up Endenza” / “first-run setup”.)

The skill walks you through 11 phases with rapid-fire decisions at each fork:

Phase What it does
0 Sanity check (Python 3, git, jq, Xcode CLI tools)
1 Create ~/.claude/orchestrator/ directory layout if missing
2 Initialize state.json — asks for max_concurrent_autopilots, weekly_token_reset_at, daily/weekly report times
3 Merge PreToolUse + SessionStart hooks into ~/.claude/settings.json
4 Optional: copy Kevin’s canonical memory file set as a starting point
5 Register the 8 standard scheduled tasks (morning briefing, dashboard update, weekly report, etc.)
6 Optional: build + install the native macOS Endenza.app menu bar
7 Optional: create the dashboard PWA repo + GitHub Pages
8 Optional: walk through Cloudflare Access setup (~30 min)
9 Optional: open the PWA Terminal page on phone for the mobile-control surface
10 Run bin/status.sh for full verification — every line should be ✅
11 Boot the Maestro or onboard a first project Agent

The skill is idempotent — re-running picks up where it left off via a .install-progress.json checkpoint. Safe to interrupt and resume.


2. Marketplace install (future, post-public-flip)

/plugin marketplace add KiwiMaddog2020/claude-ensemble
/plugin install endenza@claude-ensemble
/exit

Open a fresh chat. You’ll see [ORCHESTRATOR] hard-enforcement active at the top. Then run /endenza:install for the conversational setup, or skip straight to:

/endenza:maestro          # in any chat → becomes your Maestro
/endenza:agent-onboard    # in a project repo → becomes that project's Agent

The marketplace plugin self-installs hooks, skills, and registers slash commands. The conversational install (path 1) handles the post-plugin-install configuration.


3. Manual install (current path)

The repo is private during pre-public-flip. To install today:

1. Clone the orchestrator

mkdir -p ~/.claude
git clone git@github.com:KiwiMaddog2020/claude-ensemble.git ~/.claude/orchestrator
cd ~/.claude/orchestrator

2. Pre-flight check

macOS / Linux:

bash plugins/endenza/bin/preflight.sh

Windows (Git Bash):

bash plugins/endenza/bin/preflight.sh

Windows (PowerShell):

.\plugins\endenza\bin\preflight.ps1

This verifies: git, gh (optional), python3, jq (optional), claude CLI. Fixes any blockers before continuing.

3. Configure the Claude Code hook

Open ~/.claude/settings.json (create if missing) and add:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "mcp__(computer-use|Claude_Preview|Claude_in_Chrome)__.*",
        "command": "/Users/<you>/.claude/orchestrator/plugins/endenza/bin/orchestrator_lock.sh",
        "timeout": 10
      }
    ],
    "SessionStart": [
      {
        "matcher": "startup|resume|clear",
        "command": "/Users/<you>/.claude/orchestrator/plugins/endenza/bin/orchestrator_lock_healthcheck.sh"
      }
    ]
  }
}

(Windows uses ${USERPROFILE}\.claude\orchestrator\plugins\ensemble\bin\orchestrator_lock.ps1 instead.)

4. Seed state.json

cat > ~/.claude/orchestrator/state.json <<'EOF'
{
  "schema_version": 1,
  "mode": "orchestrated",
  "mode_transitioning": false,
  "active_autopilot_chat": null,
  "active_vm": null,
  "lock_acquired_at": null,
  "lock_intent": null,
  "cascade": null
}
EOF

5. Verify with self-test

macOS / Linux:

bash plugins/endenza/bin/test_lock_race.sh   # expect 10/10 rounds passed
bash plugins/endenza/bin/self_test.sh        # all green

Windows:

.\plugins\endenza\bin\test_lock_race.ps1     # expect 10/10 rounds passed
.\plugins\endenza\bin\self_test.ps1          # all green

6. Become the Maestro

Open a fresh Claude Code chat. Paste the contents of plugins/endenza/bootstraps/maestro.txt as your first message. The chat self-onboards as your Maestro.

7. Onboard your first project as an Agent

In a different project’s repo:

cd ~/Projects/my-project
claude

In the chat, paste the contents of plugins/endenza/templates/onboarding_prompt.md. The chat walks through repo discovery → interview → charter → status file → identity → reports back to the Maestro.

8. Optional — wire phone access

The PWA Terminal page (/terminal.html) is the supported way to drive autopilot from a phone. Set up Cloudflare Tunnel (see docs/operations/CLOUDFLARE_ACCESS_SETUP.md) so the PWA + control-panel server are reachable from a public URL, then paste your DASHBOARD_TOKEN into the Terminal page on your phone. From there you can fire / kill / chat without SSH or extra apps.

Termius / Tailscale / mobile_dispatch.sh were the v0 mobile-control path; they were removed in v1.0.

9. Optional — install the dashboard

bash plugins/endenza/bin/setup-dashboard.sh

Idempotently creates your <your-username>/ensemble-dashboard GitHub repo (public; for marketplace listing), enables Pages, wires the Dashboard Update routine, and prints your dashboard URL. After this, your project state is glanceable at https://<you>.github.io/ensemble-dashboard/.

Icon note: If the Endenza wordmark icon does not appear in the menu bar automatically, drop the .icns file from bin/endenza-app-icons/ into /Applications/Endenza.app/Contents/Resources/AppIcon.icns and relaunch the app.

For interactive control (toggle flags, fire autopilot, embedded chat), start the local server:

# macOS / Linux:
bash bin/control-panel-server.sh &

# Or via launchd (auto-restart, runs across reboots):
launchctl bootstrap gui/$UID launchd/com.kevin.endenza.control-panel.plist

The dashboard auto-detects the local server and shows interactive buttons when you visit it on the same machine or via your Cloudflare Tunnel URL.


Companion repos (synced from canonical)

Repo What
KiwiMaddog2020/claude-ensemble (this) Source of truth. Plugin contents.
KiwiMaddog2020/ensemble-config Cross-machine sync layer (bin-mac/bin-win/ parity, shared docs/templates/memory).
KiwiMaddog2020/ensemble-dashboard Public dashboard (auto-generated 3× daily).
KiwiMaddog2020/website-agent-starter Friend-shareable bootstrap for the website-agent.

If you’re contributing, install all four; the sync expectations are documented in CONTRIBUTING.md.


Uninstall

# Remove hooks from ~/.claude/settings.json
# Remove launchd plist (if installed)
launchctl bootout gui/$UID/com.kevin.endenza.control-panel 2>/dev/null
launchctl bootout gui/$UID/com.kevin.endenza.autopilot-trigger 2>/dev/null
launchctl bootout gui/$UID/com.kevin.orchestrator.stale-lock-sweeper 2>/dev/null

# Remove the orchestrator dir
rm -rf ~/.claude/orchestrator

Uninstall is intentionally simple — no system-level state lives outside ~/.claude/orchestrator and a few launchd plists.


Next steps


Troubleshooting

Symptom Likely cause Fix
[ORCHESTRATOR] hard-enforcement hook MISSING hook not in ~/.claude/settings.json re-add (step 3)
[ORCHESTRATOR] hard-enforcement hook INSTALLED but not registered path in settings.json doesn’t match where the script lives fix the path
Autopilot session hangs at “## Session” with no output claude CLI version mismatch with --add-dir variadic parsing upgrade claude CLI to ≥ 2.1.120; the -- separator is now in place
Lock held forever after a crashed session stale lock run bash bin/endenza_actions.sh kill (or .\bin-win\stale_lock_sweeper.ps1)
All scheduled tasks fail to run state.json missing re-seed (step 4)
Dashboard regen fails with chats/ does not exist first install — no Agents onboarded yet onboard at least one Agent (step 7)

For everything else: paste the exact error to your Maestro chat. Endenza’s troubleshooting cookbook lives in plugins/endenza/TROUBLESHOOTING.md.