The Hub¶
The Galapagos Hub is the registry and web interface for the artifacts the current platform can serve:
- scaffold and task repositories;
- discovery bundles containing a result, ETIF trajectory streams, configuration, and evaluation artifacts;
- a task-score leaderboard whose rows expose
pending,accepted, orrejectedreview state; - budget-capped browser runs for the scaffolds supported by the hosted runner.
The local package currently bundles 13 runnable scaffolds and 1,274 task cards. Of those task
cards, 1,269 are runnable and five are spec entries without a seed/evaluator. Model cards are a
local model-loading format; the Hub does not expose a model-card registry endpoint.
What review state means¶
A new discovery lands pending. Calling the review endpoint changes it to accepted or rejected;
accepting a discovery creates or updates its leaderboard row. The backend currently records that
decision and promotion only. It does not automatically replay the trajectory, re-run the task
evaluator, enforce reviewer identity, or run a parity experiment.
Those checks may be performed as part of a human review process, but the current software does not
guarantee them. Treat accepted as an explicit Hub review decision, not as proof of an automatic
reproduction pipeline.
Port fidelity for bundled task/scaffold implementations is handled separately in the repository via executable review artifacts and CI. See Review an upstream port.
Submission paths¶
The galapagos submit CLI accepts task and scaffold repository bundles:
galapagos submit --repo-type task --card-path my_task/card.yaml
galapagos submit --repo-type scaffold --card-path my_scaffold/card.yaml
Discovery bundles use POST /api/discoveries/upload, discovery card-only submissions use
POST /api/discoveries, and completed Discovery Space runs are published by the backend. The CLI has
no discovery submission mode. The legacy POST /api/verifications endpoint stores a
lightweight unverified claim and is not linked to the discovery review transition or leaderboard.
Uploaded community controllers and evaluators are catalog data: the Hub does not import or execute them. The browser runners execute only bundled code from their respective server-side allowlists.
Hosted Discovery Space¶
GET /api/discovery/options is the source of truth for the hosted runner's providers, scaffolds,
iteration cap, and local-only scaffolds. The current hosted path excludes claude_code and
meta_harness: both default to Claude Code subscription authentication and are intended to run
locally. Meta-Harness additionally requires an output directory and does not support resume.
The remaining hosted scaffolds can be paired with runnable compatible bundled tasks. A caller supplies a provider API key; the run streams NDJSON progress and publishes the finished discovery bundle. The backend clamps the iteration budget to its configured cap (300 by default).
A completed hosted bundle publishes the unified raw ETIF input when present:
It exports to ETIF-v1.1: a candidate/event ledger plus agent sessions and provenance. The stream
preserves evaluation failures, migration, crossover, adaptation, agent/tool activity, and candidate
creation in one ordered event log.
Endpoints¶
Every route is under /api. Reads are open. Write endpoints that declare bearer authentication
require an API token. Token scopes are stored as metadata but are not currently enforced per route.
| Method & path | Purpose |
|---|---|
GET /api/stats |
Catalog counts and breakdowns. |
GET /api/readyz |
Constant-size backend/database readiness probe (SELECT 1). |
GET /api/catalog/facets |
Aggregate tab and filter counts without downloading cards. |
GET /api/catalog/{scaffolds\|tasks\|discoveries} |
Bounded server-side search, filters, and pagination (maximum 100 rows per page). |
GET /api/scaffolds · GET /api/scaffolds/{name} |
Browse/fetch scaffold cards. |
POST /api/scaffolds · POST /api/scaffolds/upload |
Register a card or upload a scaffold repo. |
GET /api/tasks · GET /api/tasks/{name} |
Browse/fetch task cards. |
POST /api/tasks · POST /api/tasks/upload |
Register a card or upload a task repo. |
GET /api/discoveries · GET /api/discoveries/{name} |
Browse/fetch discoveries and review state. |
POST /api/discoveries · POST /api/discoveries/upload |
Register or upload a discovery; it lands pending. |
POST /api/discoveries/{name}/review |
Set pending, accepted, or rejected; acceptance promotes the claimed score. |
GET /api/leaderboard · POST /api/leaderboard |
Browse or submit score rows; direct submissions land pending. |
POST /api/leaderboard/{id}/verify |
Set a leaderboard row's review state. |
GET /api/{scaffolds\|tasks\|discoveries}/{name}/tree |
List the stored bundle's file tree. |
GET /api/{scaffolds\|tasks\|discoveries}/{name}/file?path= |
Read a small text file. |
GET /api/{scaffolds\|tasks\|discoveries}/{name}/raw?path= |
Download a raw artifact. |
GET /api/discovery/options · POST /api/discovery/run |
Inspect capabilities and stream a hosted discovery run. |
GET /api/playground/live/options · POST /api/playground/live/run |
Fixed live-playground capabilities and run stream. |
POST /api/auth/token |
Issue an API token (production issuance is gated). |
See Submit to the Hub for request examples.
Catalog collections use explicit summary projections: raw YAML/JSON cards and discovery solution or trajectory bodies are detail-only. Public pages and aggregate responses have short cache windows, so repeated homepage or crawler requests do not repeat the same Supabase scan.
Run it locally¶
bash hub/run_hub.sh
# API: http://127.0.0.1:8000/api
# OpenAPI: http://127.0.0.1:8000/docs
# Health: http://127.0.0.1:8000/healthz
A local instance uses SQLite by default and syncs bundled cards on startup. Production can use
Postgres for metadata and Hugging Face Storage Buckets for uploaded artifacts; see
hub/README.md and hub/DEPLOY.md for deployment configuration.