Skip to content

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, or rejected review 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:

trajectory/evolutionary_trajectory.jsonl    # candidates and evolutionary behavior events

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.