design profiles - sinrimin/harness-nexus GitHub Wiki

Profiles (concept & install-flow note)

The implemented Profile model (CRUD, scope rules, profile-routed proxy access) is documented in phase-2.2-registry.md. This note covers the broader concept (bundling all resource kinds + third-party imports) and the intended CLI install flow, which is still future work.

A profile is a named, versioned bundle of resources (MCP servers, skills, hooks, sub-agents, rules, commands) plus optional third-party imports (ECC, Superpower). One-click install applies one or more profiles to a target Agent tool, writing assets into that tool's config directories.

Scoping

Every resource and profile is either global (admin-managed, shared) or personal (per-user). Personal items are only visible to their owner; global items are visible to all authenticated users. The CLI and API honor this when listing and installing.

Install flow (intended)

  1. hnx install --profile frontend-daily --target zcode
  2. CLI resolves the profile → its entries (resources) and imports.
  3. For each resource: fetch the artifact (git/tarball/local), verify checksum, then write to the target tool's directory using a target-specific writer (e.g. ~/.claude/skills, ZCode workspace config, …).
  4. For each import: run the matching adapter (ECC/Superpower) to place assets.

The CLI fetches profiles from a running Harness Nexus server via the SDK. A profile is a reference bundle (its entries point at server-side resources by id), so the resource bodies and the aggregated /mcp endpoint both require the server — the CLI does not read local manifests.

Manifest schema

Defined in packages/shared/src/schemas/profile.ts (zod). The server, web UI, and CLI all validate against this. Keep it in sync with the domain types in packages/core/src/domain/profile.ts.