Skip to content

BYO agents Phase 4: bbox agents import / export manifest files #203

Description

@JAORMX

Follow-up to #191 (epic). Builds on the declarative custom-agent model from #200. Lets a reusable agent definition live as a standalone, shareable file instead of only inline under agents: in global config.

Scope

A standalone manifest (same fields as an AgentOverride plus a top-level name):

# broodbox-agent.yaml
name: aider
image: ghcr.io/acme/aider-bbox:latest
command: ["aider"]
env_forward: [OPENAI_API_KEY, "AIDER_*"]
env_required: [OPENAI_API_KEY]
mcp:
  mode: env
egress_profile: standard
egress_hosts:
  standard:
    - { name: api.openai.com, ports: [443] }

Commands:

bbox agents import ./broodbox-agent.yaml   # validate + add to global config
bbox agents export aider > aider.broodbox-agent.yaml

Notes / constraints

  • Reuse config.AgentFromOverride + config.ValidateCustomAgent (Add declarative bring-your-own agent support (#191 Phase 1) #200). Manifest parsing/marshalling is a thin domain mapping; file I/O in internal/infra/config + cmd/bbox.
  • import writes to global config only (custom agents are never workspace-scoped).
  • export must emit env names only, never values (consistent with agents inspect).
  • Round-trip: export then import of the same agent should be a no-op.
  • OCI-image-embedded manifests are a separate follow-up (Phase 5).

Acceptance criteria

bbox agents import ./broodbox-agent.yaml && bbox agents doctor <name> succeeds; bbox agents export <name> produces a manifest that re-imports cleanly.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestneeds-triageIssue needs initial triage by a maintainer

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions