F-Keys\Developers _◻✕
← Back Forward → ↑ Up Home Find Status Log
Address 📁 F-Keys\Developers

F-Keys developer resources

Install or fetch. Nothing to sign up for.

Start here

OpenAPI/openapi.json. Every published document, each with a typed schema naming its columns
For agents/llms.txt. The whole catalog as plain text, including when to reach for each thing
Site map/sitemap.xml
Product docs/Docs.html. Setup, configuration and troubleshooting
Sourcegithub.com/vince-gonzalez
Questions[email protected]

Authentication

There is none, and none is required. No API key, no token, no OAuth flow, no signup. Every request below works from a cold start with no credentials and no headers:

curl https://f-keys.com/gonzalgo/kernel-index/kernel-index.json

This is not a free tier with a paid one behind it. Every F-Keys product runs in your browser or installs on your machine, so nothing calls a server of ours — this site is a folder of static files behind a CDN. There is nothing to authenticate against because there is nothing running.

What that buys you: the packages work offline, they keep working if this site goes away, and nothing you compute is reported back here. What it costs you: there is no endpoint to POST to. If you need one, the source is public.

Rate limits

None. No quota, no 429, and deliberately no RateLimit headers — publishing a limit nobody enforces would tell you to throttle against a number that does not exist.

The CDN already sends ETag and Last-Modified, so use them and a repeat fetch costs you a 304 and no body:

curl -H "If-None-Match: "<etag>"" \
     https://f-keys.com/status/latest.json

Versioning and deprecation

The URLs are permanent; the data carries the version. There is no /v1/ prefix because there is no server to route one.

Every document is served twice, byte for byte: at its bare path, and under /v1. Integrate against whichever suits you.

# the same bytes, and the second carries a version stamp
curl https://f-keys.com/gonzalgo/kernel-index/kernel-index.json
curl -i https://f-keys.com/v1/gonzalgo/kernel-index/kernel-index.json | grep -i x-api-version
Under /v1What is served there keeps the shape it has today. A breaking change appears as /v2 while /v1 keeps serving the old shape. Responses carry X-API-Version: v1, and a version that does not exist answers 404 with the code unknown_version rather than looking like a typo.
Pin to contentEvery document carries a version (the measurement date) and a sha256. Re-measuring republishes the same URL with both changed, so comparing either tells you whether anything moved under you.
Pin to a releaseEach table carries a seriesDoi resolving to an immutable Zenodo deposit. Cite that, not this page.
Breaking changesFields are added, never removed or retyped. A field that has to go is announced in the working log and kept for at least 180 days after that entry.
Deprecation signalA path scheduled for removal is served with the Deprecation and Sunset headers of RFC 8594 and RFC 9745, and listed under x-versioning.deprecated in openapi.json. That list is currently empty.

The command line

Four of them, below. Each is a real CLI rather than a library with a script attached, and does its whole job from a terminal, which is the point: an agent can drive them without an integration.

pip install gonzalgo
gonzalgo trust path              every theorem reaching a sorry
gonzalgo why decl axiom          shortest labelled path to an axiom
gonzalgo trust path --fail-on-trust  exit non-zero in CI
pip install keyj
keyj tab solo.txt -o song.txt    tablature in, note names out
keyj render song.txt out.wav     the sequence, at a tempo
keyj show song.txt               what is in a sequence
pip install moonbeam-miner
moonbeam scan                    find the NerdMiners on this network
moonbeam watch                   their vitals, live
pip install plumhud
plumhud                          the overlay HUD
plumhud --history                what the fleet has been doing

In a pipeline, the gonzalgo-trust-audit Action is three lines of workflow and fails the build when a proof rests on something unfinished.

Packages

Sixteen on PyPI. Every one installs from the public index, with no account and no registration step.

gonzalgopip install gonzalgo. Axiom provenance for Lean 4 and Metamath. Apache-2.0.
mmforgepip install mmforge. Find avoidable axiom dependencies in Metamath, and build the proofs that remove them.
loadbearingpip install loadbearing. What a claim asserts, separated from what its derivation consumed.
axsentpip install axsent. What a formal library assumes, read from Rocq, Agda and Isabelle source, with nothing built.
certivlpip install certivl. Certified interval arithmetic: an enclosure that turns a computed inequality into a proof.
authoreconpip install authorecon. Reconcile published work against every place it lives, for any ORCID, from public sources.
saydopip install saydo. Run a tool against the behavioural contract its author signed, and emit a receipt anyone can verify.
ishiharapip install ishihara. Pseudoisochromatic color-vision plates, reproducible from a seed.
opticquiz-cvdpip install opticquiz-cvd. The color-accessibility engine, the same math as the npm package.
legiblepip install legible. Three build gates: unreadable type, unreadable color, a retired name.
openapi-driftpip install openapi-drift. Has your API drifted from its spec, and can a machine still read it?
changewatchpip install changewatch. A doorbell for your published work. Silent until somebody else acts.
keyjpip install keyj. Tablature to notes, render, and play.
remapwrappip install remapwrap. Build a RemapWrap control surface from a folder of samples or a list of shortcuts.
plumhudpip install plumhud. Miner fleet monitor.
moonbeam-minerpip install moonbeam-miner — NerdMiner discovery and vitals.

