Skip to content

Back to the catalog

github.comrepo

Show HN: Kairos – Open-source risk and fraud decisioning platform

Kairos is an Apache 2.0 TypeScript monorepo from Finic for real-time risk and fraud decisioning, presented as an open alternative to Sardine, Sift, Riskified and SEON. Each decide call returns approve, step_up or block with a score and reasons, drawing on subject history, shared devices, cards and addresses, and session data. A coding agent over MCP runs time-split experiments and publishes the winning workflow; self-hosting still needs a Grayson key from Finic.

TL;DR Self-hostable fraud and account-takeover decision engine that uses an MCP coding agent to tune models and an external LLM-based model for cold start.
Also seen from another angle🧠 AI →
Document

What it is

Kairos is an Apache 2.0 TypeScript monorepo from Finic that decides sign-ups, logins, orders, payments and payouts in real time and stores each decision with its signals. One decide call returns four outcomes, not three: approve, step_up, review or block, plus a riskScore and reasons. The review outcome feeds queues and cases, and case resolutions become labels. SDKs exist for TypeScript (@finic-ai/kairos) and Python (finic-kairos), along with a CLI and an HTTP API.

How it works

Grayson, Finic's decision model, answers plain-language questions you write, such as whether a shipping address looks like a reshipper or an email is throwaway. It returns calibrated probabilities. The README says this lets it work before you have chargeback labels and lets it read unstructured text. Each answer maps to a question you wrote, which is where the reasons come from.

Kairos can also train logistic regression or gradient-boosted trees (XGBoost-compatible) on your own fields. Grayson's answers can be used as features alongside those fields.

The experiment loop runs over MCP. The agent proposes variants: Grayson alone, logistic regression, trees, a stack, or Grayson answers combined with numeric fields. The server then does the following:

  • trains each variant on the oldest labeled data
  • chooses among variants on the next slice
  • tests on the newest slice
  • reports ROC-AUC, PR-AUC, the gain over a baseline with a 95% interval, and precision and recall at your thresholds

The agent then applies the winner as the workflow's next version. The README's example publishes a Shopify order model as v6, with ROC-AUC 0.949 on validation and 0.930 on test. That is the project's own illustration, not an independent benchmark.

Preconditions / Affected

  • Local or self-hosted use needs Node.js 22, pnpm 10 and a Grayson API key from portal.finic.ai. The server starts its own Postgres, so no database setup is required locally.
  • The hosted option is kairos.finic.ai, with a sandbox environment and a secret key.
  • The Shopify app is not self-serve. Contact the Finic team on Discord or at support@finic.ai.
  • Stripe and other providers can send events through inbound webhooks.

What to do

Connect Claude Code to the hosted MCP server. First enable tool groups under Settings › MCP in the console and create a key:

claude mcp add --transport http kairos https://kairos.finic.ai/mcp --header "Authorization: Bearer ksk_…"

Run locally:

pnpm install
cp .env.example .env     # set GRAYSON_API_KEY
pnpm kairos dev          # API on :8787, console on :5273

Team deployment uses docker compose up --build. Back-test on history with:

pnpm kairos import events transactions.csv --type transaction --ts created_at --entity user=customer
pnpm kairos decide withdrawal -e user=user_42 -p usd=900

pnpm test runs all tests with no network access.

Caveats

  • The decision engine's best-known feature depends on a Finic-hosted model, so self-hosting does not remove the external dependency on Grayson.
  • The page gives no latency, pricing, per-decision Grayson cost or comparison against Sardine, Sift, Riskified or SEON. The claim of being an alternative to them is the project's own.
  • Every MCP action is recorded under the key that made it. The page does not say what permissions each tool group grants, so check that before letting an agent publish workflow versions.

Organisations named here

  • Finic
  • Riskified
  • Sardine
  • SEON
  • Sift

Technologies named here

  • Sift
  • Model Context Protocol
  • Claude Code
  • TypeScript
  • PostgreSQL
  • Grayson
  • Kairos
  • Riskified
  • Sardine
  • SEON

Techniques named here

  • Account Takeover
  • Analyst review queue labeling
  • Device, card and address link analysis
  • Logistic regression and gradient-boosted trees
  • Time-ordered split

Concepts named here

  • Cold-start fraud detection
  • Evaluation metrics
  • Fraud decisioning
  • MCP agent tuning