Galahad is an evidence-first Hermes agent that helps a team understand, research, plan, build, attack, repair, and package a hackathon entry.
Its promise is simple: give it a hackathon; it tries to win it.
This repository is a Plow agent variant. It builds from the immutable official
plow-hermes-agent image and owns only Galahad's persona, skills, deterministic
mission kernel, tests, docs, and Agent Index reporter. Generic Hermes/Plow
runtime behavior is not forked here.
Mission state is persisted in SQLite. Artifacts are written to the filesystem. State transitions and DAG scheduling are deterministic code; model-backed capabilities must return schema-validated data before they may influence state.
Requirements: Python 3.11+ and Pydantic 2.x.
python -m hackathon_competitor.cli db migrate
python -m hackathon_competitor.cli mission create --url tests/fixtures/hackathon/official.html
python -m hackathon_competitor.cli mission resume <mission-id>
python -m hackathon_competitor.cli mission show <mission-id>
python -m hackathon_competitor.cli mission refresh-rules <mission-id> --url <official-url>
python -m hackathon_competitor.cli doctorUse HACKATHON_COMPETITOR_HOME to override the default local state directory.
Requirements: Git, Docker, and Docker Compose v2. After cloning the repository, an optional standalone image build is:
docker build -t galahad-agent .-
Generate a line-scoped credential locally with the official helper:
git clone https://github.com/plow-pbc/plow-agents.git export PATH="$PWD/plow-agents/bin:$PATH" plow-agents login # Send the printed activation phrase by SMS/iMessage, then: plow-agents lines plow-agents mint <free-line-id>
mintwrites./plow-credentials. Keep that file local; it contains the Plow API token and is excluded from Git and Docker build context. -
Choose a stable Agent Index id, for example
galahad-hackathon, and setAGENT_IDto it. This is an operator-chosen identifier, not a value that Plow supplies; keep it unchanged across restarts and registration. -
When the Verified program opens (September 14, 2026 per the organizer update), request Verified for that Agent Index entry. Start with Docker Compose using the command for your shell:
AGENT_ID=galahad-hackathon docker compose up --build -d
$env:AGENT_ID = "galahad-hackathon" docker compose up --build -d
.env.examplecontains the same non-secret default if you prefer to copy it to.env; never place the minted credential in.env.
Final contest submission, legal attestations, public pushes, and production deployments are never performed by the local mission pipeline. They remain explicitly confirmation-gated actions.
The image includes the official Agent Index client pinned by commit and
SHA-256 and runs it under s6 every five minutes. Credentials, prompts,
mission content, and file paths are not sent by Galahad's reporting service.
See docs/SDD.md, docs/DECISIONS.md, and docs/RUNBOOK.md.
Create a reproducible ZIP from committed files only:
python -m hackathon_competitor.cli bundle --output dist/galahad-public.zipThe command validates required install files, MIT licensing, README markers, and the absence of credentials, databases, bytecode, and internal review metadata before returning the archive SHA-256.