Nineteen on npm. Most of them are the OpticQuiz color engine published one name per deficiency, so somebody searching for protanopia finds it; these are the entry points.

opticquiz-cvdnpm i opticquiz-cvd. Color-vision simulation and daltonization.
opticquiz-cvd-mcpnpm i opticquiz-cvd-mcp. The same engine as callable tools for an LLM.
opticquiz-eyenpm i opticquiz-eye. A one-line widget that lets a visitor re-color your site.
keyjockeynpm i keyjockey. Tablature to notes: eight tunings, capo offsets, MIDI and frequency. npm only.
@f-keys/tip-widgetnpm i @f-keys/tip-widget. The TipStreams widget.

Upstream, merged

The measurements feed back into the library they measure. Eight pull requests to metamath/set.mm. The Metamath Proof Explorer's canonical database, reviewed and merged by its own maintainers — each remove an avoidable axiom-of-choice dependency that the tooling on this page located:

#5442Remove the ax-ac dependency from difelsiga. Merged 2026-08-19
#5448Drop the ax-ac dependency from omeiunle. Merged 2026-08-21
#5447Avoid ax-ac in sigaclci directly — merged 2026-08-21
#5445Shorten madefi and drop its ax-ac dependency — merged 2026-08-21
#5443Add fnrndomnum, and prove fnrndomg from it — merged 2026-08-24
#5458Drop the ax-ac dependency from fnct, dmct and ffsrn. Merged 2026-08-26
#5446Drop the ax-ac dependency from disjinfi. Merged 2026-08-30
#5466Add imadomnum, and drop the ax-ac dependency from fimact. Merged 2026-09-01

Two more set.mm pull requests are open in review, along with #203 against metamath/metamath-exe — the C source of the Metamath program itself, rather than the database, and two winget-pkgs package submissions. Open means open — nothing here is claimed merged until its maintainers say so.

The published data

Every published document is described in openapi.json with a typed schema that names its columns, so a function-calling agent knows a table has a library string and a theorems integer before it fetches half a megabyte to find out.

Measurement tablesFifteen tables behind the papers — the Kernel Index, the Dominator Table and the rest. One object each, carrying its version, sha256, license and seriesDoi beside its rows. CC BY 4.0.
Kernel Trust ProfileThe 0.1 schema and fourteen profiles conforming to it, one per library measured.
Status/status/latest.json. The daily snapshot behind the status page. Repository traffic is owner-only and is not in it.
# the whole surface, as an agent would discover it
curl https://f-keys.com/openapi.json | jq '.paths | keys'

# one table, and the columns it declares
curl -s https://f-keys.com/gonzalgo/kernel-index/kernel-index.json | jq '.rows[0]'

# check whether it moved since you last looked
curl -s https://f-keys.com/gonzalgo/kernel-index/kernel-index.json | jq -r '.version, .sha256'

The site itself is machine-readable

Every page here serves Markdown to anything that asks. Send Accept: text/markdown and you get the content without the window around it, per acceptmarkdown.com, with Vary: Accept set so a cache cannot hand you the wrong one.

curl -H "Accept: text/markdown" https://f-keys.com/keyj/

A path that does not exist returns a real 404 in the format you asked for. Anything under a data path — a .json URL, /api, /v1. Errors as JSON even when the client sends no Accept at all, because most of them do not:

curl https://f-keys.com/gonzalgo/no-such-table.json

{
  "error": {
    "code": "not_found",
    "message": "No resource exists at /gonzalgo/no-such-table.json",
    "status": 404,
    "path": "/gonzalgo/no-such-table.json",
    "hints": [ "..." ]
  }
}

The code is stable and machine-readable, the hints name the three places a lost agent can recover from, and the envelope is the one under components.schemas.Error in the specification.

1 item Log  ·  Status F-Keys