Keel

Scoring

How the keel is sounded

Scan before you launch. Keel pulls public GitHub metadata, counts commits, looks at the root of the tree, reads the README, and knocks on the homepage. You get a 0–100 score (Docked, Underway, Drifting, Vapor) and a launch gate: go or no-go.

What we do not do

  • We do not read your prompts or any model output.
  • We only read public GitHub plus a homepage GET. No private repos.
  • We do not clone the repo.
  • We are not an uptime monitor. Watch is a daily launch check, not a ping farm.

Watch

Public scan stays free. Watch ($9/mo, 1 hull) and Fleet ($30/mo, 5 hulls) attach to a launched repo + live URL + optional checkout path. A daily cron (07:00 UTC) plus Check now re-runs the launch gate, probes the checkout canary, and looks for public secrets. If launch flips to no-go, the canary fails, or score drops by 10 or more, we POST JSON to your Discord or Slack webhook. Card via Bachs (USD).

P0 blockers

A score can look fine and still be no-go. Any P0 fails the launch.

  • Dead hull — no valid live homepage, or the homepage probe is not ok.
  • Public secrets — root names include .env (and usual cousins), credentials.json, id_rsa, *.pem / *.p12 / *.key, and similar. We also GET contents/.env if it is missing from the listing (404 is clean). We never print file contents.
  • Fake demo — README treats localhost:3000, 127.0.0.1, or “coming soon” as the demo, and the homepage is missing or dead.

Live hull — 30

If the repo sets a homepage that is http(s) and is not GitHub, Gist, GitLab, Notion, Twitter, or X, we request it (8 second timeout, redirects allowed). A 2xx response is 30. A homepage that fails, times out, or is not 2xx is 10. No usable homepage is 0. Dead hull is also a P0.

Recent sea — 20

GitHub pushed_at within 14 days is 20. Fifteen to forty-five days is 10. Older than that is 0.

Depth — 15

We ask the commits API with one commit per page and read the last-page Link header. Twenty or more commits is 15, five or more is 8, two or more is 3, otherwise 0. If GitHub hides the last page we estimate from the page we got and the repo size — we prefer the Link header.

Rigging — 15

Fifteen points if the root contains any of vercel.json, netlify.toml, fly.toml, Dockerfile, docker-compose.yml, wrangler.toml, railway.toml, render.yaml, or app.json. Else 0.

Crew — 10

Ten points if stars are at least 5, or forks are at least 2, or we can see two or more contributors. High watchers or subscribers do not count.

Logbook — 10

Ten points if there is a published release, or CHANGELOG.md at the root, or the description is longer than 40 characters and there are more than three root entries that are not .github. Else 0.

Labels

  • Docked — 80 to 100
  • Underway — 50 to 79
  • Drifting — 25 to 49
  • Vapor — 0 to 24

Back to the scanner