Sign inSign up

olegselajev241/herdr-crew-kit:0.2.0

Manifest digest

sha256:9a6d16d8e9f9650cc7e4f42cca551b2cd6d6c86035c15861645a6822b94b1dc2

Last pushed

11 days by olegselajev241

Type

Sandbox Kit

Manifest digest

sha256:9a6d16d8e9f9650cc7e4f42cca551b2cd6d6c86035c15861645a6822b94b1dc2

yaml
schemaVersion: "2"
kind: sandbox
name: herdr-crew
version: 0.2.0
displayName: Herdr Crew
description: |
    Task sandbox running a nested Herdr server and a crew of coding agents
    (Claude Code, Codex, pi with Google models) in rotating roles: a sandboxed orchestrator
    that holds the goal, plus planner, implementer, and QC. The host only
    delivers goals and arbitrates resources.
sourceURL: https://github.com/shelajev/herdr
args:
    gemini_model:
        default: gemini-3.8-flash
        description: Google model the pi role pins with --provider google --model
    image:
        default: docker.io/olegselajev241/herdr-crew:latest
        description: Herdr crew template image (published, linux/arm64; for local builds pass herdr-crew:local after scripts/sbx/build-crew-template.sh)
    roles:
        default: orchestrator=claude,planner=codex,implementer=claude,qc=pi
        description: Role assignment for this task; the host rotates this per task and guarantees qc differs from implementer
sandbox:
    image: ${{ kit.args.image }}
    entrypoint:
        - crew-entry
agentInstructions:
    filename: AGENTS.md
    content: |
        ## Herdr crew

        This sandbox runs a crew of coding agents: an orchestrator that holds the
        task goal and coordinates everyone through the local herdr CLI, plus a
        planner, an implementer, and quality control. Your role is named in the
        prompt you receive; read your prompt pack in `/home/agent/crew/roles/`
        and follow it. Only the orchestrator drives other agents; every other
        role works solely on what it is prompted with. The role-to-agent
        assignment for this task is recorded in `/home/agent/crew/assignment`.

        Shared crew files under `/home/agent/crew/`: `goal.md` (the goal, owned by
        the orchestrator), `plan.md` (the plan, owned by the planner), `qc-log.md`
        (findings and VERDICT lines, owned by qc), `status.md` (progress notes and
        the final RESULT line, owned by the orchestrator), and `escalations.md`
        (resource requests for the host to approve or deny).
permissions:
    network:
        allow:
            - api.anthropic.com
            - statsig.anthropic.com
            - api.openai.com
            - auth.openai.com
            - chatgpt.com
            - generativelanguage.googleapis.com
            - github.com
            - api.github.com
            - raw.githubusercontent.com
            - objects.githubusercontent.com
            - release-assets.githubusercontent.com
            - registry.npmjs.org
            - archive.ubuntu.com
            - security.ubuntu.com
            - ports.ubuntu.com
            - download.docker.com
credentials:
    - service: anthropic
      apiKey:
        name: ANTHROPIC_API_KEY
        proxyManaged: true
        inject:
            - domain: api.anthropic.com
              header: x-api-key
              format: '%s'
    - service: openai
      apiKey:
        name: OPENAI_API_KEY
        proxyManaged: true
        inject:
            - domain: api.openai.com
              header: Authorization
              format: Bearer %s
    - service: gemini
      required: true
      apiKey:
        name: GEMINI_API_KEY
        proxyManaged: true
        inject:
            - domain: generativelanguage.googleapis.com
              header: x-goog-api-key
              format: '%s'
environment:
    variables:
        HERDR_CREW: "1"
        HERDR_CREW_GEMINI_MODEL: ${{ kit.args.gemini_model }}
setup:
    install:
        - command: crew-check
          user: "1000"
          description: Verify herdr and the crew agent CLIs are present
    files:
        - path: /home/agent/crew/assignment
          content: ${{ kit.args.roles }}
          description: Role-to-agent assignment for this task
        - path: /home/agent/crew/workdir
          content: ${WORKDIR}
          description: Absolute workspace path, read by the host task driver