Quick start
Run one detection on the website, or run fpd in a terminal without installing anything.
Detect on the website
Open the detection page
Open lm.ikale.io and select a detection mode:
| Mode | Steps | Use case |
|---|---|---|
| Manual | Copy the three challenges that the page generates, send each one to the target model, then paste each answer back into the page | You have a chat interface but no API key |
| API | Enter the Base URL, API key, model name, and protocol. The page samples automatically | You want to check an API channel |
Fill in the API configuration
API mode needs a Base URL, an API key, and a model name. The protocol can be Chat Completions, Responses, or Messages. The configuration and the key are saved only in the current browser. The profile menu can store several profiles and can also export them to files. An exported file contains your API key in plain text, so do not send it to anyone or upload it to cloud storage.
The tokenizer probe is off by default. If you turn on “Tokenizer probe” in the API configuration, the page sends about 12 more short requests (at most 22) while it samples. These requests identify the upstream tokenizer (the rule a model uses to cut text into tokens). The probe result shows separately and is reference only: the ranking and the confidence do not use it, and the result does not wait for it. APIs that bill per request bill these requests.
Start and read the results
Each answer needs at least 80 valid integers and at least 55% of the requested count. If all three answers are valid, the page shows the ranking and a confidence value for each candidate. If only one or two are valid, the page shows the ranking only. For what the results mean, see Website.
Where requests go
"Connection" at the bottom of the API configuration defaults to This site's proxy: requests go through this site's /api/proxy. You can also pick Auto: before the requests start, the page checks once whether the API allows web pages to call it directly (the browser's cross-origin restriction, CORS). If it does, the browser calls the API directly; otherwise requests go through this site's proxy. Or always use Direct or Own Worker. See Connection.
Run in a terminal
The command line tool fpd is published as the npm package lmfpd. You do not need to install it or check out the repository:
npx lmfpd@latest -b https://api.example.com/v1 -k sk-xxx -m gpt-6-astraThe connection settings can also come from the environment variables BASE_URL, API_KEY, and MODEL. Every subcommand supports --help. For all options, see Command line.
Develop locally
The repository is a Bun workspace. It contains the website, the command line tool, the shared algorithms, the data, and these docs:
bun install
bun run dev # Sync data and start the web dev server (includes /api/proxy)
bun run dev:docs # Start the docs dev server
bun run typecheck # Type-check the TypeScript code of the website, CLI, and docs
bun run build # Build the website and the docs into web/dist
bun run build:cli # Pack the npm CLI into dist/fpd
bun run fpd --help # Run the CLI from the repository
bun run dev:worker # Run the proxy Worker locally at 127.0.0.1:8787For deployment steps, see Deployment. For what each directory does, see Project structure.
Last updated on