Install Alfred

Homebrew installs the versioned Alfred CLI and its app-like, human-first installer. The curl bootstrap remains available. Use arrow keys, checkbox-style toggles, text inputs, and mouse clicks where supported. Harness choices show installed/not-installed status and support selecting multiple targets before Alfred writes anything.

Preview first. The default path writes no files. Use flags only for automation after the choices are already known; live harness config still requires explicit human approval.

Requirements

OpenTUI with a safe fallback. The guided installer prefers a checksum-verified OpenTUI executable, using the same native terminal framework that powers OpenCode. Node 22+ remains supported: when a compatible OpenTUI artifact or runtime is unavailable, Alfred automatically uses its dependency-free Node terminal adapter with the same decisions and approval gates.

Install with Homebrew

Alfred source and its dedicated tap are public. Version 0.7.3 includes the verified runtime package. Install the fully qualified formula without GitHub credentials:

zsh — Homebrew
# Public runtime package
brew install GOI17/alfred
alfred version
alfred setup # guided, preview-first configuration

# lifecycle
brew update
brew upgrade GOI17/alfred
brew uninstall GOI17/alfred
Use the full formula name. Plain brew install alfred resolves to the unrelated Alfred macOS application cask. Homebrew installs Alfred's commands but does not write live harness configuration; that remains gated by alfred setup.

The next release replaces interactive setup with a bundled Go TUI using Wave's Bubble Tea and Lip Gloss framework. Version 0.7.3 still has the old UI. Review the plan before explicitly approving it; cancel makes no setup changes. Explicit flags and alfred setup --legacy-ui preserve automation.

Choose an edition

After installing the runtime, start with the guided flow: alfred setup. The installer still accepts flags for automation and CI.

EditionWhat it installsWhat you need
coding Core, agents, skills, runtime profiles, opencode/Codex adapters, eval gates. Node 22+ and your coding harness.
memory Alfred Memory, server/client/MCP/OpenAPI, external AI adapters, console. SQLite for local coding agents or Postgres for human/web agents.
full The complete Alfred operations system: coding + Memory components. Node 22+, harness, and Memory storage configuration.

Option A — coding edition

The fastest path. Perfect for coding harness operations without forcing Memory setup.

zsh — install
# Guided human-first install; starts preview-first
curl -fsSL https://raw.githubusercontent.com/GOI17/main/install.sh | sh

# Force the dependency-free compatibility backend for diagnostics
curl -fsSL https://raw.githubusercontent.com/GOI17/main/install.sh | ALFRED_INSTALL_TUI_BACKEND=node sh

# Automation fallback when choices are already known
curl -fsSL https://raw.githubusercontent.com/GOI17/main/install.sh | sh -s -- --edition=coding --name=acme --harness=opencode,codex-cli --apply

# The TUI previews runtime profiles before activation
Profile strategy: runtime profiles / decide later
Active profile : work / personal / custom
Harness        : opencode

# The installer prints the validation plan for the selected edition
Validation     local capability checks · preview files · approval gates

The coding edition includes packages/profile-manager so the same agent can have separate work, personal, or client profiles across machines without hand-editing harness config.

Model assignment after setup

Alfred setup does not prompt for model assignments or create, replace, or modify ~/.alfred/models.json. Model selection remains a user-owned runtime or standalone reconfiguration decision after setup.

setup boundary
# Setup leaves any existing assignment byte-for-byte unchanged
Model assignment : not part of alfred setup
Provider calls   : 0

Option B — Memory edition

Use Alfred Memory from ChatGPT, Claude, Gemini, or coding agents.

  1. If you already created a tenant in the Memory app, choose Use existing tenant. Alfred will not create another tenant; clients reuse ALFRED_MEMORY_BASE_URL and ALFRED_MEMORY_API_KEY.
  2. For a new self-hosted tenant, create a Postgres database and copy its connection string, such as postgres://user:pass@host/db?sslmode=require.
  3. Run the guided installer and choose the Memory edition. Pick Postgres for shared/human/web memory, Local SQLite for one-machine coding use, or Decide later for a no-tenant preview.
zsh — install (web)
# Guided install: choose Memory or full in the TUI
curl -fsSL https://raw.githubusercontent.com/GOI17/main/install.sh | sh

Approve, then write

Alfred never writes harness config without your approval. When the installer finishes detection, it prints a preview like:

preview
# Alfred install preview
Harness detected : opencode
Adapter status   : executable-translation-spike
Files to write   : 7
  + .opencode/agents/orchestrator.md
  + .opencode/agents/developer.md
  + .opencode/agents/qa.md
  + .opencode/skills/architecture-docs/SKILL.md
  + .opencode/skills/typescript-project/SKILL.md
  + opencode.json
  + AGENTS.md (merge)

Apply changes? [y/N]

Review the list first. The root installer writes no files unless you choose apply in the TUI or pass --apply in automation; harness config still remains preview-only until a human explicitly copies or applies those generated artifacts.

Verify the install

Use local checks instead of assuming a global CLI binary exists:

verify
node -v                     # Node 22+
test -d ~/.alfred/installs/default # default suite install target

Uninstall

uninstall
curl -fsSL https://raw.githubusercontent.com/GOI17/main/uninstall.sh | sh

# Homebrew package
brew uninstall GOI17/alfred

The uninstaller removes the installed package tree, never touches your project files, and asks before deleting the SQLite database.

Next step: Configuration to review per-agent models, permission policy, and tenants.