Price an outcome. An email address gets you a key.

Tell Margin what a merged PR or a resolved ticket is worth to you, and it reports the return on the outcomes you priced, not the token bill. Supply no number and you read cost‑per‑outcome, labelled as one. An email address gets you a real ingest key now: no account to create, no password to pick.

What is built, and what is not.

  • The meter: cost, tokens and outcome on every callbuilt · live in prod
  • The eight eval adapters, each tested in sdk/built · tested
  • Published npm and PyPI packages carrying every adapternpm trails the repo
  • Self‑serve ingest keys, issued to your screenbuilt · live in prod
  • Sign‑up by email: the sign‑in link creates your accountbuilt · live in prod
  • Value‑per‑outcome, once you supply an outcome’s worthaccepted · none supplied yet

The published package trails this build: npm margin-meter is 0.2.0 (repo 0.3.0; meters calls, no eval adapters). That is what a plain npm install gets. Setup here works on it. Registries read 2026-09-23.

Two plugs in. Two numbers out.

Three steps to your first number.

  1. 01 · a key · instant

    Get an ingest key.

    The key is scoped to a fresh project, and the same address gets you a sign‑in link to read your own numbers. Prefer to talk first? Email the founder and a key comes back the same day.

    A real key, scoped to a fresh project, issued to your screen. No password and nothing to create — for a design-partner project, email the founder instead.

    Or email the founder →
    the email you send · prefilled
    to
    subh@trymargin.io
    subject
    Get set up on Margin
    body
    I'd like a design-partner project and an ingest key. Here is the stack my agents run on:
    What comes back: a project, an ingest key and the current SDK build. A person replies, usually the same day.
  2. 02 · your AI in · three lines

    Wrap your calls. Three lines.

    Point the meter at the OpenAI, Anthropic or Gemini SDK your agents already call. The key lives in an environment variable; nothing else in your code moves.

    // Python: pip install margin-meter
    $ npm install margin-meter
    $ export MARGIN_INGEST_URL=https://trymargin.io
    $ export MARGIN_INGEST_KEY=mgk_…
    
    import OpenAI from "openai";
    import { MarginMeter, instrumentOpenAI }
      from "margin-meter";
    
    const openai = new OpenAI();
    const meter = new MarginMeter();
    instrumentOpenAI(openai, meter, {
      workflowId: "support-triage",
    });
    // every call is now metered
  3. 03 · your evals in · one adapter

    Point your evals in.

    An adapter reads the results your harness already produces; pass or fail is the denominator. Tag an outcome with the dollars it was worth and the number becomes value‑per‑outcome, every outcome counted once and unweighted. A value you did not supply is never invented.

    the ways in · each tested in sdk/
    • promptfoopromptfoo.py · promptfoo.ts
    • Braintrustbraintrust.py · braintrust.ts
    • LangSmithlangsmith.py · langsmith.ts
    • Ragasragas.py
    • deepevaldeepeval.py
    • Langfuselangfuse.py
    • pytestpytest_plugin.py
    • vitest / jestvitest.ts
    No harness of ours. A skipped test is never counted as a verdict.

A key in seconds, your first metered call the same day.

You get the founder, not a sales rep. Nothing is gated, and no drip sequence waits on the other side.