Same agent, five harnesses, five dialects
Pi, opencode, Codex, Claude, and VSCode each have their own agent spec, their own skill format, and their own opinion about permissions. Porting means rewriting the same logic over and over.
Alfred handles the operational burden so humans focus on decisions. Design, test, evaluate, secure, and port agents, subagents, and skills across AI coding harnesses — now with runtime profiles, smart per-agent model assignment, worktree-aware installs, and local-first context compaction.
$ curl -fsSL https://raw.githubusercontent.com/GOI17/main/install.sh | sh ============================================================ ALFRED SUITE INSTALLER ============================================================ Edition coding / memory / full Harnesses opencode [installed] · codex-cli [installed] · pi [installed] Profiles runtime profiles / decide later Models smart defaults for *, orchestrator, developer, temporary Target path ~/.alfred/installs/default Preview: + core, agents, skills, profile-manager, adapters, evals + ~/.alfred/models.json (model defaults preview) + .ai/generated/opencode-install (harness preview) No files have been written yet. Apply safe suite install steps now? [y/N]
Runs locally against your favorite harness
The first agent demo is always a triumph. The second week is permission sprawl, drift between harnesses, silent regressions, and a graveyard of half-finished skills. Alfred is the runtime layer that makes the second week boring — in a good way.
Pi, opencode, Codex, Claude, and VSCode each have their own agent spec, their own skill format, and their own opinion about permissions. Porting means rewriting the same logic over and over.
Agents route every task to a provider, even when a local regex, file lookup, or eval can answer the question. Costs balloon and latency goes through the roof for deterministic work.
Agents self-modify, broaden their own permissions, and read protected paths because a tool "happened" to return a friendly suggestion. There is no deny-by-default surface.
Prompt tweaks ship on vibes. A single line change in a system prompt can silently break seven evals, but you have no baseline and no gate to catch it.
Skills get bolted on. Nobody knows when they load. Some load eagerly and burn context, some never load because nothing routes to them.
PATHs differ, providers are enabled on one machine but missing on another, models disappear, and plugins need local-only overrides. Alfred profiles make that operational state explicit.
Alfred is opinionated about the operational layer and quiet about everything else. Bring your own model, your own harness, your own workflows. We handle the rest.
A harness-agnostic core with adapters as ports. Core never imports an adapter. Adapters never redefine domain rules.
Alfred compiles one source-of-truth into executable adapter previews for opencode, Codex, and Pi while keeping compatibility contracts for harnesses that do not yet have a live adapter.
Every agent, subagent, skill, and policy change must run an eval suite. Improvements are accepted on numbers, not vibes.
Deny by default. No agent may broaden its own permissions. Escalation requires an explicit human trace event.
Skills activate by trigger and project signal, not by file presence. Cold context stays small; hot context stays relevant.
Temporary subagents come, do one job, and retire. Promotion to a permanent agent requires an explicit human decision.
Every operation emits a trace event. Baselines gate regressions. Replays are reproducible from the trace log alone.
Detect PATH, provider, model, and plugin availability locally before activating an agent profile. Smart per-agent model defaults and avoided provider calls are traced too.
Alfred now handles the operational details that show up after the demo: context pressure, worktrees, model drift, and delegation failures.
Automatic context compaction triggers around 35% usage, uses local heuristics first, and only offers provider-assisted summaries with approval.
Alfred resolves the real git directory plus origin URL so worktrees reuse the parent repo identity instead of reinstalling from scratch.
The installer detects local providers, previews ~/.alfred/models.json, and lets you assign per-agent primary models with a global fallback chain without hardcoding specs.
The packages/core boundary is enforced by the build
itself. Adapters depend on core; core does not know adapters exist.
Runtime profiles sit beside adapters, so machine-specific activation
never leaks into agent definitions.
Alfred ships with one primary agent (the orchestrator) and a panel of subagents. Each has a single responsibility, an explicit mode, and a deterministic scope.
Coordinates the panel. Loads the kernel. Owns the trace stream.
Implements code, skills, and adapters within the kernel.
Designs eval cases, runs the runner, owns the baseline.
Curates documentation. Lazy-loads skills by trigger.
Owns the domain model. Guards the hexagonal boundary.
Enforces policy, blocks regressions, signs off releases.
Alfred includes packages/profile-manager: shared profile
defaults, private machine overlays, secret scanning, local capability
checks, and approval-gated activation into
~/.config/<agent>.
Keep agent behavior stable while letting each laptop or workstation choose the provider, model, plugin set, MCP headers, and PATH-backed tools it can actually run.
Runtime profiles ──────────────── Profile strategy runtime profiles / decide later Active profile work / personal / custom Harness opencode Preview: + shared defaults under ~/.alfred/profiles + private machine overlay for providers, models, plugins, PATH + approval-gated activation into ~/.config/opencode Apply profile activation now? [y/N]
Alfred is harness-agnostic. Adapters compile the same
.ai/ source-of-truth into the dialect each runtime
expects. Runtime profiles then activate the right machine-local
provider/model/plugin overlay for that harness.
| Harness | Adapter status | Source package |
|---|---|---|
| Pi | Executable spike | packages/pi-adapter |
| opencode | Executable translation spike | packages/opencode-adapter |
| Codex | Executable translation spike | packages/codex-adapter |
| Claude | Compatibility contract | .ai/harnesses/claude |
| VSCode | Compatibility contract | .ai/harnesses/vscode |
| ChatGPT / Gemini | Memory integrations | packages/chatgpt-adapter · packages/gemini-adapter |
Open the guided installer, choose the edition/harness/profile strategy with explanations, or read the architecture overview before you commit.