Skip to content

Cerefox installer + interactive bootstrap (cfcf-style UX) #36

@fstamatelopoulos

Description

@fstamatelopoulos

Summary

Proposal to make Cerefox installable as a global cerefox command via a one-line installer (à la cfcf, uv, ruff), with an interactive cerefox init first-run flow, a cerefox doctor diagnostic, and cerefox self-update. Models the UX on cfcf, adapted for Cerefox's Python codebase (no full TS rewrite).

Design doc: docs/research/installer-design.md
Branch: research/installer-design
Status: Research / proposal — iterate on the doc in the branch before scheduling implementation.

What problem this solves

Today's install (clone repo → uv sync → edit .envdb_deploy.pynpm build → always uv run cerefox from the repo root) is fine for developers but a barrier for end users. Three structural awkwardnesses:

  • Working-directory dependenceSettings reads .env from CWD, so cerefox only works from the repo root.
  • No global install path — every invocation needs uv run. Claude Desktop / Path C agents need the absolute repo path spelled out.
  • No interactive bootstrap — first successful search takes ~15 minutes of doc-reading and manual config.

What the proposal delivers (target UX)

# One-line install
curl -fsSL https://github.com/fstamatelopoulos/cerefox/releases/latest/download/install.sh | sh

# Interactive bootstrap — Supabase + OpenAI + schema deploy + MCP wiring
cerefox init

# Day-to-day from any directory
cerefox search "OAuth design"
cerefox ingest ~/notes/meeting.md --author "fotis" --author-type "user"
cerefox doctor
cerefox self-update

Claude Desktop MCP config collapses from uv --directory /Users/fotis/src/cerefox run cerefox mcp to cerefox mcp. Path C agent guidance no longer needs to spell out the cerefox checkout path.

Phased plan

Phase Scope Effort Goal
Phase 0 Prerequisite refactors (config-dir resolution, importlib.resources for SQL files, hatch-vcs for version, wheel-includes for frontend/dist) Small Unblocks Phase 1. Backward-compatible — dev install path is unchanged.
Phase 1 PyPI publish, install.sh, cerefox init / doctor / self-update / configure-mcp. Doc rewrite for end-user vs dev install split. Medium 90% of the UX win.
Phase 2 PyInstaller standalone binaries via GitHub Releases, Homebrew tap. macOS notarization decision. Medium Removes "must have Python" friction. Independent of Phase 1 — can defer indefinitely.
Phase 3 npm-native distribution. Not recommended without a real TS rewrite. High, low value Explicitly deferred.

Phase 0 + Phase 1 each become their own iteration / GitHub issue when this is scheduled.

Decision points needing your input before this becomes an iteration

Listed in §13 of the doc:

  1. Phase 1 only, or Phase 1 + Phase 2 together? Phase 1 alone is the bigger UX win for less effort.
  2. PyPI name: is cerefox available? Fallbacks: cerefox-cli, cerefox-knowledge.
  3. ~/.cerefox/ vs XDG-strict ~/.config/cerefox/ — recommend ~/.cerefox/ for consistency with Claude Code (~/.claude/), Codex (~/.codex/), cfcf (~/.cfcf/).
  4. macOS notarization budget ($99/year) — only matters for Phase 2.
  5. cerefox init prompt defaults — "deploy schema?" / "wire up Claude Desktop?" default Yes or No?

Out of scope (called out explicitly in §12)

  • Not a full Python-to-TypeScript rewrite. The existing Iteration 18 plan (narrow TS port of just mcp_server.py for shared-code reasons — see docs/plan.md line 1626) remains a separate, independent decision and is not blocked by or blocking this proposal.
  • Not a hosted-Cerefox SaaS — users still bring their own Supabase project.
  • Not a change to agent protocols (MCP / Edge Functions / GPT Actions all continue working unchanged).
  • Not a replacement for the dev install path — contributors keep cloning and using uv sync.

Open questions

§10 of the doc lists 10 — most need investigation during implementation, not blocking discussion now.

How to pick this up later

  1. Read the doc end-to-end. Edit on the research/installer-design branch. Push back on anything that doesn't fit how you'd want this to work.
  2. Resolve the §13 decision points. Those shape the implementation tickets.
  3. When the doc is locked, split into two new GitHub issues — "Phase 0: installer prerequisites" and "Phase 1: Cerefox installer + bootstrap UX" — and schedule as new iterations in plan.md. Close this issue at that point.

Related work

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions